본문 바로가기
전공/운영체제

Ch08. 가상 메모리의 기초_03)세그먼테이션 기법

by 임 낭 만 2023. 6. 9.

<쉽게 배우는 운영체제> 교재를 참고하였습니다.

세그먼테이션 기법의 구현

세그먼테이션 기법

  • 가변 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 메모리를 프로세스 크기에 따라 가변적으로 나누어 사용

세그먼테이션 테이블segmentation table

  • 세그먼트의 크기를 나타내는 limit와 물리 메모리상의 시작 주소를 나타내는 address가 있음
  • 프로세스 크기에 따라 메모리를 분할하기 때문에 매핑 테이블에 크기 정보를 포함
  • 각 세그먼트가 자신에게 주어진 메모리 영역을 넘어가면 안 되기 때문에 세그먼트의 크기 정보에는 크기를 뜻하는 size 대신 제한을 뜻하는 limit를 사용
  • 세그먼테이션 기법에서도 물리 메모리가 부족할 때 스왑 영역을 사용
  • 크기가 100B인 프로세스 D(세그먼트 3)가 스왑 영역에 있고, 세그먼테이션 테이블의 address에 I(invalid)라고 표시되어 있음
  • 메모리를 프로세스 단위로 관리함으로써 페이지 테이블이 작고 단순함 (장점)
  • 물리메모리의 외부 단편화로 인해 관리 복잡함

세그먼테이션 기법


세그먼테이션 기법의 주소 변환

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

프로세스 A=세그먼트 0, 프로세스 B=세그먼트 1, 프로세스 C=세그먼트 2

① 가상 주소를 구함 (VA=<0, 32>) S=0, D=32 여기서 S는 세그먼트 번호, D는 세그먼트 시작지점에서 해당 주소까지의 거리

② 세그먼테이션 테이블에서 세그먼트 0의 시작 주소를 알아낸 후 시작 주소 120에 거리 32를 더하여 물리 주소 152번지를 구함 (이때 메모리 관리자는 거리가 세그먼트의 크기보다 큰지 점검하고 만약 크다면 메모리 오류를 출력하고 해당 프로세스를 강제종료하며, 크지 않다면 물리 주소를 구함)

③ 물리 주소 152번지에 접근하여 원하는 데이터를 읽거나 씀

세그먼테이션 기법의 주소 변환

  • 세그먼테이션 테이블의 limit는 메모리 보호 역할
  • 트랩은 자신의 영역을 벗어나는 주소에 접근하거나 숫자를 0으로 나누는 것과 같이 의도치 않은 인터럽트를 말함
  • 트랩이 발생하면 운영체제는 사용자에게 세그먼테이션 오류 (segmentation fault) 메시지를 보냄.

댓글