일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- concurrency
- 기아 상태
- 프로세스
- 컴퓨터구조
- 스케줄링
- 동기화
- mips
- 부동소수점
- 페이징
- 교착상태
- 운영체제
- 인터럽트
- 단편화
- BOJ
- 우선순위
- ALU
- PYTHON
- 세마포어
- Oracle
- 가상 메모리
- 스레드
- 추상화
- 페이지 부재율
- Algorithm
- 페이지 대치
- fork()
- 트랩
- mutex
- 알고리즘
- 백준
- Today
- Total
봉황대 in CS
[Chapter 8. 메모리 관리 전략] 분할 방법, 페이징, 세그먼테이션 요악 본문
[Chapter 8. 메모리 관리 전략] 분할 방법, 페이징, 세그먼테이션 요악
등 긁는 봉황대 2022. 8. 3. 00:04* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.
결속 방식에 따른 메모리 경영 기법의 분류
분류 | 공간 크기 | 사상 단위 | 적재 단위 |
분할 방법 | 논리 = 물리 | 전체 프로그램 | 전체 프로그램 |
페이징 / 세그먼테이션 | 논리 = 물리 | 페이지 (세그먼트 기법은 가변 크기) |
전체 프로그램 |
가상 메모리 | 논리 > 물리 | 페이지 | 프로그램 일부 적재 |
다중 프로그램된 운영체제의 메모리 관리 정책들 중 어느 것을 사용할 것인가는 하드웨어에 달려있다.
CPU가 생성하는 모든 주소(논리 주소)에 대해서는 먼저 오류가 검사 되어야 하고, 물리 주소로 매핑되어야 한다.
이 작업은 소프트웨어로는 효율적으로 실행될 수 없기 때문에 하드웨어가 이 기능을 제공해주어야 한다.
아래부터는 메모리 관리 정책들을 비교하는데에 중요한 관점들이다.
하드웨어 지원
분할 방법에 대해서는 기준 레지스터와 상한 레지스터 쌍만으로도 충분하지만,
페이징과 세그먼테이션은 매핑 테이블(mapping table)이 필요하다.
성능
구조가 복잡해질수록 논리 주소를 실제 물리 주소로 변환시키는데 소요되는 시간은 늘어난다.
페이징과 세그먼테이션의 매핑 테이블이 주 메모리에서만 가동되어야 한다면
프로그램의 메모리 액세스 속도는 상당히 느려진다.
따라서 TLB 연관 레지스터의 집합을 제공한다면 성능은 훨씬 향상될 수 있다.
단편화
다중 프로그램된 시스템은 다중 프로그래밍의 정도가 높아야 좋은 성능을 보이는데,
이를 위해서는 메모리의 낭비나 단편화를 줄여야 한다.
분할 방법이나 세그먼테이션과 같이 가변적 할당 단위를 가진 시스템은 외부 단편화의 문제를 가지고 있고,
페이징과 같이 고정된 크기의 할당 단위를 가진 시스템은 내부 단편화의 문제를 가지고 있다.
재배치(relocation)
외부 단편화 문제에 대한 하나의 해결책으로 압축(compaction)이 있었다.
압축은 프로그램이 눈치채지 못하는 동안 프로그램들의 위치를 한쪽 끝으로 옮기는 것이다.
이를 위해서는 프로그램의 논리 주소가 실행 시에 동적으로 재배치될 수 있어야 한다.
주소가 적재 시간(load time)에 재배치되고 결정되어 버린다면 메모리를 압축할 수 없다.
스와핑(swapping)
운영체제는 프로세스를 주 메모리에서 예비 저장장치로, 다시 나중에 예비 저장장치에서 주 메모리로 이동시킨다.
스와핑 기법을 통해서 더 많은 프로그램을 실행시킬 수 있다.
공유(sharing)
코드와 데이터들을 프로세스 간에 공유하는 것을 통해 다중 프로그래밍의 정도(multiprogramming degree)를 증가시킬 수 있다.
공유는 페이징이나 세그먼테이션 기법을 필요로 한다.
공유되는 프로그램이나 데이터는 신중하게 설계되어야만 한다.
보호(protection)
페이지나 세그먼트는 각 부분들이 실행 전용(execute-only)인지, 읽기 전용(read-only)인지, 읽기/쓰기(read/write)가 가능한지 등등 비트들을 통해 선언이 가능하다.
이런 제한들을 사용하면 코드나 데이터의 공유에 유용하고,
각종 오류로부터 실행 시간으로 사전에 점검하는 것을 통해 시스템과 사용자의 정보를 보호할 수 있다.
'Computer Science & Engineering > Operating System' 카테고리의 다른 글
[Chapter 9. 가상 메모리] 페이지 대치 알고리즘 (최적 대치, FIFO, LRU) (0) | 2022.08.04 |
---|---|
[Chapter 9. 가상 메모리] 가상 메모리 (0) | 2022.08.03 |
[Chapter 8. 메모리 관리 전략] 세그먼테이션 (0) | 2022.08.02 |
[Chapter 8. 메모리 관리 전략] 페이징 (0) | 2022.08.01 |
[Chapter 8. 메모리 관리 전략] 분할 방법 (0) | 2022.07.31 |