페이징 시스템
- 개념
- 크기가 동일한 페이지로 가상 주소 공간과 이에 매칭하는 물리 주소 공간을 관리
- 페이지 번호를 기반으로 가상 주소/물리 주소 매핑 정보를 기록/사용
- 프로세스의 PCB에 Page Tbale 구조체를 가리키는 주소가 들어 있음.
- Page Table에는 가상 주소와 물리 주소간 매핑 정보가 있음.
페이지 시스템 구조
- page 또는 page frame: 고정된 크기의 block (4kb)
- paging system
- 가상 주소 v = (p,d)
- p : 가상 메모리 페이지
- d : p 엔에서 참조하는 위치(변위)
- 가상 주소 v = (p,d)
- 페이지 크기가 4kb면
- 가상 주소의 0비트에서 11비트가 변위 d를 나타내고,
- 12비트 이상이 페이지 번호가 될 수 있음
다중 단계 페이징 시스템
- 페이징 정보를 단계를 나누어 생성
- 필요없는 페이지는 생성하지 않으면, 공간 절약 가능
MMU와 TLB
MMU가 물리 주소를 확인하기 위해서는 메모리를 갔다와야 하는데 메모리 접근에 소요되는 시간은 레지스터에서 확인하는 시간보다 길다. 따라서 자주 확인할 수록 속도는 느려지게 되는데 TLB라는 공간을 따로 두어서 한번 물리주소로 변환한 매칭 정보를 저장한다. 다음에 같은 가상주소로 접근하려 할때 TLB 에서 매칭정보를 확인하고 바로 메모리에 물리주소로 접근하게 한다.
TLB(Translation Lookaside Buffer): 페이지 정보 캐쉬
페이징 시스템과 공유 메모리
- 프로세스간 동일한 물리 주소를 가리킬 수 있다. (공간 절약, 메모리 절약)
- → 프로세스를 포크 하는경우 공유하는 영역을 메모리에 올릴때 페이지 테이블에서 같은 물리 주소를 가르키게 하면 물리 공간을 별도로 갇지 않고 공유 할 수 있다
- 물리 주소 데이터 변경시에 복사 하도록 하면 처리 속도와 저장 공간 면에서 이득이 있다.
- 커널 영역에 정보또한 별도에 물리 주소로 관리하는 것이 아니라 하나의 물리 주소를 공유하도록 하면 저장공간을 낭비하지 않아도 된다.
요구 페이징(Demand Paging)
- 프로세스 모든 데이터를 메모리로 적재하지 않고, 실행 중 필요한 시점에서만 메모리로 적재
페이지 폴트(Page fault)
- 어떤 페이지가 실제 물리 메모리에 없을 때 일어나는 인터럽트
- 운영체제가 page fault가 일어나면, 해당 페이지를 물리 메모리에 올림
- 페이지 폴트가 자주 일어나면 실행되기 전에, 해당 페이지를 물리 메모리에 올려야 함 → 시간이 오래걸림
- 페이지 폴트가 안 일어나게 하려면?
- 향후 실행/ 참조될 코드/데이터를 미리 물리 메모리에 올리면 됨. → 예측하는 것이기에 어려운 영역, 별도의 알고리즘 필요
페이지 교체 정책
- FIFO : 가장 먼저 들어온 페이지를 내림
- OPT 최적 페이지 알고리즘 : 앞으로 가장 오랫동안 사용하지 않을 페이지를 내리자
- → 예층 하는 것이기에 일반 OS 구현 불가능
- LRU : 가장 오래전에 사용된 페이지를 교체
- → 메모리의 지역성 : 보통 인접한 메모리에서 사용이 많이 되니까 오래전에 사용된것은 당분간은 사용 안할것이다라고 예측해서 OPT 구현
- LFU : 가장 적게 사용된 페이지를 내림.
- NUR: 각 페이지마다 참조비트 (R), 수정비트 (M) 을 둠.
- (0,0) (0,1) (1,0) (1,1) 순으로 페이지 교체
스레싱
반복적으로 페이지 폴트가 발생해서, 과도하게 페이지 교체 작업이 일어나, 실제로는 아무일도 하지 못하는 상황
댓글