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