프로그래밍/운영체제
[운영체제] Memory Management3 - Segmentation
kwon92
2020. 6. 20. 13:51
code, data ,stack 부분이 하나씩의 세그먼트로 정의됨
세그먼트 테이블 을 둔다.
CPU가 논리주소를 주면 2 부분으로 나눈다.
s 세그번트 번호와 d 오프셋
세그먼트 테이블에 시작위치는 레지스터가 가지고있다
거기서부터 세그먼트 번호 만큼 떨어진 곳으로 가보면 이 세그먼트가 몇번지 떨어져있는지 값을 가지고있음
페이징과는 다르게 엔트리에 2가지 정보 가지고있다.
시작 외에 limit 을 가지고 있다.
세그먼트 의 길이를 가지고있다.
- 페이징은 다 똑같은 크기였지만 세그먼트는 길이가 다를수있기때문에
세그먼트의 크기를 알기위해 길이를 가지고 있다.
세그먼트의 길이가 동일하지 않아서 가변 분할 방식에서와 동일한 문제점..
Segmentation with Paging
이 기법은 세그먼트 하나가 페이지로 나눠지고 메모리에 페이지 단위로 올라가게 되는 기법이다.
먼저 세그먼트에 대한 주소 변환을 한다.
세그먼트 테이블에서는 페이지 테이블의 시작위치를 저장한다.
그러면 각 세그먼트 당 페이지 테이블이 생기게 된다.