8-4.[os] 세그먼테이션-페이징 혼용 기법
페이징 기법
- 장점: 물리 메모리를 같은 크기로 나누어 관리하기 때문에 메모리 관리가 수월
- 단점: 페이지 테이블의 크기가 크다
세그먼테이션 기법
- 장점: 페이지 테이블의 크기가 작다
- 단점: 물리 메모리의 외부 단편화로 인해 추가적인 관리가 불가피
메모리 접근 권한
- 읽기(read), 쓰기(write), 실행(execute), 추가(append)
메모리 제어 방식(access control modes)
- 추가 권한 = 쓰기 권한
- 추가 권한의 경우 해당 데이터의 마지막에 새로운 데이터를 추가하는 것이므로 항상 쓰기 권한이 동반되어야 한다
- 프로세스 = 코드영역 + 데이터 영역 + 스택 영역
- 코드 영역: 자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가진다
데이터 영역: 일반적인 변수 -> 읽기 및 쓰기 권한 / 상수 -> 읽기 권한만
메모리 접근 권한 검사: 가상 주소 -> 물리 주소로 주소 변환이 일어날 때마다 시행
만약 읽기만 가능한 메모리 영역에 쓰기를 하려고 하면 메모리 오류인 트랩이 발생
매핑 테이블에 메모리 접근 권한에 대한 정보를 갖고 있고, 주소 변환이 일어날 때마다 유용한 접근인지 아닌지 검사
세그먼테이션-페이징 혼용 기법의 도입
권한 비트 (right bit): 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트를 이용하여 유용한 접근인지 아닌지 확인
페이지로 분할된 가상주소 공간에서 서로 관련 있는 영역을 하나의 세그먼트로 묶어 세그먼테이션 테이블로 관리 하고, 세그먼트를 구성하는 페이지를 해당 페이지 테이블로 관리하는 방식
세그먼테이션 테이블은 페이지 테이블의 시작주소를 가진다
현재 대부분의 운영체제가 사용하는 방식
세그먼테이션-페이징 혼용 기법의 주소 변환
- 사용자 입장: 세그먼테이션 기법
- 메모리 관리자 입장: 페이징 기법
- 가상 주소는 VA=로 표현
- S: 세그먼트 번호
- P: 페이지 번호
D: 페이지의 처음 위치에서 해당 주소까지의 거리
(페이징 기법의 가상 주소 VA=에서 세그먼토 번호 S만 추가됨)
세그먼테이션-페이징 혼용 기법: 가상주소를 물리 주소로 변환하는 과정
- 사용자가 어떤 주소에 있는 데이터를 요청 -> 해당주소가 몇번째 세그먼트의 몇 번째 페이지로부터 얼마나 떨어져 있는지 계산 -> 가상주소 VA=를구한다
세그먼테이션 테이블의 해당 세그먼트 번호로 가서 주어진 메모리 영역을 벗어났는지, 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인 -> 불법이면: 세그먼테이션 오류(트랩)를 발생시켜 프로세스를 강제종료 / 정상이면: 연결된 페이지 테이블로 간다
페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지 찾는다. 만약 물리 메모리에 프레임이 있다면 메모리에 바로 접근하고, 없다면 스왑 영역에 가서 해당 페이지를 물리 메모리로 가져온다.
물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 쓴다.
물리 주소 요청 -> 세그먼테이션 테이블 -> 오류 확인, 접근 권한 확인 -> 페이지 테이블 -> 프레임 -> 실패: 스왑 영역