가상 메모리 관리 메모리 관리 방법 ( 1/ 2)

2022. 9. 30. 21:15컴퓨터사이언스(CS)

728x90

저번에는 가상 메모리와 메모리가 무엇 인지에 대해서 글을 작성해보았습니다 그 후 메모리의 관리기법 중아 주 큰 방법론적인 것만 적었는데요.

 

오늘은 가장 중요한 가상 메모리 관리 - 교체 기법 ( 고정 할당 )을 알아보려고 합니다 만약 page 로 나뉜 프로세스 가 고정된 크기에 pageframe으로 fix 됐을 때 메모리가 만약 페이지 프레임이 꽉 찼다면 운영체제는 무슨 기준으로 나뉜 프로세스를 올리고 내릴까요?  그것에 대해서 간단히 소개해보겠습니다

 

Min Algorithm  ( 최소 알고리즘 )  ( OPT )

Minimize page fault frequency 알고리즘 을 줄일 만일인데요 제가 저번에 말씀드렸던 Page fault 가 생각나시나요? page falut는 많으면 많을수록 안 좋은 연산 즉 비싼 연산인데요 자주 문맥 변환 (컨텍트 스위칭) 자주 일어나는 연산입니다 그것을 최소하 하는 알고리즘인데요 사실 Min Algorithm 연산은 엄청난 문제점들이 있습니다 

위에 알고리즘은 예측을 하여 알고리즘을 측정하는 알고리즘 인데요 1번  / 2번 / 3번 / 4번이란 이름을 가진 페이지들이 있다고 가정하겠습니다 만약 페이지 프레임이 3개 할당되었다고 하면  1번을 올리고 2번을 올리고 3번까지 올라와 프로세스가 할당된 페이즈 프레임이 꽉 차면 운영체제는 예측을 하는 것입니다 즉 만약 게임을 하고 있다면 내가 다음에 왼쪽으로 갈지 오른쪽으로 움직일지 OS 가 예측을 하여 페이지들은 관리해주는데요

실현이 불가능한 알고리즘 입니다 아예 사용하지를 못하죠 왜냐하면 어떻게 움직일지 한글 프로그램에 어떤 글자를 적을지 무슨 프로세스를 또 다르게 사용할지 절대 예측을 하지 못하는 그런 상황들을 예측하여 사용한다는 것은 절대 말이 안 되는 것입니다 

 

 

FIFO Algorithm

First in First Out 알고리즘을 줄인 말인데요 즉 첫번쨰로 들어온 것을 뺴주는것입니다 첫 번째로 들어온 것이 사용빈도 가 많으면 그것을 쓸 때마다 페이지 폴트가 일어나 성능에 영향을 주겠죠  지역성을 고려하지 않았다는 것인데요 

 

1번째는 페이지 프레임이  3 개일때입니다 페이지 폴트가 9번 일어나는데요 그럼 메모리를 늘려주면 해결이 될까? 페이지 폴트를 4개로 즉 메모리를 더할당해 주었더니 성능이 더 저하되는  그런 상황인데요 이 옆에 상황을   FIFO anomaly

라고 합니다 전혀 지역성을 고려하지 않았기 떄문에 나타는 상황입니다 

 

 

 

LRU ( Least Recently Used ) Algorithm 

 

LUR 알고리즘 은 가장 오래동안 참조되지 않은 페이지를 페이지 프레임에서 빼와주는 것입니다  현시대에서 가장 많이 사용되고 성능이 엄청 좋은 알고리즘입니다  사실 이 알고리즘도 약간의 문제가 있습니다  항상 참조될 때마다 시간을 기록해야 한다는 문제와 만약 For 문이나 while  루프를 사용한다고 가정하겠습니다 이 프로세스에는 할당된 페이지 프레임은 약 3개이고 4개의 1번 , 2번 , 3번 , 4번이라는 이름을 가진 페이지를  사용해야 한다고 가정하겠습니다 

 

자  할당받은 페이지 프레임 에 loop에 1번 이 들어갔습니다 그 후 2번을 실행하고 또다시 3번을 실행했습니다 이제 페이지 프레임을 3개 할당받은 프로세스의 메모리 할당량이 가득 찾습니다 1번 2번 3번이 가득 차있는데요 4번을 실행하려고 하면 1번을 할당받은 메모리에 빼줘야 하는 상황이 일어납니다 ( 왜냐하면 이 알고리즘은 가장 오랫동안 참조가 되지 않은 페이즈를 뺴주는 알고리즘 ) 그리고 다시 loop에 1번 페이즈를 할당해줘야 하는 상황이면 2번을 빼고 또 2번을 사용하려면 3번을 빼고 또다시 4번을 사용하려면 또다시 빼고..... 쭉... 쭉... 쭉 계속 페이지 폴트가 일어나는 상황을 알 수 있는데요

이러한 문제를 해결해주려면 연속적이지 않은 할당 즉 루프의 참조되는 페이지 개수만큼 할당해주면 되는데요

 

사실 여러 방법론들이 한두 개가 아닙니다 길이 엄청 길어지네요 ㅠㅠ... 2개로 나눠 포스팅하겠습니다 감사합니다

 

 

 

728x90