이번 시간에는 메모리 관리 간 OS 가 관리하는 가상 메모리 관리에 대해 알아보자.
메모리 관리의 목표는 응용 프로그램의 프로세스의 요구 데이터들을 보다 효율적으로 메모리에 올려 사용하는 것이었다. 그리고 현재에는 순서에 따지지 않고 가용 가능한 빈 공간에 데이터를 넣을 수 있는 Paging 과 프로세스 간 쉽게 데이터를 공유할 수 있는 Segmentation 을 같이 사용한다.
그렇지만 위의 방법은 메모리 물리 주소 관리 중점이며 이는 OS 영역이 아닌 HW 영역이다.
그래서 오늘은 OS 영역인 가상 메모리 관리 방식을 알아보려고 한다.
가상 메모리는 실제 물리 메모리의 물리 주소를 가르키는 논리 주소가 저장되는 공간으로 이 논리 주소가 Page(Segment 는 Page 의 윗 단계) 이고 Page 는 물리 주소의 Frame 과 바인딩 된다. 이때 OS 는 가상 메모리에 올라오는 Page 를 관리하는데 이를 Demanding Paging 이라고 한다.
Demanding Paging 는 프로세스 실행 간 실제로 필요한 Page 만 가상 메모리에 올리는 것으로 목표는 Page Fault 를 줄이는 것이다. Page Fault 는 실제 필요로 하는 Page 가 없는 것으로 다음과 같은 상황이다.

Page Fault 가 발생하면 CPU 는 프로세스에게서 OS 로 자원이 넘어가고 다시 Page Table 에 필요한 Page 의 정보를 Disk 에서 올려야한다. 이때 Process 는 Block 상태로 대기하게 되고 결국 프로세스의 대기 시간이 증가하게 된다. Page Fault 는 특히 메모리에 너무 많은 프로세스가 올라왔을때 각 프로세스 별로 할당 가능한 Page 가 프로세스를 실행 가능한 정도가 안될경우 자주 발생하며 이런 상황을 Thrashing 이라고 한다.
이때 OS 는 최대한 Thrashing 이 발생 가능성을 낮추기 위해 여러 알고리즘 정책을 활용해 사용하지 않을 Page 를 가상 메모리에서 내린다. 이때 Page 를 내리는 기준으로 LRU(Least Recently Used), LFU(Least Frequently Used), FIFO 외에도 Clock Algorithm(환형 자료형에서 1번의 사이클 동안 사용 빈도 확인), Work Set Model(프로세스가 Window Size 내에 Page 를 주었을때 실행가능한지 확인) 등 여러 방법을 활용한다.
결국 오늘날 우리가 사용하는 컴퓨터에는 사용자가 실행시킨 프로그램을 OS 위에서 동작시키기 위해 OS, HW 가 보다 효율적으로 한정된 자원을 할당해준다고 볼 수 있다.
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
| 디스크 관리 (0) | 2023.02.10 |
|---|---|
| 파일 시스템 (0) | 2023.02.09 |
| 메모리 관리 - Segmentation (0) | 2023.02.06 |
| 메모리 관리 - Paging (0) | 2023.02.05 |
| 메모리 관리 (0) | 2023.01.31 |