Operating system

세그먼테이션 기법 (segmentation)

White_Bean 2023. 11. 3. 00:55

세그먼테이션 테이블 (segmentation table)

  • 세그먼트와 크기를 나타내는 limit와 물리 메모리상의 시작 주소를 나타내는 address가 있음
  • 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안 되기 때문에 제한을 뜻하는 limit 사용
  • 물리 메모리가 부족한 경우 스왑 영역을 사

 

프로세스 A의 32번지에 접근할 때 주소 변환 과정

  • 가상 주소 (VA = <0,32>)
  • 세그먼트 0의 시작 주소를 알아낸 후 시작 주소 120에 거리 32를 더하여 물리 주소 152를 구함
  • 만약 32를 더한 거리가 세그먼트 크기보다 크다면 메모리 오류를 출력

 

메모리 접근 권한

  • 읽기 (read), 쓰기 (write), 실행 (execute), 추가 (append)

 

프로세스 영역별 메모리 접근 권한

  • 코드 영역 : 자기 자신을 수정하는 프로그램은 없기 때문에 읽기 및 실행 권한을 가짐
  • 데이터 영역 : 읽거나 쓸 수 있는 데이터와 읽기만 가능한 데이터로 나뉨

 

 

세그먼테이션-페이징 혼용 기법

 

동적 주소 변환 과정 (세그먼테이션-페이징 혼용 기법)

  • 사용자가 어떤 주소에 있는 데이터를 요청하면 해당 주소가 몇 번째 세그먼트의 몇 번째 페이지로부터 얼마나 떨어져 있는지 계산하여 가상 주소 VA = <S, P, D>를 구함
  • 세그먼테이션 테이블의 해당 세그먼트 번호로 가서 자신의 영역을 벗어나는 불법 접근이 아닌지 , 권한이 없는 페이지에 접근하는 것은 아닌지 등을 확인 (권한이 없거나 이상한 접근일 시 세그먼테이션 오류(트랩)을 발생하여 프로세스를 강제 종료)
  • 물리 메모리에 있는 프레임의 처음 위치에서 D만큼 떨어진 곳에 접근하여 데이터를 읽거나 씀