상세 컨텐츠

본문 제목

혼공컴운 6주차 (가상메모리)

혼공단/컴구운체

by nownow 2025. 2. 24. 16:25

본문

페이징

프로그램을 실행할 때 메모리에 적재할 필요가 있음. 메모리에 연속적으로 배치할 경우

프로세스가 종료될 때 중간중간 프로세스가 종료되며 외부단편화가 발생하고 메모리 공간을

효율적으로 사용하지 못하게 될 수 있다. 또한 메모리 남은공간을 초과하는 프로그램 실행 불가

이를 해결하기 위해, 메모리의 물리적 공간을 프레임 단위로 나누어서 각 칸에 프로세스의 일부를

비연속적으로 배치한다. 당장 필요한 부분만을 메모리에 적재하고 나머지는 디스크에 저장하는

스와핑 방식을 적용하여 메모리를 효율적으로 사용한다.

프로세스가 메모리에 불연속적으로 배치되므로 cpu의 논리주소를 물리주소로 변환하기 위한

페이지 테이블이 존재한다. 메모리에 저장하면 2중 참조가 되어 비효율적이므로

가상주소를 물리주소로 변환하는 mmu 내부의 tlb 캐시를 참조하도록 한다.

또한 주소를 사용할 때, 페이지 번호와 페이지 내부에서의 변위를 함께 사용한다.

페이지가 너무 많아지면 페이지 테이블이 너무 커지고 메모리의 공간을 차지하므로

페이지를 계층적으로 설계하는 계층적 페이지 시스템을 적용할 수 있다.

 

copy on write

프로세스를 fork 할 시 프로세스를 복사해야 하기에 메모리 사용량이 늘어난다.

하지만 fork한 프로세스를 수정하지 않는다면 굳이 복사할 필요가 없다.

그러므로  fork 할 당시에는 복사된 프로세스도 동일한 프레임을 가리키도록 설정하고

특정 프레임에 해당하는 부분을 수정할 경우에 페이지 폴트를 발생시키고

그 프레임 부분만을 복사한뒤 테이블을 수정한다.

 

기본숙제

P400. 확인문제 1

최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치 -> 최초적합

프로세스가 적재될 수 있는 가장 큰 공간에 프로세스를 배치 -> 최악적합

프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치 ->최적적합.

관련글 더보기