코드네임 :

⚙️ 운영체제 - 요구 페이징 ⚙️ 본문

컴퓨터와 함께해요/운영체제

⚙️ 운영체제 - 요구 페이징 ⚙️

비엔 Vien 2024. 11. 12. 14:33

[ 요구 페이징 ]

: 현재 실행에 필요한 일부 페이지만 메모리에 적재하고 나머지는 하드디스크에 두고, 페이지가 필요할 때 메모리에 적재하는 방식 

(요구 : 페이지가 실행에 필요할 때 물리 메모리를 할당받고 디스크에 읽어 적재)

 

[ 요구 페이징 구현의 전형적인 형태 ]

- 운영체제는 첫 페이지만 물리 메모리에 적재하고,

- 실행 중 프로세스가 다른 페이지를 필요로 할 때 그 때에 물리 메모리에 적재

 

[ 스왑 영역 ]

: 메모리가 부족할 때 메모리를 비우고 페이지를 저장해두는 하드 디스크의 영역



 

[ fork()의 완전복사 & 쓰기 시 복사 ]

 

**쓰기 시 복사(Copy-On-Write, COW)**란, 부모 프로세스와 자식 프로세스가 동일한 메모리 페이지를 공유하다가, 어느 한쪽에서 해당 페이지를 수정하려고 할 때(쓰기 작업 발생 시) 그제서야 페이지를 복사하여 별도로 할당하는 메커니즘입니다.

 

어떻게 작동하나요?

  1. 프로세스 생성 시(fork()):
    • 부모 프로세스와 자식 프로세스는 동일한 메모리 페이지를 공유합니다.
    • 이 공유된 메모리 페이지는 **읽기 전용(read-only)**으로 설정됩니다.
    • 페이지 테이블은 물리 메모리의 동일한 프레임을 가리킵니다.
  2. 쓰기 작업 발생 시:
    • 부모 또는 자식 프로세스가 페이지를 수정하려고 하면, **페이지 폴트(page fault)**가 발생합니다.
    • 이때, 운영체제가 해당 페이지를 복사하여 부모와 자식 각각 독립적인 메모리 페이지를 가지게 합니다.
    • 이렇게 필요할 때만 복사가 이루어지기 때문에 메모리를 효율적으로 사용할 수 있습니다. 

[ 쓰기 시 복사의 장점 ]

 

프로세스 생성 시간 절약

: 부모 프로세스의 페이지 테이블만 복사하여 자식 프로세스를 만들기 떄문에 프로세스 생성이 매우 빠름

: fork() 후 exec()해도 프로세스의 생성 과정에서 손해 없음

 

메모리 절약

: 부모와 자식 프로세스가 둘 다 읽기만 하는 페이지는 새로운 프레임을 할당할 필요 없으므로 메모리 절약

 

 

[ 완전 복사 & 완전 복사의 비효율성 ]

 

⬇️

[ 쓰기 시 복사 ]