메모리 접근 권한
: 메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한
: 읽기(read), 쓰기(write), 실행(execute), 추가(append) 권한이 있다
프로세스의 영역별 메모리 접근 권한
코드 영역: 자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가진다.
데이터 영역: 데이터는 크게 읽거나 쓸 수 있는 데이터와 읽기만 가능한 데이터로 나눌 수 있다. (일반적인 변수는 읽거나 쓸 수 있으므로 읽기 및 쓰기 권한을 가지고, 상수로 선언한 변수는 읽기 권한만을 가진다)
페이징 기법에서 메모리 접근 권한까지 고려한 페이지 테이블
- 페이지마다 접근 권한이 다르기 때문에 페이지 테이블의 모든 행에는 메모리 접근 권한과 관련된 권한 비트가 추가된다.
- 메모리 관리자는 주소 변환이 이루어질 때마다 페이지 테이블의 권한 비트를 이용하여 유용한 접근인지 아닌지 확인한다.
- 페이지 테이블에 권한 비트가 추가되면 페이지 테이블의 크기가 커지는 문제가 있으며, 이 문제를 완화하기 위해서는 반복되는 권한 비트를 줄여야 한다.
세그먼테이션-페이징 혼용 기법
: 페이징 테이블과 세그먼테이션 테이블을 혼합하여 사용하는 기법
주소 변환 과정
1. 사용자가 어떤 주소에 있는 데이터를 요청하면 해당 주소가 몇 번째 세그먼트의 몇 번째 페이지로부터 얼마나 떨어져 있는지 계산하여 가상주소 VA=<S, P, D> 를 구한다.
2. 세그먼테이션 테이블의 해당 세그먼트 번호로 가서 자신의 영역을 벗어나는 불법 접근이 아닌지, 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인한다.
(만약 권한이 없는 페이지에 접근하거나 자신에게 주어진 메모리 영역을 벗어나면 세그먼테이션 오류(트랩)을 발생시켜 프로세스를 강제 종료하고, 그렇지 않으면 연결된 페이지 테이블로 간다)
3. 페이지 테이블에서 해당 페이지가 어느 프레임에 저장되었는지를 찾는다.
4. 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 쓴다.
* 쉽게 배우는 운영체제 책 참고
댓글