본문 바로가기
Lecture/OS

세그먼테이션 기법

by YUNZEE 2023. 11. 15.
728x90
변환 색인 버퍼

가상 주소를 물리 주소로 변환하는 작업은 CPU안에 있는 메모리 관리 유닛 MMU이 담당한다. 가상 주소를 물리 주소로 변환하려면 메모리에 두 번 접근해야 한다.

주소 변환을 위한 두 번의 물리 메모리 접근

 

1. 메모리 관리 유닛이 가상 주소를 받아 물리 주소로 변환하려면 페이지 테이블이 필요하다. 페이지 테이블은 메모리에 있기 때문에 MMU는 메모리에 있는 페이지 테이블에 접근하여 물리 주소로 변환한다.

2. 변환된 물리 주소를 이용하여 필요한 데이터를 가져온다.

 

CPU안에 있는 레지스터나  캐시에 접근할 때보다 물리 메모리에 접근할 때 시간이 몇 배 이상 더 걸린다. 따라서 가상 주소를 물리 주소로 변환한 후 데이터를 가져오기 위하여 메모리에 두 번이나 접근하는 방식은 CPU 성능을 떨어뜨린다.

 

이러한 문제를 개선하기 위하여 페이지 테이블의 일부를 CPU안쪽으로 가져오는데, 이를 변환 색인 버퍼 TLB: Translation Look - ahead Buffer라고 한다. 변환 색인 버퍼는 캐시된 페이지 테이블이다.

 

원하는 페이지 번호가 변환 색인 버퍼에 있으면 TLB hit 라고 하고, 곧바로 물리 주소로 변환된다. 원하는 페이지 번호가 없으면 TLB miss라고 하며, 메모리에 있는 페이지 테이블을 사용하여 프레임 번호로 변환한다.

 

변환 색인 버퍼를 이용한 정형화된 주소 변환

 

물리 주소로 변환하는 경우 변환 색인 버퍼를 검색하여 원하는 페이지 번호가 있는지 확인한다. 변환 색인 버퍼를 검색할 때는 하드웨어적으로 병렬 검색이 가능하도록 구성한다. 즉, 한 번에 모든 행의 페이지를 검색하여 원하는 데이터가 있는지 확인할 수 있다. (캐시와 유사한 방법)

 

역 페이지 테이블

역 페이지 테이블 invert page table방식은 기존 페이징 방식과는 반대로 페이지 테이블을 구성한다. 이 방식은 물리 메모리의 프레임 번호를 기준으로 테이블을 구성하는 것으로 물리 메모리의 프레임에 어떤 프로세스의 어떤 페이지가 올라와 있는지를 표시한다.

 

역페이지 테이블의 가장 큰 특징은 프로세스의 수와 상관없이 테이블이 하나만 존재한다는 것이다.

 

다단계 페이지 테이블 

브트 수가 16, 32, 64bit로 발전함에 따라 사용할 수 있는 주소 공간이 기하급수적으로 늘어났다. 주소 공간이 늘어나 페이지 테이블의 크기가 늘어나면 한꺼번에 관리하기가 힘들다. 이러한 문제를 해결하기 위해 만든 방식이 다단계 페이지 테이블이다.

 

2단계 페이지 테이블의 주소 변환

2단계 페이지 테이블 방식의 가상 주소인 VA = <P1, P2, D>에서 P1의 1차 페이지 테이블에는 해당 2차 페이지 테이블의 시작 주소 a가 있다. 물리 메로리의 a위치에서 p2에 해당하는 위치에는 프레임 번호(F)가 있다.

가상 주소인 VA=<P1, P2, D>는 2단계를 거쳐 물리 주소인 PA=<F, D>로 바뀐다.

 

세그먼테이션 기법의 구현

세그먼테이션 테이블에는 세그먼트의 크기를 나타내는 limit와 물리 메모리의 시작 주소를 나타내는 address가 있다.

세그먼트의 크기 정보에는 크기를 뜻하는 size대신 제한을 뜻하는 limit를 사용한다.

 

세그먼테이션 기법의 주소 변환

세그먼테이션 기법에서는 가상 주소를 VA = <S,D>로 표현한다. S는 세그먼트 번호 segment number, D는 세그먼트 시작 지점에서 해당 주소까지의 거리 distance를 의미한다.

 

A의 크기보다 더 큰 주소에 사용자가 접근하려 하면 메모리 관리자는 해당 프로세스를 강제 종료한다. 이때 발생하는 오류를 트랩trap이라고 하는데 자신의 영역을 벗어나는 주소에 접근하거나 숫자를 0으로 나누는 것과 같이 사용자가 의도치 않게 일으키는 인터럽트를 말한다. 트랩이 발생하면 운영체제는 사용자에게 세그먼테이션 오류 segmentation fault 메시지를 보낸다.(트랩에 메시지를 세그먼테이션이라 한다.)

 

퀴즈

1. 가상 주소를 물리 주소로 변환하는 작업은 CPU안에 있는 어떤 것이 담당하는가?

2. 가상 주소를 물리 주소로 변환한 후 데이터를 가져오기 위하여 메모리에 두 번이나 접근하는 방식은 CPU 성능을 떨어뜨린다.  이러한 문제를 개선하기 위하여 페이지 테이블의 일부를 CPU안쪽으로 가져오는데, 이를 무엇이라고 하는가?

3. 원하는 페이지 번호가 변환 색인 버퍼에 있으면 무엇이라 하는가?

4.  원하는 페이지 번호가 없으면 무엇이라 하는가?

5. 세그먼테이션 테이블에는 세그먼트의 크기를 나타내는 것을 무엇이라 하는가?

6. 물리 메모리의 시작 주소를 나타내는 것을 무엇이라 하는가?

7. 세그먼테이션 기법에서는 가상 주소를 VA = <S, D>로 표현한다. 이때 S와 D는 어떤 의미를 갖고 있는가?

728x90

'Lecture > OS' 카테고리의 다른 글

페이지 교체 알고리즘  (2) 2023.11.22
요구 페이징  (0) 2023.11.16
페이징 기법  (0) 2023.11.14
가상 메모리  (2) 2023.11.09
단일 프로그래밍 환경의 메모리 할당  (0) 2023.11.08