Virtual Memory(가상 메모리)

가상 메모리는 메모리가 실제 메모리보다 큰 프로세스를 실행할 수 있게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행 가능하는 점에 착안하여 고안된 기술이다.

페이징

공간을 일정한 단위로 자르는 가상 메모리 관리 기법으로, 공간을 두 가지 단위로 나누어 관리한다.

  • 프로세스의 논리 주소 공간: 페이지라는 일정한 단위로 나누어 관리

  • 메모리 물리 주소 공간: 프레임이라는 페이지와 동일한 크기의 일정한 단위로 나누어 관리

일정한 단위로 자른 뒤 페이지프레임에 할당하게 되는데, 페이지 번호와 프레임 번호를 짝지어 물리 주소를 찾아갈 수 있게 된다.

스와핑

페이징 기법에서도 스와핑을 사용하여 프로세스를 페이지 아웃, 페이지 인하는데, 아래와 같은 특징을 가진다.

  • 스왑은 프로세스 전체가 아닌 페이지 단위로 이루어짐

  • 실제 메모리에는 프로세스 중 실행에 필요한 일부 페이지만 적재

  • 당장 필요하지 않은 페이지들은 보조기억장치에 저장하여 메모리보다 큰 프로세스를 실행 가능하게 함

페이지 테이블

프로세스가 메모리에 불연속적으로 배치되어 있으면 CPU에선 이를 순차적으로 실행할 수 없어, 페이지 테이블이라는 테이블을 통해 물리 주소를 찾아가게 된다. 페이지 테이블은 페이지 번호와 프레임 번호를 짝지어 주는 테이블로, 페이지 번호를 통해 프레임 번호를 찾아가 프로세스를 실행할 수 있게 한다.

내부 단편화(internal fragmentation)

페이징은 메모리 연속 할당과 반대로 내부 단편화 문제가 발생할 수 있다. 페이지 크기가 10KB이고 프로세스 크기가 32KB인 경우, 32KB 프로세스를 위해 40KB의 메모리가 필요하게 되는데, 이때 8KB가 내부 단편화가 된다.

페이지 폴트(page fault)

페이지 폴트는 어떤 페이지에 접근하려 했을 때 해당 페이지가 실제 물리 메모리에 부재할 때 발생하는 인터럽트로, 해당 문제가 발생하면 운영체제가 데이터를 메모리에 가져와서 다음 동작을 이어갈 수 있게 한다.

참고자료

Last updated