Chapter8 메모리(주기억장치) 관리
1. 메모리 관련 용어
- 메모리 종류
- 계층구조
-
- Block : 보조기억장치와 주기억장치 사이의 데이터 전송 단위(Size : 1 ~ 4KB)
- Word : 주기억장치와 레지스터 사이의 데이터 전송 단위(Size : 16 ~ 64bits)
-
1.1 Address Binding
- 프로그램의 논리 주소를 실제 메모리의 물리 주소로 매핑하는 작업
- Binding 시점에 따라 구별 됨
- Compile time binding
- 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우(위치 변화 X)
- 프로그램 전체가 메모리에 올라감
- Load time binding
- 컴파일 시점에서 메모리의 적재 위치를 모르면 상대 주소를 생성하여 적재 시점에 주소를 재설정
- 프로그램 전체가 메모리에 올라감
- Run time binding
- Address binding을 프로그램 수행시간까지 연기
- HW의 도움이 필요(MMU)
- 대부분의 OS가 사용
- Compile time binding
1.2 Dynamic Loading
- 모든 루틴을 교체 가능한 형태로 디스크에 저장
- 메인 프로그램만 메모리에 적재하고 루틴의 호출 시점에 address binding을 수행
- 메모리 공간을 효율적으로 사용 가능
1.3 Swapping
- Swap-in : 새롭게 시작하는 프로세스는 메모리에 적재(
suspended ready
→ready
) - Swap-out : 수행 완료 된 프로세스는 swap-device로 보냄(
ready
→supended ready
)
2. 메모리 할당(Memory Allocation)
2.1 Continuous Memory Allocation(연속할당)
- 프로세스를 하나의 연속된 메모리 공간에 할당하는 정책
2.1.1 Uni-programming
- 하나의 프로세스만 메모리 상에 존재
- 가장 간단한 메모리 관리 기법
- 문제점
- 프로그램의 크기 > 메모리 크기 일 때, 발생
- 해결법 : Overlay structure
- 메모리를 나누어서 현재 필요한 영역만 적재하고, 필요할 때 바꾼다.
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함
- 커널(Kernal) 보호 : 프로그램 메모리가 커널 영역을 침범할 수 있음
- 해결법 : 경계 레지스터(Boundary register) 사용
- Low system resource utilization, performace
- 해결법 : Multi-programming
2.1.2 Multi-programming
1) Fixed Partition Multipprogramming
- 메모리 공간을 고정된 크기로 분할
- 각 프로세스는 하나의 분할된 공간(partition)에 적재
- Partitiond의 수 = multiprogramming degree
- Boundary address가 분할된 공간 사이 마다 들어가서 커널 및 사용자 영역을 보호 함
- 특징
- 메모리 관리 간편
- 시스템 자원이 낭비 됨
- Internal/external fragmentation
※ Fragmentation
- Internal fragmentation
- 내부 단편화
- Partition의 크기 > Process의 크기 → 할당X
- 메모리 낭비
- External fragmentation
- 외부 단편화
- 남은 메모리의 크기 > Process의 크기 이지만, 연속된 공간이 아님 → 할당X
- 메모리 낭비
2) Variable Partition Multiprogramming
- 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할 되게 함.
- 특징
- No internal fragmentation
2.1.3 Place strategies(배치 전략)
1) First-fit(최초 적합)
- 충분한 크기를 가진 첫 번째 partition을 선택
- 구현이 간단하고 Low overhead
- 공간활용 ↓
2) Best-fit(최적 적합)
- Process가 들어갈 수 있는 partition 중 가장 작은 곳 선택
- 탐색 시간이 오래 걸림
- 크기가 큰 partition 유지 가능
- 작은 크기의 partition이 많이 발생
3) Worst-fit(최악 적합)
- Process가 들어갈 수 있는 partition 중 가장 큰 곳 선택
- 탐색시간이 오래 걸림
- 작은 크기의 partition 발생을 줄일 수 있음
- 큰 크기의 partition의 확보가 어려움
4) Next-fit(순차 최초 적합)
- 최초 적합과 유사하지만 마지막으로 탐색한 위치부터 탐색을 함
- 메모리 영역의 사용을 균등화 가능
- Low overhead
2.1.4 External fragmentation solution
1) Coalescing holes(공간 통합)
- 인접한 빈 영역을 하나의 partition으로 통합
- process가 memory를 release하고 나가면 수행
- low overhead
2) Storage Compaction(메모리 압축)
- 모든 빈 공간을 하나로 통합
- 특징
- High overhead
- 모든 process를 재배치 한다는 것은 process들을 일시적으로 중지 시킨다는 것을 의미 → 많은 시스템 자원을 소비
- 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
- 모든 process를 재배치 한다는 것은 process들을 일시적으로 중지 시킨다는 것을 의미 → 많은 시스템 자원을 소비
- High overhead
'CS > [OS]' 카테고리의 다른 글
Chapter10 가상메모리 관리 (0) | 2021.12.30 |
---|---|
Chapter9 가상메모리 (0) | 2021.12.28 |
Chapter7 교착상태(Deadlock Resolution) (0) | 2021.12.21 |
Chapter6 프로세스 동기화 & 상호배제 (0) | 2021.12.16 |
Chapter5 프로세스 스케줄링 (0) | 2021.12.14 |