☑️ Virtual Memory
RAM의 물리적인 한계를 보완하기 위해서 하드 디스크의 일부를 메모리처럼 사용하는 운영체제의 기법
가상 메모리(Virtual Memory)는 RAM의 물리적인 한계를 보완하여 응용 프로그램에 크고 연속적인 메모리 블록을 부여하는 메모리 관리 기술을 의미한다. 물리적으로 존재하지 않으며, 논리적으로만 존재한다. 이로 인해서 컴퓨터는 응용 프로그램에게 물리 메모리의 크기보다 더 큰 가상의 메모리가 존재한다는 환상을 제공한다.
가상 메모리는 하드웨어와 소프트웨어를 사용하여 구현하는 기술로 응용 프로그램에서 사용하고 있는 가상 주소(Virtual Address)를 물리적 주소(Physical Address)에 매핑한다.
응용 프로그램에서 사용하는 모든 메모리 주소는 가상 주소를 사용한다.
⭐ 어떻게 더 많은 공간이 있는 것과 같이 보이게 하는가?
- 가상 메모리는 페이지라는 고정 크기로 메모리 블록을 관리한다.
- RAM이 가득 차면 즉시 사용하지 않는 페이지를 하드디스크의 Swap Disk로 이동한다.
- 나중에 필요할 경우 다시 가져오는 방법을 선택한다.
- 이를 통해서 실제 RAM의 크기보다 더 큰 메모리를 사용하는 것처럼 보이게 만든다.
⭐ 가상메모리의 장점은 무엇인가?
- 물리 메모리의 크기에 제약을 받지 않을 수 있다.
- 가상 메모리는 페이지로 Swap을 진행하고 자주 사용하는 페이지는 남기고 사용 빈도가 낮은 페이지만 선택적으로 Swap한다.
- 이로 인해서 불필요한 디스크 I/O가 감소하게 된다.
☑️ Page Table
가상 주소를 물리 주소로 변환하기 위해 각 프로세스마다 보유하고 사용하는 매핑 테이블
가상 주소를 물리 주소로 매핑하는 자료 구조로, 각 프로세스마다 독립적인 페이지 테이블을 보유하고 있다. MMU는 프로세스의 Page Table을 참조하여 주소 변환을 수행한다.
⭐ Page Table Entry(PTE) 구성
- 물리 메모리의 Frame 번호
- 페이지가 메모리에 있는지 여부
- 위치한 영역이 RAM인가? SWAP DISK인가?
- 페이지 내용이 수정되었는가?
- 최근에 접근했는가?
- Read/Write/Exectue에 대한 권한
☑️ Trannslation Lookaside Buffer(TLB)
가상 주소와 물리 주소의 매핑 정보를 캐싱하여 페이지 테이블 접근 시간을 최소화하는 하드웨어 캐시
CPU가 가상 주소를 요청하면 MMU는 프로세스의 PTE를 확인하기 전에 TLB를 확인하게 된다. Cache와 동일하게 TLB에 데이터가 존재하면 TLB Hit, 존재하지 않으면 TLB Miss라고 한다.
☑️ Page Fault
접근하려는 페이지가 현재 메모리에 없을 때, 발생하는 인터럽트
페이지 폴트(Page Fault)는 응용 프로그램이 가상 주소 공간에는 존재하지만 Physical Ram에 존재하지 않는 데이터나 코드에 접근하려고 할 때 발생한다. 이때, OS가 필요한 데이터를 RAM으로 Load하여 Fault를 관리하는 이벤트를 발생시키게 된다.
☑️ Lazy Loading
페이지가 필요할 때 까지 메모리에 로딩을 미루는 최적화 기법
프로세스의 전체 주소 공간을 한 번에 물리 메모리에 적재하지 않고 페이지가 필요해질 경우, 그때마다 적재하는 방식을 의미한다. 실제 필요한 페이지만 메모리에 적재하기 때문에 메모리 사용량이 감소하고 프로세스 시작 시간을 단축할 수 있다.
☑️ Page Replacement Policy
메모리 페이지를 교체할 때 어떤 페이지를 선택할지 결정하는 정책
메모리 페이지를 교체할 때 페이지 선택을 결정하는 정책을 의미한다. 물리 메모리가 가득 찼다면 새로운 페이지를 적재하기 위해서 기존 페이지 중 하나를 선택 제거하게 된다. 이때 4개의 정책이 대표적이다.
- OPT
- 가장 오랫동안 사용되지 않을 페이지를 교체하는 정책
- 미래의 페이지 참조를 예측해야 하므로 실제로는 구현이 불가능하다.
- FIFO
- 메모리에 가장 먼저 들어온 페이지를 교체하는 정책
- LRU
- 가장 오래 사용되지 않은 페이지를 교체하는 정책
- 과거의 참조 기록을 바탕으로 미래의 참조를 예측하는 방식
- 모든 메모리 참조를 기록하고 유지해야하므로 구현 Cost가 든다.
- Clock
- 각 페이지에 참조 비트를 두고 주기적으로 검사하면서 교체할 페이지를 선택
- 세대별 수집기와 비슷한 알고리즘을 사용하는 것 같다.
☑️ Anonymous Page
프로세스의 힙이나 스택처럼 파일과 매핑되지 않은 메모리 페이지
Anonymous Page는 디스크의 파일 시스템과 연결되지 않은 메모리 페이지를 의미한다. Heap과 Stack도 Anonymous의 한 형태를 의미한다.
☑️ File-backed Page
실행 파일이나 공유 라이브러리처럼 파일과 매핑된 메모리 페이지
Anonymous Page와 다르게 File-backed Page는 파일과 직접적으로 매핑되는 메모리 페이지를 의미한다. 실행 가능한 목적 파일이 매핑된 페이지로 HDD의 특정 파일과 1:1로 매핑된다.
☑️ Swap Disk
메모리 부족 시 페이지를 임시로 저장하는 디스크의 영역
물리적 메모리가 부족할 때 사용되는 보조 저장 공간을 의미한다. 물리 메모리의 확장과 같은 개념으로 디스크의 일부 공간을 메모리처럼 사용하는 것을 의미한다. 하지만 Swap Disk 영역은 RAM에 비해서 접근 속도가 느리다.
☑️ Direct Memory Accesss
CPU 개입 없이 주변장치가 메모리에 직접 접근하여 데이터를 전송하는 방식
CPU는 DMA 컨트롤러에 전송할 데이터의 시작 주소와 데이터의 크기, 목적지, 등의 정보를 설정한다. 이후, DMA 컨트롤러는 CPU의 개입 없이 독립적으로 데이터 전송을 수행할 수 있다. 전송 완료 시, 인터럽트를 발생시켜서 CPU에게 작업 완료 신호를 보낸다.
이처럼 DMA는 CPU의 개입 없이 직접 메모리에 접근하여 데이터를 전송할 수 있게한다.
'활동 > 크래프톤 정글' 카테고리의 다른 글
[크래프톤 정글] 크래프톤 정글 7기를 끝마치며.. (0) | 2025.02.10 |
---|---|
[크래프톤 정글/Week 09] 키워드 정리 (2) | 2024.11.12 |
[크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 높은 우선순위 먼저 실행하기 ) (0) | 2024.11.08 |
[크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 정리 ) (1) | 2024.11.07 |
[크래프톤 정글/Week 08] 키워드 정리 (3) | 2024.11.05 |