공부한 기록/운영체제

운영체제(7) - 페이징, 세그먼테이션, 페이지화된 세그먼테이션

YongE 2022. 11. 21. 18:38

불연속 메모리 할당

페이징 Paging

작업을 메모리관리장치(MMU)에서 작업크기가 동일한 페이지에 할당하여 처리하는 불연속 메모리 할당 방법이다.

 

  1. 빈 프레임에 어떤 페이지든 적재시킬 수 있기에 메모리의 효율적인 사용.
  2. 프레임 간의 외부단편화가 발생하지 않는다.
  3. 운영체제 선에서는 페이지 관리 부담이 크다.
  4. 프로세스의 필요공간이 페이지와 맞지 않으면 내부단편화가 발생할 수 있다.

페이징 시스템의 구조

논리적 주소가 전해지면 페이지 테이블에서 논리적 주소의 페이지번호(p)를 보고 알맞는 페이지를 할당한다. 그리고 실제 메모리의 위치인 프레임(f)의 값을 물리적 주소에 저장하고, 논리적 주소에 있던 오프셋(d)값을 물리적 주소에 넘긴다. 비로소 메모리에 이를 할당하면 된다.

페이지 테이블 항목의 구조

각 테이블 항목마다 논리적 페이지 주소와 프레임번호가 있다는 것을 알 것이다. 다만 개별 페이지 테이블 항목은 메모리에 관한 내용의 비트도 나뉘어 있다.

 

페이지 테이블은 전용 레지스터를 사용해서 관리할 수 있다. 대두분의 페이지 테이블은 매우 커서 레지스터로 구현하기 부적합하다. 그렇기에 대개 페이지 테이블은 메모리에 두고 페이지 테이블 기준 레지스터(PTBR)로 페이지 테이블을 다룬다. 이는 레지스터 값하나만 바꾸면 되니 문맥교환시간을 감소시킨다. 다만, 메모리 액세스 시간이 문제다. 페이지테이블 항목과 워드를 위한 이 액세스로 인해 속도가 느려진다. 이는 연관 레지스터나 변환 우선참조 버퍼(TLB)를 이용해서 해결가능하다.

 

연관 레지스터 매핑

연관 레지스터를 이용해서 논리적 주소를 물리적으로 변환할 수 있다.

  • 직접 매핑 direct mapping : 메모리나 캐시에 완전한 페이지 테이블을 유지하는 것이다. 레지스터만 변경해도 페이지 테이블 변경이 가능하다만 사용자 메모리 위치에 액세스하는 데 시간이 소요된다. 메모리를 2번 참조하는 격이기 때문이다.
  • 연관 매핑 associative mapping : 직접 연관 결합 매핑처럼 하드웨어를 이용한다. 큰 연관 레지스터가 필요하면 이 레지스터는 키와 값으로 구성된다. 논리적 주소는 페이지 번호와 이에 대응하는 프레임 번호가 있는 집합으로 표현한다.
  • 연관 직접 매핑을 결합한 주소변환 : 이 둘을 혼용한 방법이다. 연관 매핑 이후 찾는 프레임번호가 없으면 직접 매핑을 실행한다. 

 

 

페이징 시스템에서는 '공유 페이지'가 존재한다. 오직 읽기만 가능하고 수정은 불가능하다. 

 

 

페이지 테이블 항목도 비트로 나뉠 수 있다.

 

 

세그먼테이션 segmentation

크기가 변할 수 있는 세그먼트로 나누는 것. 불연속 가변분할이다.

세그먼테이션의 메모리 할당

세그먼트 테이블의 항목은 세그먼트가 적재될 메모리의 시작주소를 알려 주고, 잘못된 주소(경계 이상의 메모리 주소)를 사용하지 못하도록 세그먼트 길이도 함께 있다.

세그먼테이션의 예

 

페이지화된 세그먼테이션

페이징과 세그먼테이션의 장단점이 취합됐다. 외부단편화 문제를 제거하면서 할당과정 쉽게 해결 가능하다. 

페이지화된 세그먼트의 논리적 구조
시스템 구조

융통성 있는 보호와 내부단편화가 없고, 세그먼트 대치가 쉽기에 오버헤드가 적다. 그러나, 크기가 가변한 세그먼트는 클 수 있기에 외부단편화가 발생할 수 있다. 이에 파생해 크기가 동일하지 않을 수 있기에 스와핑에 적합하지 않다.

728x90
반응형