[기술면접] 운영체제 : 메모리 불연속 할당 방식 - 페이징

Alice·2023년 9월 13일
0

앞서 포스팅한 메모리 연속 할당 방식에는 여러가지 효율성 차원의 문제점이 있다. 내부 조각 문제와 외부 조각 문제가 바로 그것이다. 공간 효율성을 최적화시키기 위해서 메모리 불연속 할당 방식이 사용되고, 대표적인 방식이 페이징 방식이다. 다만 마지막 페이지에서는 내부 조각 문제가 발생할 수 있다고한다.

페이징

적재하고자 하는 프로세스의 주소공간을 특정 크기의 페이지 단위로 분할한다. 마찬가지로 물리메모리도 같은 크기프레임 으로 분할한다. 프로세스의 페이지를 물리메모리의 프레임에 적재시키는 방식을 페이징 방식이라 명칭한다.


주소 바인딩

페이징 방식에서도 주소 바인딩을 통해 물리메모리에 접근할 수 있다. CPU 가 참조하는 논리주소를 페이지 번호(p) 와 오프셋(d) 으로 사용할 수 있는것이다. 그렇게 페이지 테이블을 탐색하여 페이지 번호에 해당되는 프레임 번호를 얻을 수 있다.


페이지 테이블과 TLB

페이지 테이블은 물리메모리 내부에 존재한다. 각각의 프로세스는 자신의 페이지 테이블을 가진다. 페이지 테이블에 접근하기 위해서 페이지 테이블 기준 레지스터페이지 테이블 길이 레지스터를 사용한다. 이러한 주소 바인딩 과정에서 총 2번의 접근이 필요하다.

  1. 페이지 테이블에 접근하여 해당하는 물리주소를 알아내는 과정
  2. 알아낸 물리주소를 사용하여 물리메모리에 접근하는 과정

이 과정에서 오버헤드가 발생한다. 이를 위해 존재하는 것이 TLB 레지스터이다.


TLB 레지스터는 페이지 테이블 엔트리를 저장하는 캐시다. 비교적 자주 참조되는 페이지 테이블 엔트리를 TLB 에 저장한다. 다만, 가격이 비싸기에 용량이 크지 않아서 오래 사용되지 않는 엔트리는 제거하고 새로운 엔트리를 받는다.

페이지 테이블과 다르게 모든 엔트리가 TLB에 저장되어있는게 아니라서 페이지 인덱스를 통해 곧바로 엔트리를 찾는 방식의 탐색이 불가능하다. 그렇다고 TLB 엔트리를 모두 탐색하는 것은 시간적인 오버헤드가 크기 때문에, 연관 레지스터를 활용한 병렬탐색을 지원한다.


따라서 페이징 방식의 주소 바인딩 과정은 TLB Hit 상황과 TLB Miss 상황으로 나뉜다. Hit 상황에서는 곧바로 TLB 엔트리를 통해 프레임 정보를 얻을 수 있다. 하지만 Miss 상황에서는 다시 페이지 테이블로 돌아가 엔트리를 통해 프레임 정보를 얻어야한다. 만약 페이지 테이블에도 해당 정보가 없다면, 페이지 폴트 루틴을 실행해야한다. 이것은 다음에 다루겠다.




다양한 페이징 방식


계층적 페이징

계층적 페이징을 사용하는 이유는 페이지 테이블의 용량을 줄이기위해서다. 사용하는 프로세스의 수가 증가할수록 페이지 테이블에 사용되는 메모리양이 많아진다. 계층적 페이지 방식에서는 외부 페이지 테이블과 내부 페이지 테이블을 만들어 사용되지 않는 주소 공간에 대해서는 외부 페이지 테이블 값을 NULL 로 설정하여 해당되는 내부 페이지 테이블을 만들지 않는 방식으로 메모리를 절약할 수 있다.


역 페이징

역페이징 방식은 프로세스가 각자의 페이지 테이블을 가지지 않는다. 반대로 물리 메모리가 단 하나의 페이지 테이블을 가지는 방식이다. 해당 페이지 테이블은 프로세스의 ID, 프로세스의 페이지 번호 등의 정보를 가진다. TLB 의 경우와 비슷한 논리로 단순한 순차 탐색을 하는 경우 시간적인 오버헤드가 크게 발생하고, 연관 레지스터를 사용한 병렬 탐색을 제공하고있다. 단 하나의 페이지 테이블을 사용하기 때문에 계층적 페이징과 마찬가지로 페이지 테이블 공간을 절약할 수 있다.




페이징 방식의 메모리 보호 제공

페이징 방식에서 메모리 보호를 제공하는 방식은 보호 비트유효-무효 비트 의 제공이다. 보호 비트는 어떤 방식으로 페이지에 접근할 수 있는지를 체크하는 비트다. 읽기/쓰기/실행 등의 접근이 이에 해당한다. 유효-무효 비트는 해당 페이지가 프레임에 적재되어있는지의 유무를 알려주는 비트다. 무효 상황인 경우 페이지가 프레임에 적재되어있지 않거나, 스왑 영역에 적재되어 사용되지 않는 상황임을 알 수 있다.

profile
SSAFY 11th

0개의 댓글