[OSTEP] Virtualization) 16. Segmentation

0

OSTEP 운영체제

목록 보기
11/19
post-thumbnail

[OSTEP] 16. Segmentation

이 포스팅은 <<Operating Systems: Three Easy Pieces>>, Remzi H. Arpaci-Dusseau & Andrea C. Arpaci-Dusseau을 읽고 개인 학습용으로 정리한 글입니다.

Ch16. 세그멘테이션

베이스와 바운드 레지스터 방식

  • 스택과 힙 사이 공간 사용되지 않더라도 주소 공간을 물리 베모리에 재배치할 때 물리 메모리를 차지한다
    -> 메모리 낭비가 심하다

  • 또한, 주소 공간이 물리 메모리보다 큰 경우 실행이 매우 어렵다

1. 세그멘테이션: 베이스/바운드(base/bound)의 일반화

세그멘테이션(segmentation)

  • MMU안에 주소 공간의 논리적인 세그멘트(segment)마다 베이스와 바운드 쌍 존재

  • 세그멘트: 특정 길이를 가지는 연속적인 주소 공간
    -> 주소 공간에는 세 종류의 세그멘트 존재: 코드, 스택, 힙

  • 세그멘테이션을 사용하면 운영체제는 각 세그멘트를 물리 메모리의 각기 다른 위치에 배치 가능

  • 사용되지 않는 가상의 주소공간이 물리 메모리를 차지하는 것 방지

  • 사용 중인 메모리만 물리 공간이 할당된다
    -> 사용되지 않은 영역이 많은 대형 주소 공간(=sparse address space) 수용 가능

⚡주소 변환하기

2. 세그멘트 종류의 파악

  • 하드웨어는 가상 주소가 어느 세그멘트를 참고하는지, 그 세그멘트 안에서 오프셋은 얼마인지를 어떻게 알 수 있는가?

  • 일반적인 접근법: 가상 주소의 최상위 몇 비트를 기준으로 주소 공간을 여러 세그멘트로 나누는 것

  • 주소 공간을 3개의 세그멘트로 나누기 위해서는 2비트가 필요
    -> 최상위 2비트: 하드웨어에게 참조하는 세그멘트의 종류 알려줌
    -> 하위 12비트: 세그멘트 내의 오프셋

  • 최상위 2비트 00: 코드 세그멘트
    최상위 2비트 01: 힙 세그멘트
    최상위 2비트 10: 스택 세그멘트

⚡주소 변환하기

3. 스택

4. 공유 지원

5. 소단위 대 대단위 세그멘테이션

6. 운영체제의 지원

7. 요약

profile
Be able to be vulnerable, in search of truth

0개의 댓글