코드네임 :
⚙️ 운영체제 - 가상 메모리 개념 ⚙️ 본문
(a) 프로세스가 물리 메모리보다 큰 경우
- 설명:
하나의 프로세스가 실행되려면 물리 메모리에 적재되어야 합니다. 그러나 프로세스가 사용하는 메모리 크기가 물리 메모리의 크기보다 클 경우, 프로그램을 한 번에 실행할 수 없습니다.
(b) 여러 프로세스들의 총 크기가 물리 메모리보다 큰 경우
- 설명:
여러 프로세스가 동시에 실행되려면 모두 물리 메모리에 적재되어야 합니다. 하지만 이 프로세스들의 총 메모리 요구량이 물리 메모리보다 큰 경우, 모든 프로세스를 동시에 실행할 수 없습니다.
⬇️
[ 가상 메모리의 필요 ]
: 물리메모리 크기 한계를 극복하는 해결책!!
가상 메모리는 프로그램의 일부(페이지 또는 세그먼트)를 물리 메모리에 적재하고, 나머지는 하드 디스크와 같은 보조 기억 장치에 보관합니다. 실행 중 필요한 부분만 메모리에 로드하여 프로그램 실행을 가능하게 합니다.
기술적으로 페이징이나 세그멘테이션 같은 기법이 활용됩
⬇️
[ 가상 메모리 기법 핵심 ]
- 물리 메모리를 디스크 공간으로 확장
: 프로세스를 물리메모리와 하드디스크에 나누어 저장
( 프로세스나 사용자가, 프로세스를 실행하기에 충분히 큰 물리 메모리가 있다고 착각하게 만드는 메모리 관리 기술 )
- swapping : 물리 메모리가 부족할 때, 실행에 필요하지 않은 부분은 하드디스크로 이동 (swap out)
- 물리 메모리에 공간이 부족할 때, 운영체제가 메모리 사용이 적거나 현재 실행되지 않는 프로세스(또는 그 일부)를 하드디스크의 **스왑 영역(Swap Space)**으로 내보냅니다
: 실행에 필요할 때 하드디스크에서 물리메모리로 이동 (swap in)
- 실행 중인 프로세스가 자신의 메모리에 접근하려고 할 때, 해당 메모리가 스왑 영역에 있다면 이를 다시 물리 메모리로 가져와야 합니다.
(사용하지 않는 프로세스의 메모리를 디스크로 내보내고, 활성 프로세스만 메모리에 유지합니다.)
Replacement (페이지 교체 정책)
물리 메모리에 더 이상 새로운 페이지를 적재할 공간이 없을 때, 어떤 페이지를 제거할지 결정하는 정책
LRU란?
가장 오랫동안 사용되지 않은 페이지를 교체
- 각 페이지의 Reference Bit를 사용하여 최근에 사용된 페이지를 기록합니다.
- 페이지에 접근(read/write)할 때, 해당 페이지의 Reference Bit를 1로 설정.
- 운영체제(OS)는 주기적으로 이 Reference Bit를 초기화(0으로)하여 페이지 사용 기록을 관리.
- Reference Bit가 1인 페이지는 최근에 사용된 페이지로 판단하여 교체 대상에서 제외합니다
Writes (디스크 쓰기 관련)
Dirty Bit
- 페이지가 수정되었는지를 나타내는 비트입니다.
- 페이지에 쓰기(write) 작업이 발생하면, 해당 페이지의 Dirty Bit를 1로 설정합니다.
- Dirty Bit가 1로 설정된 페이지만 디스크에 다시 저장해야 하므로, 불필요한 쓰기를 줄일 수 있습니다.
Write-back(지연 쓰기) 방식: ⭕️
- 데이터를 즉시 디스크에 쓰지 않고, 메모리에서 페이지가 교체될 때만 Dirty Bit가 설정된 페이지를 디스크에 씁니다.
Write-through 방식: ❌
- 페이지에 쓰기 작업이 발생할 때마다 즉시 디스크에 저장
[ 가상 메모리 구현 ]
요구 페이징 (demand paging) : 페이징 기법을 토대로 프로세스의 일부 페이지들만 물리 메모리에 할당하고, 페이지가 필요할 때 물리 메모리를 할당 받고 페이지를 적재시키는 메모리 관리 기법
: 요구 페이징 = 페이징 + 스와핑 ( 프로세스의 메모리를 고정된 크기의 페이지로 나눔 + 필요 없는 페이지는 하드디스크(스왑 공간)로 내보내고, 필요한 페이지는 다시 물리 메모리로 가져옴)
- 요구 페이징은 프로세스의 필요한 페이지만 물리 메모리에 적재하는 메모리 관리 기법입니다.
- 프로세스 전체를 한 번에 물리 메모리에 적재하지 않고, 필요할 때(page fault 발생 시) 해당 페이지를 적재합니다.
요구 세그먼테이션 (demand segmentation) = 세그먼테이션 기법 + 세그먼트 스와핑 ( 프로세스의 메모리를 가변 크기의 세그먼트로 나눔 + 필요 없는 페이지는 하드디스크(스왑 공간)로 내보내고, 필요한 페이지는 다시 물리 메모리로 가져옴)
- 요구 세그먼테이션은 프로세스의 필요한 세그먼트만 물리 메모리에 적재하는 메모리 관리 기법입니다.
- 세그먼테이션 기법과 세그먼트 스와핑을 결합한 방식입니다.
- 프로세스의 메모리가 여러 세그먼트(예: 코드, 데이터, 스택)로 나뉩니다.
- 실행 중에 특정 세그먼트가 필요하면, 해당 세그먼트가 물리 메모리에 있는지 확인합니다.
- 세그먼트가 없으면 운영체제가 하드디스크에서 물리 메모리로 해당 세그먼트를 가져옵니다(스와핑).
- 필요한 세그먼트가 적재되면 프로세스가 실행을 계속합니다.
'컴퓨터와 함께해요 > 운영체제' 카테고리의 다른 글
⚙️ 운영체제 - 지역성과 스래싱 ⚙️ (0) | 2024.11.12 |
---|---|
⚙️ 운영체제 - 요구 페이징 ⚙️ (0) | 2024.11.12 |
⚙️ 운영체제 - 메모리 할당 : 페이지화된 세그먼테이션 ⚙️ (0) | 2024.11.12 |
⚙️ 운영체제 - 메모리 할당 + TLB ⚙️ (0) | 2024.11.12 |
⚙️ 운영체제 - 메모리 할당 : 페이징 ⚙️ (0) | 2024.11.12 |