728x90
개인 복습
가상 메모리(Virtual Memory)
- 물리 메모리 크기의 한계를 극복하기 위해서 나온 기술.
- 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 가상 메모리를 사용한다.
요구 페이징(Demanding Paging)
- 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 올린다. 이러한 프로세스의 일부분은 페이지 단위일 수도 있고, 세그먼트 단위일 수도 있지만 현재 대부분은 페이지 단위를 사용한다.
페이지 부재(Page Fault)
- 페이지 부재는 CPU가 접근하려는 페이지가 메모리에 없는 경우이다.
- 즉, 페이지 테이블의 valid bit 값이 0인 경우이다.
페이지 테이블(Page Table)
- VPN을 PFN으로 매핑할 때, 매핑해주는 표를 Page Table이라고 한다.
- 각각의 프로세스는 자신만의 Page Table을 독립적으로 가지고 있으며, 각 프로세스의 Page Table이 저장되어 있는 주소를 Page Table Based Register가 저장하고 있다.
- Page Table은 OS로부터 관리되고, MMU가 접근해서 읽는다. 이 때, 각 Page Table의 원소 하나하나를 Page Table Entry(PTE)라고 한다.
TLB(Translation Look-aside Buffer)
- 페이지 테이블은 메인 메모리에 존재해서 CPU는 메인 메모리에 최소 2번은 접근해야 원하는 데이터를 얻을 수 있다.
- 페이지 테이블에 접근
- 페이지 테이블을 기반으로 실제 메모리로 접근
- 이러한 접근을 줄이고자 TLB를 사용한다.
- 가상 메모리 주소를 물리적 주소로 변환하는 속도를 높이기 위해 사용하는 캐시
- CPU가 가상 주소로 메모리에 접근하려고 할 때 우선 TLB에 접근하여 가상 주소에 해당하는 물리주소를 찾고 TLB에 매핑이 존재하지 않으면 MMU가 페이지 테이블에서 해당되는 물리 주소로 변환한 후 메모리에 접근한다.
- 별도의 칩으로 만들어서 사용한다.
Lazy Loading
- 효율적인 자원 관리와 시스템 성능 최적화를 위한 기법이다.
- 프로그램이 실제로 해당 데이터를 필요로 할 때까지 데이터의 로딩을 지연시키는 기법이다. 이는 주로 메모리 관리에 사용되며, 프로그램이 시작할 때 필요한 모든 데이터를 메모리에 즉시 로드하지 않고, 필요한 순간 해당 부분을 로드한다.
Page의 종류
- 페이지는 크게 두 분류로 나뉜다.
- 익명 페이지(Anonymous page)
- 파일 - 기반 페이지(File-backed page)
Anonymous page
- 파일과 연결되지 않은 메모리 페이지다.
- 프로세스의 동적 할당이나 스택, 힙 등에 사용된다.
- 익명 페이지는 처음에 실제 물리 메모리와 매핑되지 않고, 가상 메모리 주소 공간만 할당받는다.
- 프로세스가 익명 페이지에 처음 액세스할 때, 페이지 폴트(page fault)가 발생하고 운영체제는 실제 물리 메모리를 할당한다.
- 익명 페이지는 일반적으로 0으로 초기화되며, 프로세스가 데이터를 쓰면 해당 데이터로 업데이트 된다.
- 익명 페이지는 스왑 공간에 페이지 아웃 될 수 있다.
File-backed page
- 파일 기반 페이지는 파일과 연결된 메모리 페이지다.
- 실행 파일, 공유 라이브러리, 매핑된 파일 등을 메모리에 로드할 때 사용된다.
- 파일 기반 페이지는 파일의 내용을 메모리에 매핑한다.
- 처음 액세스 시 페이지 폴트가 발생하면, 운영체제는 파일에서 해당 페이지의 내용을 읽어와 물리 메모리에 로드한다.
- 여러 프로세스가 동일한 파일을 매핑하면 파일 기반 페이지를 공유할 수 있다.
- 파일 기반 페이지는 일반적으로 읽기 전용이며, 수정 시 복사 방식(Copy-on-Write)을 사용하여 프로세스 간 격리를 유지한다.
- 파일 기반 페이지는 파일 시스템 캐시(page cache)를 통해 관리되며, 메모리 부족 시 디스크로 페이지 아웃될 수 있다.
스왑 디스크(Swap Disk)
- 메모리 관리를 위해 사용되는 디스크 공간의 일부이다.
- 물리 메모리의 부족 문제를 해결하고 시스템의 성능을 향상 시키는 것이다.
- 물리 메모리가 부족할 때, 운영체제는 사용 중이지 않은 메모리 페이지를 스왑 디스크로 이동시켜 메모리 공간을 확보한다.
- 스왑 아웃(Swap Out)은 메모리 페이지를 스왑 디스크로 이동하는 과정을 말하며, 스왑 인(Swap In)은 스왑 디스크에서 메모리로 페이지를 다시 로드하는 과정을 말한다.
페이지 교체 정책(Page Replacement Policy)
- 메모리에 새로운 페이지를 할당해야 할 대 어떤 페이지를 교체할지 결정하는 정책이다.
- 페이지 교체 정책의 목적은 메모리 사용을 최적화하고 페이지 폴트 횟수를 최소화 하는 것이다.
FIFO(First-In, First-Out)
- 가장 먼저 메모리에 로드된 페이지를 가장 먼저 교체하는 정책이다.
- 구현이 간단하지만, 페이지의 사용 빈도를 고려하지 않는다.
LRU(Least Recently Used)
- 가장 오랫동안 사용되지 않는 페이지를 교체하는 정책이다.
- 페이지의 사용 시간을 기준으로 교체 대상을 선택한다.
- 일반적으로 우수한 성능을 보이지만 구현이 복잡하고, 오버헤드가 있을 수 있다.(페이지의 사용 시간을 추적해야 함으로)
LFU(Least Frequently Used)
- 사용 빈도가 가장 낮은 페이지를 교체하는 정책이다.
- 각 페이지의 사용 횟수를 추적하고, 사용 횟수가 가장 적은 페이지를 교체한다.
- 자주 사용되는 페이지를 메모리에 유지할 수 있지만, 사용 횟수 추적을 위한 오버헤드가 있다.
NRU(Not Recently Used)
- 최근에 사용되지 않은 페이지를 교체하는 정책의 근사 알고리즘이다.
- 각 페이지에 대한 액세스 비트와 수정 비트를 사용하여 교체 대상을 선택한다.
- LRU보다 구현이 간단하지만, LRU보다는 정확도가 떨어질 수 있다.
Clock
- 순환 버퍼와 유사한 개념을 사용하는 페이지 교체 정책이다.
- 페이지에 대한 액세스 비트를 사용하여 교체 대상을 선택한다.
직접 메모리 접근(Direct Memory Access, DMA)
- CPU를 거치지 않고, 메모리와 주변 장치 간의 데이터 전송을 수행하는 기술이다.
- DMA는 CPU의 개입 없이 메모리와 I/O 장치 사이에서 데이터를 직접 전송함으로써 CPU의 부하를 줄이고 시스템 성능을 향상 시킨다.
- CPU는 데이터 전송에 직접 관여하지 않으므로 다른 작업에 집중 할 수 있다.
728x90
'Study > TIL(Today I Learned)' 카테고리의 다른 글
24.05.28 복습 (0) | 2024.05.28 |
---|---|
24.05.27 점핏 취업캠프 (0) | 2024.05.28 |
24.05.25 나만무 (0) | 2024.05.26 |
24.05.24 나만무 (0) | 2024.05.24 |
24.05.23 나만무 (0) | 2024.05.24 |