Operating System(3)-메모리관리

my_mon·2022년 10월 28일
0

메모리 관리

메모리는 비어있다가 전원이 켜지면 운영체제가 자리한다. 디스크(파일시스템, 전원이 나가더라도 내용이 유지됨)에 실행파일 A, B가 존재하다가 이 파일들을 실행시키면 메모리에 올라가서 프로세스가 된다. 근데 정확하게는 메모리에 바로 올라가는 것이 아니라, 한 단계를 더 거치게 된다.

그 단계는 가상메모리 라는 단계다. 프로그램을 실행시키면 메모리에 올라가기 전에, 실행파일 A, B 각각 본인들만의 가상 메모리가 생성되어 그곳에 올라가게 된다. 가상메모리 프로세스A, 가상메모리 프로세스B 가 생기는 것이다. 그 다음에 실제 메모리에는 가상메모리에 올라간 부분 중에서 가장 필요한 부분만 올라가게 된다. 실제 메모리가 다 차게 되면, 메모리를 통째로는 아니더라도 비우긴 해야 하는데, 이 때 메모리에서 빠져나간 프로세스는 디스크(스왑영역)에 보관된다. 그래서 스왑영역은 메모리의 연장공간 이라고도 볼 수 있다. 그 후에 가상메모리에 있는 다른 프로세스를 메모리에 올린다.

이 때 만약 컴퓨터의 전원이 꺼지게 되면 어떻게 될까?

우선 디스크(파일시스템)는 비휘발성이라 내용이 그대로 유지된다. 메모리는 휘발성이라서 메모리는 자동적으로 사라진다. 디스크(스왑영역)는 살아는 있지만 그 의미가 없게된다.

위에서 메모리의 공간이 꽉 차게 되면, 메모리에 존재하는 프로세스 중 하나를 쫓아내게 되는데 어떤식으로 정해지게 되는 것일까?

가상메모리에 1, 2, 3, 4, 5 페이지가 있다고 가정하고, CPU가 요청한 페이지 순서가 1, 1, 1, 1, 2, 2, 3, 3, 2, 4, 5 순서라고 가정하자. 맨 처음에 메모리는 CPU의 요청에 따라 가장 먼저 필요한 1번 페이지를 메모리에 올린다. 그런데 1번 페이지 이후로도 1번 페이지를 필요로 한다. 그럼 가상메모리까지 갈 필요 없이 메모리에 올라와 있기 때문에 CPU가 바로 가져갈 수 있다.(매우 효율적) 그 후 2번 차례가 오면 1번에 이어서 2번 페이지도 메모리에 올라가게 된다. (이때 메모리 공간은 아직 여유가 있는 상태다.) 이런식으로 4번 페이지까지 메모리에 올라갔을 때 메모리 공간이 꽉차게 된다. 5번 페이지가 올라가기 위해서는 메모리에 존재하는 페이지들 중 하나를 내보내야 한다.

이 때 운영체제는 메모리 밖으로 내보낼 페이지를 어떻게 정하게 될까?

과거를 참고해서 미래에 사용될 가능성이 낮은 페이지를 예측해서 내보내게 된다. 방법은 두 가지가 있다.

LRU(Least Recently Used)

가장 오래 전에 참조한 페이지를 내보내는 방법이다. 위의 글을 보면 1번이 메모리에 머문지 가장 오래된 페이지 이므로, 1번 페이지를 메모리 밖으로 내보내게 된다. 최근에 사용된 페이지는 재사용성이 높다고 판단한 것이다.

LFU(Least Frequently Used)

CPU가 가장 적게 사용한 페이지를 내보내는 방법이다. 위의 글을 보면 4번이 CPU 사용 횟수가 1번으로 가장 적으므로 4번 페이지를 메모리 밖으로 내보내게 된다.

두 방법 다 예측에 의해서 결정되는 방법이므로 무엇이 뛰어나다 할 것 없이, 장단점이 각각 존재한다.



참고 : kowc강의 - 운영체제(이화여대 반효경 교수님)
profile
기록하는 사람

0개의 댓글

관련 채용 정보