여러 개의 프로세스들에 제한된 가용 메모리를 어떻게 할당 해야 할까?
이번에는 프레임 할당 알고리즘에 대해 알아보자.
[할당 알고리즘]
1 ) 균등 할당 : 똑같은 크기 만큼 할당 받는 방법
2 ) 비례 할당 : 프로세스 크기에 따라 할당 받는 방법
EX ) s1 = 10, s2 = 127이면 s1에는 10 / 137만큼, s2에는 127 / 137만큼 할당함
3 ) 우선순위 할당 : 우선순위를 고려하여 할당 하는 방법
-> 높은 우선순위의 프레임이 낮은 우선순위 프레임 뺏을 수 있음
4 ) Global vs Local Allocation
- Global replacement : 전체 프로세스를 고려하여 희생양을 정하는 방법
-> 실행 시간의 변화가 큼
- Local replacement : 프레임 중에서 희생양 선택하는 방법
-> 실행 시간의 변화는 작지만, 성능이 좀 떨어짐
5 ) NUMA (Non-Uniform Memory Access)
- 여러개의 CPU와 메모리를 가진 구조에서 P1의 CPU는 자신의 메모리에 빠르게 접근할 수 있지만 P2, P3 등 다른 프로세스들에게 접근하는데는 시간이 오래 걸린다.
-> 따라서 페이징 교체를 할 때 NUMA를 고려해서 페이징 교체 알고리즘을 작성해야 한다.
-> Solaris에서는 lgroups를 만들어 이를 해결한다.
- 임계값을 둬서 그 이하의 값을 갖는 cpu와 메모리를 묶음.
운영체제(OS)/공룡책