Operating System

[Operating System] Segmentation

Ocean_ 2022. 12. 31. 00:37

세그멘 테이션

  • 사용자 프로그램은 세그먼테이션 기법을 이용하여 프로그램과 그 데이터들이 여러 세그먼트로 나눔
  • 하지만 프로세스를 물리적인 단위인 페이지 말고 논리적 내용 단위인 세그먼트로 자를 수 있는 세그먼테이션 방법이 있다.
  • 세그멘테이션은 프로세스를 세그먼트의 집합으로 생각한다.
  • 그래서 세그먼테이션은 물리적인 크기의 단위가 아닌 논리적 내용의 단위(의미가 같은)로 자르기 때문에 세그먼트들의 크기는 일반적으로 같지 않다.
  • 세그먼테이션 번호와 오프셋 두개의 영역으로 구성

 

세그먼트 기반 주소 변환

  • 가장 왼쪽의 n비트는 세그먼트 번호이고, 가장 오른쪽 m비트는 오프셋인 n+m비트로 이루어진 주소
  • n= 4 , m=12 세그먼트 최대크기는 4096

주소변환 과정

  • 논리주소의 왼쪽 n 비트를 세그먼트 번호로 추출
  • 이 세그먼트 번호를 프로세스 세그먼트 테이블의 인덱스로 사용하여 세그먼트의 시작물리주소를 찾음
  • 오른쪽 m 비트로 표현된 오프셋을 세그먼트 길이와 비교
  • 오프셋이 그 길이보다 크거나 같다면 그 주소는 유효하지 않음
  • 접근하고자하는 물리주소는 세그먼트의 시작 물리주소와 오프셋의 합임

보호와공유

세그먼테이션은 보호나 공유 정책을 구현하기에 적합함

지역성

쓰레싱

  • 특정 블록이 사용되기 직전에 반출되면 곧바로 해당 블록을 반입
  • 과도 발생시 블록 교체에 많은 시간을 소비
  • 쓰레싱을 피하기 위해 OS는 최근 이력을 근거로 가까운 미래에 사용가능성이 적은 블록 추정
  • 시간 구역성, 공간 구역성
    • 프로세스 내에서 명령어와 데이터에 대한 참조는 군집을 이루는 경향

가상메모리 → PAGE FAULT → 쓰레싱 이여서 예측기법 LOCALITY