배경지식
논리 주소
- 논리주소는 CPU가 프로그램을 실행하는 과정에서 생성하는 주소로, 논리 주소는 운영체제의 관리 하에 CPU가 직접적으로 사용하는 주소
- 사용자에게 제공되는 주소이므로, 실제 하드웨어 메모리와는 관련이 없고, 메모리 요구사항을 처리하기 위해 사용된다.
- CPU 내부에 있는 MMU는 논리 주소를 물리 주소로 변환하는 역할을 하는데, MMU는 페이지 테이블을 참고하여 해당 논리주소가 어떤 물리주소에 매핑되는지를 결정한다.
물리주소
- 메모리(RAM)에 데이터가 저장되는 실제 주소로, 컴퓨터 하드웨어가 인식하는 주소이다.
- CPU는 논리주소를 메모리 관리 기능(MMU)에 의해 변환하여 물리주소에 접근할 수 있다.
- 물리주소는 하드웨어에 직접 연결되므로, 각 프로세스의 논리주소와 1:1 대응하지 않는다.
가상메모리에서
- 가상 메모리 시스템에서는 프로세스가 사용하는 논리 주소를 물리 주소로 변환해야하는데, 이 과정을 주소 변환이라고 하며, 페이지 테이블과 같은 데이터를 이용해 이루어진다.
가상메모리
- 물리 메모리의 하드웨어적인 특성 상 필연적인 크기의 한계를 극복하기 위한 기술
-> 유한한 메모리의 크기를 효율적으로 관리하여, 무한(?)하게 사용하기 위한 기술. 즉, 물리 메모리보다 큰 프로세스를 사용하는것이 가능하다.
부분 적재
- 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올린다.
- 적재 여부를 페이지테이블에 표시
- 실행될 가능성이 낮은 코드는 굳이 메모리에 적재될 필요가 없기 때문에, 현재 필요한 페이지만 메모리에 올리는 것을 요구페이징이라고 한다.

- 페이지 테이블을 통해 물리 메모리에 매핑을 하는데, 필요한 페이지만을 스와핑을 통해 메모리에 올리고 나머지는 하드디스크에 두는 방식
ex. A에 접근하고 싶다면: 0(논리주소) -> 4(물리주소) 로 변환하여 접근 가능
- Valid-invalid-bit: 현재 메모리에 페이가 있는지 없는지를 나타내는 비트(있으면 1, 없으면 0)
- modify-bit: 페이지 적재 후 변경 유무를 표시(1이면 변경되었으므로 다시 적재할 필요o)
요구페이징(Demand Paging)
컴퓨터가 메인 메모리에서 사용하기 위해 보조기억장치(2차 기억장치)로부터 데이터를 저장하고 검색하는 메모리 관리 기법 -> 자주 쓰던거는 앞으로도 자주 쓸거같다...
페이지 부재 처리 과정
- 특정 페이지 실행을 위해 페이지 테이블을 참조하여 메모리에 페이지가 올라와있는지 여부를 확인(valid-invalid-bit 확인)
- 유효비트가 0인 경우 -> 페이지 부재 발생
- 운영체제는 해당 프로세스를 wait 상태로 만들고 요구된 페이지를 하드디스크에서 찾아 메모리의 빈 공간에 적재(Swap-in)
- 페이지 테이블 갱신
- 다시 실행
만약에 메모리에 빈 공간이 없을 경우
메모리에 Swap-in 할 여유 공간이 없을 경우 페이지 교체 알고리즘에 따라 메모리에 있는 페이지를 다시 하드디스크로 내보내야 한다.(Swap-Out)
정리
- 가상메모리는 메모리 크기보다 더 큰 프로세스를 실행하기 위해 효율적으로 메모리를 관리하는 기술이다.
- 자주 사용한, 혹은 사용할거 같은 일부 프로세스만 RAM에 적재하고 나머지는 하드디스크의 스왑영역에 저장하여 RAM의 물리적 크기보다 더 큰 공간을 사용 가능하다.