쓰기 시 복사
프로세스는 기본적으로 자원을 공유하진 않는다
fork()를 하게 되면 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가
통째로 복제되어 적재되니 프로세스 생성 시간 지연과 메모리 낭비가 일어난다
하지만 쓰기 시 복사를 통해 이를 해결할 수 있다
쓰기 시 복사는
부모 프로세스와 동일한 자식 프로세스가 복제되어 생성되면
자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킨다
쓰기 작업이 없다면 이 상태를 유지한다
부모 프로세스, 자식 프로세스 둘 중 하나라도 페이지에 쓰기 작업 수행 시
해당 페이지만 별도의 공간으로 복제되며
프로세스 생성 시간 절약과 메모리 절약이 가능하다
계층적 페이징
프로세스 테이블의 크기는 생각보다 작지 않다
프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는 것은 큰 낭비기에
프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않는 방법이다
페이지 테이블을 페이징하여 여러 단계의 페이지를 두는 방식
CPU와 가장 가까이 위치한 최상단의 페이지 테이블(Outer 페이지 테이블)만 항시 메모리에 유지한 채
필요로 하는 페이지 하위 페이지 테이블을 불러오면 됨
계층적 페이징을 이용하는 환경에서의 논리 주소
하지만, 페이지 계층이 너무 많아지면
페이지 폴트가 발생했을 경우 메모리를 참조해야 하는 횟수가 많아지기에
계층이 많다고 효율이 좋은 것은 아님
'CS > [혼자 공부하는] 운영체제' 카테고리의 다른 글
7-1] 파일 시스템: 파일과 디렉토리 (0) | 2023.06.10 |
---|---|
6-4] 가상메모리: 페이지 교체와 프레임 할당 (0) | 2023.06.10 |
6-2] 가상 메모리: 페이징을 통한 가상 메모리 관리 (0) | 2023.06.09 |
6-1] 가상 메모리: 연속 메모리 할당 (0) | 2023.06.08 |
5-2] 교착상태: 교착 상태 해결 방법 (0) | 2023.06.08 |