티스토리 뷰
메모리 (주기억장치) 관리 (1/3) - Backgrounds
★ 메모리(기억장치)의 종류
★ 메모리(기억장치) 계층구조
- Block
- 보조기억장치와 주기억장치 사이의 데이터 전송 단위
- Size : 1 ~ 4KB
- Word
- 주기억장치와 레지스터 사이의 데이터 전송 단위
- Size : 16 ~ 64 bits
★ Address Binding
- 프로그램의 논리 주소를 실제 메모리의 물리주소로 매핑(mapping)하는 작업
- Binding 시점에 따른 구분
- Compile time binding
- Load time binding
- Run time binding
- User Program Processing Steps
- Complie time binding
- 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우
- 위치가 변하지 않음
- 프로그램 전체가 메모리에 올라가야 함
- 프로세스가 메모리에 적재될 위치를 컴파일러가 알 수 있는 경우
- Load time binding
- 메모리 적재 위치를 컴파일 시점에서 모르면, 대체 가능한 상대 주소를 생성
- 적재 시점(load time)에 시작 주소를 반영하여 사용자 코드 상의 주소를 재설정
- 프로그램 전체가 메모리에 올라가야 함
- Run-time binding
- Address binding을 수행시간까지 연기
- 프로세스가 수행 도중 다른 메모리 위치로 이동할 수 있음
- HW의 도움이 필요
- MMU : Memory Management Unit
- 대부분의 OS가 사용
- Address binding을 수행시간까지 연기
★ Dynamic Loading
- 모든 루틴을 교체 가능한 형태로 디스크에 저장
- 실제 호출 전까지는 루틴을 적재하지 않음
- 메인 프로그램만 메모리에 적재하여 수행
- 루틴의 호출 시점에 address binding 수행
- 장점
- 메모리 공간의 효율적 사용
★ Swapping
- 프로세서 할당이 끝나고 수행 완료된 프로세스는 swap-device로 보내고 (Swap-out)
- 새롭게 시작하는 프로세스는 메모리에 적재 (Swap-in)
메모리 (주기억장치) 관리 (2/3) - Fixed Partition Multiprogramming
★ Memory Allocation
- Continuous Memory Allocation (연속할당)
- Uni-programming
- Multi-programming
- Fixed partition (FPM)
- Variable partition (VPM)
- Non-continuous Memory Allocation (비연속할당)
- Next chapter
★ Continuous Memory Allocation
- 프로세스(context)를 하나의 연속된 메모리 공간에 할당하는 정책
- 프로그램, 데이터, 스택 등
- 메모리 구성 정책
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- Multiprogramming degree
- 각 프로세스에게 할당되는 메모리 공간 크기
- 메모리 분할 방법
- 메모리에 동시에 올라갈 수 있는 프로세스 수
- Uni-programming
- Multiprogramming degree = 1
- Multi-programming
- Fixed(static) partition multi-programming (FPM)
- 고정 분할
- Variable(dynamic) partition multi-programming (VPM)
- 가변 분할
- Fixed(static) partition multi-programming (FPM)
★ Uni-Programming
- 하나의 프로세스만 메모리 상에 존재
- 가장 간단한 메모리 관리 기법
- 문제점
- 프로그램의 크기 > 메모리 크기
- 해결법
- Overlay structure
- 메모리에 현재 필요한 영역만 적재
- 사용자가 프로그램의 흐름 및 자료구조를 모두 알고 있어야 함
- Overlay structure
- 문제점
- 커널(Kernel) 보호
- 해결방법
- 경계 레지스터 (boundary register) 사용
- 문제점
- Low system resource utilization
- Low system performance
- 해결법
- Multi-programming
★ Fixed Partition Multiprogramming
- 메모리 공간을 고정된 크기로 분할
- 미리 분할되어 있음
- 각 프로세스는 하나의 partition(분할)에 적재
- Process : Partition = 1 : 1
- Partition의 수 = K
- Multiprogramming degree = K
- 자료구조의 예
- 커널 및 사용자 영역 보호
★ Fragmentation (단편화)
- Internal fragmentation
- 내부 단편화
- Partition 크기 > Process 크기
- 메모리가 낭비 됨
- External fragmentation
- 외부 단편화
- (남은 메모리 크기 > Process 크기)지만, 연속된 공간이 아님
- 메모리가 낭비 됨
- 요약
- 고정된 크기로 메모리 미리 분할
- 메모리 관리가 간편함
- Low overhead
- 시스템 자원이 낭비 될 수 있음
- Internal/external fragmentation
메모리 (주기억장치) 관리 (3/3) - Variable Partition Multi-programming
★ Variable Partiton Multiprogramming
- 초기에는 전체가 하나의 영역
- 프로세스를 처리하는 과정에서 메모리 공간이 동적으로 분할
- No internal fragmentation
- VPM Example
- Memory space : 120 MB
- 어디에 배치 할 것인가?
★ 배치 전략 (Placement strategies)
- First-fit (최초 적합)
- 충분한 크기를 가진 첫 번째 partition을 선택
- Simple and low overhead
- 공간 활용률이 떨어질 수 있음
- Best-fit (최적 적합)
- Process가 들어갈 수 있는 partition 중 가장 작은 곳 선택
- 탐색시간이 오래 걸림 → overhead가 큼
- 모든 partition을 살펴봐야 함
- 크기가 큰 partition을 유지할 수 있음
- 작은 크기의 partition이 많이 발생
- 활용하기 너무 작은
- Worst-fit (최악 적합)
- Process가 들어갈 수 있는 partition 중 가장 큰 곳 선택
- 탐색시간이 오래 걸림
- 모든 partition을 살펴봐야 함
- 작은 크기의 partition 발생을 줄일 수 있음
- 큰 크기의 partition 확보가 어려움
- 큰 프로세스에게 필요한
- Next-fit (순차 최초 적합)
- 최초 적합 전략과 유사
- State table에서 마지막으로 탐색한 위치부터 탐색
- 메모리 영역의 사용 빈도 균등화
- Low overhead
- 어디에 배치할 것인가?
- External fragmentation issue
★ Coalescing holes (공간 통합)
- 인접한 빈 영역을 하나의 partition으로 통합
- Process가 memory를 release하고 나가면 수행
- Low overhead
★ Storage Compaction (메모리 압축)
- 모든 빈 공간을 하나로 통합
- 프로세스 처리에 필요한 적재 공간 확보가 필요할 때 수행
- High overhead
- 모든 Process 재배치 (Process 중지)
- 많은 시스템 자원을 소비
★ 요약 : Continuous Memory Allocation
- Uni-programming
- Simple
- Fragmentation problem
- Fixed partition multi-programming (FPM)
- Variable partition multi-programming (VPM)
- Placement strategies
- First-fit, Best-fit, Worst-fit, Next-fit
- External fragmentation issue
- Coalescing holes
- Storage compaction
- Placement strategies
'CS > 운영체제' 카테고리의 다른 글
운영체제 - Virtual Memory Management (가상 메모리 관리) (0) | 2024.06.27 |
---|---|
운영체제 - Virtual Memory (가상 메모리) (0) | 2024.06.26 |
운영체제 - Deadlock(교착 상태) (0) | 2024.05.05 |
운영체제 - Process Synchronization and Mutual Exclusion (0) | 2024.03.20 |
운영체제 - Process Scheduling (0) | 2024.03.15 |