Allocation of Frames
여러개의 프로세스에게 어떻게 page frame을 할당할 것인가?
SW 측면에서 loop 내의 page는 한꺼번에 allocate 되는 것이 유리하다.
그렇지 않은 경우 매 loop 마다 page fault가 발생할 수 있다.
Fixed Allocation
- Equal allocation : 각 프로세스에게 동일한 개수의 frame을 할당하는 방식
- Proportional allocation : 각 프로세스의 크기에 비례하여 frame을 할당하는 방식
Priority Allocation
: 프로세스의 중요도를 기반으로 frame을 할당하는 방식
I/O 를 감소시켜 waiting 상태의 시간을 줄여 실행이 빨리 끝날 수 있다.
page fault가 발생하는 경우 낮은 우선순위 프로세스의 frame을 선택하여 교체하도록 한다.
*Global vs Local Replacement
Global Replacement : replacement frame을 전체 frame에서 선택하도록 한다. 하나의 프로세스는 다른 프로세스의 frame을 가져와 사용할 수 있다. 동적으로 관리할 수 있고 circular queue로 관리하는 경우 전체 시스템으로 하나로 관리 할 수 있다.
Local replacement : 각 프로세스는 해당 프로세스 내에서 frame을 선택할 수 있다.
Thrashing
- 프로세스가 충분한 page를 갖지 못한다면 page fault rate가 높아지고 이는 CPU utilization을 떨어트린다.
- 프로세스의 잦은 page swapping으로 CPU 성능이 떨어지는 상태

Locality
프로그램의 메모리는 임의 시간 내에 프로그램의 일부분을 집중적으로 참조하는 고도의 지역성을 갖는다.
시간 지역성 : 현재 참조된 메모리가 가까운 미래에도 참조될 가능성이 높음 (loop, subroutine, stack)
공간 지역성 : 하나의 메모리가 참조되면 주변의 메모리가 계속 참조될 가능성이 높음(Array Traversal, 명령의 순차 실행)
Locality를 어떻게 계산할 것인가?
Working-Set Model
- 현재 시점의 지역성을 확인하기 위한 목적으로 사용되는 working-set window를 사용
- working-set window가 너무 작은 경우 지역성을 반영하지 못한다.
- 각 프로세스의 working-set size의 합은 사용가능한 전체 frame의 크기보다 크면 Thrashing 상태가 된다.
이때 , 프로세스는 suspend 되도록 한다.
- 매번 working-set을 계산하는 것은 cost가 많이 필요하다.
Page-Fault Frequency Scheme
적절한 Page fault의 상한선,하한선 기준을 정해 벗어나는 경우 조치하도록 한다.
상한선 보다 높아지는 경우 frame을 더 할당해주며 하한선 보다 낮아지는 경우 frame을 회수한다.

-> Working set 방식은 page 참조 시마다 페이지 집합을 수정하고 PFF 방식은 page fault 발생 시에만 페이지 집합을 수정하여 오버헤드를 상대적으로 줄인다.
Virtual Memory 의 장점 (프로세스 생성 시)
Copy-on-Write
부모와 자식 프로세스가 처음에는 같은 page를 공유하도록 하고 write를 하는 순간 page를 복사하고 복사한 page에 write 작업을 수행
기본적으로는 page를 공유하도록 하고 write 할 때 copy 하여 수행하도록 하여 메모리 사용 효율성을 높일 수 있다.


Memory-Mapped Files
프로세스의 가상 공간 중 일부를 디스크에 있는 파일의 블록에 매핑하는 방식이다.
기존의 system call 의 오버헤드를 줄일 수 있다. (I/O를 줄일 수 있다.)
즉, 디스크 파일의 일부와 매핑하여 file system을 통한 과정을 거치지 않아 속도가 빠르고 I/O 발생으로 인한 오버헤드가 줄어든다.

Prepaging
일반적으로 페이징 기법을 사용할 때 초기에는 page fault가 반드시 발생한다.
이러한 page fault를 줄이기 위해 Prepaging으로 미리 올려둬서 page fault 를 줄일 수 있다.
Page size
- Page size가 과도하게 큰 경우 Internal fragmentation이 발생 할 수 있다.
- Page size가 작은 경우 Page table size가 커질 수 있다.
- Page size가 커지면 locality를 정확히 구분하기 어렵다.
I/O Interlock
- page가 memory에서 lock 상태가 되어야 하는 경우가 필요하다.
예를들어 디스크에서 외부저장장치로의 이동을 위해 buffer에 있는 경우 page 교체가 일어나면 정상적으로 파일이동이 불가하다.
이러한 경우 page가 교체되지 않도록 보호해줄 필요가 있다.
'Development > OS(Operating System)' 카테고리의 다른 글
Virtual Memory(1) (0) | 2023.05.20 |
---|---|
Deadlock (0) | 2023.05.09 |
Process Synchronization(2) (0) | 2023.04.08 |
Computer System Overview2 (0) | 2023.04.01 |
Process Synchronization(1) (0) | 2023.03.30 |