이론적인 fork()
프로세스는 기본적으로 자원을 공유하지 않는다. 그러므로 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통째로 복제되어 적재된다. 때문에 프로세스 생성 시간이 지연되고 메모리가 낭비된다.
쓰기 시 복사(copy on write)
부모 프로세스와 동일한 자식 프로세스가 복제되어 생성되면 자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킨다. 만약 쓰기 작업이 없다면 이 상태 유지된다.
부모 프로세스/자식 프로세스 둘 중 하나가 페이지에 쓰기 작업 수행 시 해당 페이지는 별도의 공간으로 복제되므로 프로세스 생성 시간 절, 메모리 절약이 된다.
프로세스 테이블의 크기는 생각보다 작지 않다. 프로세스를 이루는 모든 페이지 테이블 엔트리를 메모리에 두는 것은 큰 낭비이다. 프로세스를 이루는 모든 페이지 테이블 엔트리를 항상 메모리에 유지하지 않을 방법이 계층적 페이징이다.
계층적 페이징
페이지 테이블을 페이징하여 여러 단계의 페이지 페이지를 두는 방식이다. 페이지 테이블을 여러 페이지로 쪼개고 이 페이지를 가리키는 페이지 테이블(Outer페이지 테이블)을 둔다.
CPU와 가장 가까이 위치한 페이지 테이블(Outer페이지 테이블)은 항상 메모리에 유지하기 때문에 모든 페이지 테이블을 항상 메모리에 있을 필요가 없어진다.
계층적 페이징을 이용하는 환경에서의 논리 주소
바깥페이지 번호에 해당하는 항목은 CPU와 근접한 곳에 위치한 페이지 테이블 엔트리를 가리키고 안쪽 페이지 번호는 첫 번째 페이지 테이블 바깥에 위치한 두 번째 페이지 테이블 즉 페이지 테이블의 페이지 번호를 가리킨다.
주소 변환은 다음과 같이 이루어진다.
참고 : 본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard
'cs공부 > 운영체제' 카테고리의 다른 글
운영체제 - 스택 메모리, 힙 메모리 자세히 알아보기 +) args란 (0) | 2024.05.15 |
---|---|
운영체제 - 페이지 교체와 프레임 할당(요구 페이징, 페이지 교체 알고리즘(FIFO,최적,2차 기회, LRU), 스래싱, 프레임 할당) (0) | 2024.03.04 |
운영체제 - CPU 스케줄링(우선순위, 스케줄링 큐, 선점 및 비선점형 스케줄링) (0) | 2024.01.21 |
운영체제 - 병렬처리(Parallel Loops, Parallel Invoke,Parallel Partitioning) (0) | 2023.06.06 |
운영체제 - TLS(Thread Local Storage) (0) | 2023.06.06 |
댓글