운영체제 7-4 페이지드 세그멘테이션

이창훈·2022년 4월 29일
0

운영체제스터디

목록 보기
18/19

페이지드 세그멘테이션 기법을 알아보자

페이지드 세그멘테이션는 세그멘테이션과 페이징의 장점을 취한 방식이다.

세그멘테이션은 가변 분할 방식이라서 코드 영역, 데이터 영역, 스택 영역, 힙 영역을 세그먼트로 나눠서 관리할 수 있다. 때문에 다른 프로세스와 공유하기도 편하고 각 영역에 대한 메모리 접근 보호를 하기 쉽다.

페이징은 고정 분할 방식으로 메모리를 효율적으로 관리 할 수 있다.

메모리 접근권한에 대해서 알아보자.

메모리 접근 권한은 메모리의 특정 번지에 부여된 권한으로 읽기(Read), 쓰기(Write), 실행(Execute) 세 가지가 있다.

프로세스는 코드 영역, 데이터 영역, 스택 영역, 힙 영역이 있는데 각 영역마다 접근 권한이 있다.

코드 영역은 프로그램 그 자체이므로 수정되면 안되기 때문에 읽기와 실행권한만 있다.

데이터 영역은 일반변수, 전역변수, 상수로 선언한 변수가 저장되기 때문에 읽기 권한이 있고 쓰기 권한은 있거나 없거나 이다. 실행권한은 없다.

스택과 힙영역은 읽기, 쓰기 권한은 있고 실행권한은 없다.

메모리 접근 권한에 대한 검사는 가상주소에서 물리주소로 변환될 때 마다 일어나는데 만약 권한을 위반하면 에러를 발생시킨다.

이제 페이지드 세그멘테이션에 대해서 자세히 알아보자

세그멘테이션 기법에서 세그멘테이션 테이블은 Base Address와 Bound Address로 구성되어 있다.

페이징 기법에서 페이지 테이블은 프레임번호로 구성되어 있다.

이제 이 둘을 혼합해 페이지드 세그멘테이션으로 만들어 보겠다.

페이지드 세그멘테이션 기법에선 세그멘테이션 테이블에 권한 비트를 추가한다.

그리고 Base Address는 페이지 넘버로 바뀌고 Bound Address는 이 세그먼트의 페이지 개수로 바뀐다.

각각의 역할은 이름만 달라졌을 뿐 본질적으로 달라진건 없다.

만약 가상주소가 들어오면 가상주소를 이요해 몇 번 세그먼트인지 알아낸다.

그리고 해당 세그먼트가 메모리 접근 권한을 위반하는지 검사한다.

접근 권한을 위반했으면 프로세스를 종료시키고 위반하지 않으면 페이지 넘버와 페이지 개수를 가져온다.

이제 페이지 넘버로 페이지 테이블에 접근해서 프레임 번호를 가져오고 물리 메모리 내에 해당 프레임에 접근해서 그 위치에서 페이지 개수를 더해 물리 주소를 더한다.

만약 물리 메모리에 해당 프레임이 없다면 스왑영역에서 물리메모리로로 가져온다.

페이지드 세그멘테이션의 단점은 물리메모리에 접근하기 위해서 메모리에 접근을 두 번해야 된다는 것이다.

첫 번째는 세그멘테이션 테이블을 참조할 때고 두 번째는 페이지 테이블을 참조할 떄 일어난다.

이런 단점 때문에 현대 운영체제는 페이징과 페이지드 세그멘테이션 기법을 적절히 섞어서 사용한다.

profile
실패를 두려워하지 않고 배우고 기록하여 내일의 밑거름 삼아 다음 단계로 성장하겠습니다.

0개의 댓글