* 참고 자료 : 운영체제론 한빛아카데미
가상메모리 1 :
https://cow-kite24.tistory.com/125
가상메모리 2 (페이징) :
https://cow-kite24.tistory.com/126
4. 세그먼테이션
세그먼테이션에서는 프로그램의 데이터와 명령어가 세그먼트라는 블록으로 나누어진다. 각 세그먼트는 연속된 위치로 구성된다. 그러나 세그먼트의 크기가 같아야 하거나 메인 메모리에서 서로 인접할 필요는 없다.
세그먼테이션이 페이징에 비해 지니는 장점은 물리적이기보다는 논리적인 개념이라는 점이다.
가상 메모리 세그먼테이션 시스템에서는 프로그램이 특정 시간 실행에 필요한 세그먼트만 메인 메모리에 유지해도 된다. 나머지 세그먼트들은 2차 저장소에 남을 수 있다. 만약 프로세스가 현재 메모리에 있지 않은 세그먼트를 참조하면 가상 시스템은 해당 세그먼트를 2차 저장소에서 불러와야 한다.
가상 메모리 세그먼테이션의 주소
- 순서 쌍 v = (s,d)
- s : 참조 하는 항목이 존재하는 가상 메모리에서 세그먼트 번호
- d : 세그먼트 s에서 참조하는 항목이 있는 곳까지의 변위
4-1) 직접 매핑을 사용한 세그먼테이션 주소 변환
- 시스템은 세그먼트 번호 s를 세그먼트 맵 테이블 시작점 레지스터에 있는 세그먼트 맵 테이블의 기준 주소 값 b에 더함.
- 덧셈 결과로 얻은 b+s는 세그먼트의 테이블 맵 엔트리의 위치를 가리킴.
- 시스템은 이 위치에 있는 주소(s')에 변위 d를 더해 참조하는 실제 메모리 주소 r을 획득.
부재 세그먼트 폴트
- 해당 세그먼트가 메모리에 없으면 발생 -> 운영체제가 제어로 바뀌고 2차 저장소에서 로드
세그먼트 오버 플로우 예외
- 변위가 세그먼트 길이를 초과하면 발생 -> 해당 프로세스 종료
세그먼트 보호 예외
-변위가 세그먼트 길이 안에 있으면 보호 비트를 체크해 허용된 연산인지 확인
- 허용된 연산이 아니면 보호 예외 발생 -> 해당 프로세스 종료
- 예를 들어 보호 비트가 '읽기전용'으로 표시하면 어떤 프로세스도 해당 세그먼트를 수정할 수 없음
4-2) 세그먼테이션 시스템에서의 공유
두 프로세스의 세그먼트 테이블 엔트리가 메인 메모리의 동일한 세그먼트를 가리키면 공유
4-3) 세그먼테이션 시스템에서의 보호와 접근 제어
세그먼테이션은 프로그램 모듈화를 높이고 불연속 할당과 공유를 통해 메모리 활용도를 높인다. -> 그러나 시스템이 복잡해진다. 예로 한 쌍의 경계 레지스터 만으로는 보호에 충분하지 않다.
메모리 보호 키
- 세그먼테이션 시스템에서 메모리 보호 메커니즘을 구현하는 방법으로 해당 세그먼트의 보호 키가 같아야 접근 가능
- 특권 명령으로만 조작 가능
- 운영체제는 이 키를 엄격하게 제어 : 문맥전환이 일어날 때 보호 키를 프로세서 레지스터에 로드
접근 제어 모드
각 프로세스에 세그먼트들에 대한 특정한 접근 권한 부여
5. 세그먼테이션 / 페이징 시스템
페이징과 세그먼테이션을 조합하는 기술로 두 가지 가상 메모리 구성 기술의 이점을 제공한다.
가상 메모리 주소 : v = (s, p, d)
5-1) 세그먼테이션 / 페이징 시스템에서의 동적 주소 변환
주소 변환 과정
- 가상주소 v = (s, p, d) 참조
- (s, p)를 찾으려고 연관 검색 (가장 최근에 참조한 페이지들은 연관 메모리에 포함)
- TLB가 (s, p)를 포함하면 p' 반환 -> r=p'+d
- TLB가 (s, p)를 포함하지 않으면 직접 맵핑 수행
--> 직접 맵핑
- 세그먼트 맵 테이블 기준주소 b와 세그먼트 번호 s를 더함, 즉 b+s (=c 라 하자.)
- 주소 c에 있는 엔트리는 s의 기준주소 s'
- 페이지 번호 p와 기준주소 s'을 더함, 즉 p + s' (=e 라 하자.)
- 주소 e에 있는 엔트리는 가상 페이지 p에 대응하는 페이지 프레임 번호 p'
- 실제 주소 r = (p', d)
'OS > 운영체제론' 카테고리의 다른 글
[운영체제론] 가상메모리 2 (페이징) / 2021.12.07 (0) | 2021.12.07 |
---|---|
[운영체제론] 가상메모리 1 / 2021.12.07 (0) | 2021.12.07 |
[운영체제론] 고정 파티션 멀티프로그래밍 / 2021.12.07 (0) | 2021.12.07 |
[운영체제론] 단일 사용자 연속 메모리 할당 / 2021.12.07 (0) | 2021.12.07 |
[운영체제론] 스케줄링 알고리즘 2 / 2021.12.06 (0) | 2021.12.06 |