-
[OS] - Paging / SegmentationCS/면접준비 2022. 9. 30. 12:37
Paging , Segmentation
Multi Programming에서 여러 Process를 수용하기 위해 Main Memory를 분할하여 Memory 관리
관리 방식
1. Continuous Memory 관리
Program 전체가 하나의 커다란 공간에 연속적으로 할당
- 고정 분할 : Internal fragmentation
- 동적 분할 : External fragmentation
2. Non Continuous Memory 관리
Program 일부가 서로 다른 Address 공간에 할당
- Page = Process를 고정 사이즈로 분할
- Frame = Page와 동일한 크기로 Main Memory 분할
- Fragmentation = Hole Space , data가 여러 조각으로 나누어지는 현상
- Segment = 서로 다른 크기를 가진 논리적 Block 연속적 공간에 배치
Virtual Memory
Paging
- Demanding Paging ( Process Page 전체를 Main Memory에 Load하여 사용하지 않는다. 당장 필요한 Page만 Load )
- Internal fragmenation 발생
- 복잡한 Memory 관리로 Overhead 발생
Segmentation
- Process Segment 전체를 Main Memory에 Load하여 사용하지 않는다.
- 필요한 Segment는 자동으로 Load
- External fragmenation 발생
- 복잡한 Memory 관리로 Overhead 발생
메모리 과할당( Memory over allocating )
실제 메모리의 사이즈보다 더 큰 사이즈의 메모리를 프로세스에 할당한 상황
- 현재 Main Memory는 20개의 Frame으로 사용한다고 해보자.
- 4개의 Process가 각각 5개의 Page를 올려 사용중이였다.
- 이 때 새로운 Program이 실행되면서 Main Memory에 자신의 Page를 올리려고 한다.
- 이 때 Virtual Memory는 사용자에게 이를 인식시키지 못하게 동작시킨다.
- Main Memory에 남는 공간이 없는데 어떻게 해야할까?
기본적인 Page 교체 방식은 Memory 내에서 교체된 Victim Page를 선택하여 Swap-out하고 사용할 페이지를 Disk로부터 Swap-in 한다.Swap Out,In은 Disk에 2번 접근하게 되어 매우 느리다.
Modify-bit
해당 Page가 최근에 변경된적이 있다면 1 , 아니면 0으로 설정
Swap-Out을 하면서 해당 Page가 0이라면(최근에 사용 X) 그대로 버리고, 1이라면 Disk에 저장한다.
이러한 방법을 통해 연산을 줄인다.
Page Replacement는 적게 일어날 수록 좋다 -> Swap 이 적어져 Disk I/O가 줄어든다.
'CS > 면접준비' 카테고리의 다른 글
[OS] - Memory (1) 2022.09.30 [OS] - Paging Algorithm (0) 2022.09.30 [OS] - Semaphore / Mutex (0) 2022.09.30 [OS] - DeadLock (0) 2022.09.29 [OS] - CPU Scheduling (0) 2022.09.29