티스토리 뷰

실제 우리가 사용하고 있는 운영체제에서 가상 메모리를 사용하고 있기 때문에 개발자는 가상 메모리를 이해하는 것이 중요하다. 운영체제에 의해 메모리 관리가 어떻게 이루어지는지, 또 page fault, page 교체 알고리즘은 어떤 것인지에 대해서 알아보자.


가상 메모리 (virtual memory)

가상 메모리는 실제 물리 메모리 개념과 개발자 입장의 논리 메모리 개념을 분리한 것이다. 이렇게 함으로써 개발자는 메모리 크기를 전혀 신경쓰지 않고, 손 쉽게 프로그램을 작성할 수 있게 된다. 운영체제는 가상 메모리 기법을 통해 프로그램의 논리적 주소 영역에서 필요한 부분만 물리적 메모리에 적재하고, 직접적으로 필요하지 않은 메모리 공간은 디스크(Swap 영역)에 저장하게 된다.



요구 페이징 (demand paging)

당장 사용될 주소 공간을 page 단위로 메모리에 적재하는 방법을 요구 페이징(damand paging)이라고 한다. 요구 페이징 기법에서는 특정 page에 대해 CPU의 요청이 들어온 후에 해당 page를 메모리에 적재한다. 당장 실행에 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고, 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점이 있다.


요구 페이징 기법에서는 유효/무효비트(valid/invalid bit)를 두어 각 page가 메모리에 존재하는지 표시한다.


Page fault

CPU가 무효 비트(invalid bit)로 표시된 page에 액세스하는 상황을 page fault라고 한다. CPU가 무효 page에 접근하면 주소 변환을 담당하는 하드웨어인 MMU가 page fault trap을 발생시키고, 다음과 같은 순서로 page fault를 처리하게 된다.

  1. CPU가 페이지 N을 참조한다.
  2. Page table에서 페이지 N이 무효 상태임을 확인한다.
  3. MMU에서 Page fault trap을 발생시킨다.
  4. 디스크에서 페이지 N을 빈 프레임에 적재하고 page table을 업데이트 한다. (invalid -> valid)


page 교체 알고리즘 (replcement algorithm)

page fault가 발생하면 요청된 page를 디스크에서 메모리로 가져오는데 이 때, 물리적 메모리에 공간이 부족할 수 있다. 그럴 경우에는 메모리에 올라와 있는 page를 디스크로 옮겨서 메모리 공간을 확보해야 한다. 이를 페이지 교체라고 하고, 어떤 page를 교체할 것이냐를 결정하는 알고리즘이 page 교체 알고리즘이다.


교체 알고리즘은 최대한 page fault가 적게 일어나도록 도와줘야 한다. 따라서 앞으로 참조될 가능성이 적은 page를 선택해서 교체하는 것이 성능을 향상시키는 방법이다.



정리

Q. 요구 페이징이란 무엇인가?

  • 요구 페이징 기법은 특정 page에 대해 CPU의 요청이 들어 왔을 때 해당 page를 메모리에 적재한다. 당장 실행에 필요한 page만을 메모리에 적재하기 때문에 메모리 사용량이 감소하고, 프로세스 전체를 메모리에 적재하는 입출력 오버헤드도 감소하는 장점이 있다.

Q. LRU 알고리즘과 LFU 알고리즘 비교

  • LRU는 가장 오래전에 참조가 이루어진 page를 교체하고, LFU는 물리적 메모리 내에 존재하는 page 중에서 지금까지의 참조 횟수가 가장 적은 page를 교체한다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함