주니어 개발자 성장기

Memory Management(메모리 관리) 4 - 세그먼테이션 본문

CS스터디/운영체제

Memory Management(메모리 관리) 4 - 세그먼테이션

Junpyo Lee 2024. 6. 30. 21:28

Segmentation

  • 세그먼테이션은 프로세스를 의미 단위로 분할하여 메모리에 적재하는 방식이다.
    • Segment는 논리적 단위(Logical Unit)이다.
    • 즉, 한 개의 함수, 스택, 힙 등 의미 단위로 분할할 수 있다.

 

논리적 주소

  • 논리적 주소는 segment-numberoffset으로 구성된다.
  • 각 프로세스는Segment table을 가지며 baselimit로 구성된다.
  • base: segment-number에 해당하는 세그먼트의 물리적 시작점(주소)
  • limit: segment-number에 해당하는 세그먼트의 길이

 

STBR(Segment-table base register)

  • Segement table 자체의 물리적 주소를 나타내는 레지스터

 

STLR(Segment-table length register)

  • 프로그램이 사용하는 segment의 수를 나타내는 레지스터

 

주소 변환 중 Trap

Segmentation에서 논리적 주소 -> 물리적 주소 변환 과정


위의 그림에서 볼 수 있듯이 세그먼테이션에서 논리적 주소를 물리적 주소로 변환할 때 주로 2 가지를 검증한다.

  1. 프로세스의 segment-numberSTLR미만인지 검증
  2. offset이 limit를 초과하는 지 검증

 

장점

세그먼트는 의미 단위로 분할되기 때문에 페이징과 비교해서 2 가지 측면에서 장점을 갖는다.

의미 단위로 메모리를 분할하는 Segmentation 기법의 예시

 

 
Protection(보안)

각 세그먼트 별로 Read/Write/Execution 권한을 설정할 수 있다. 메모리 공간이 의미 단위로 분할되었기 때문에 가능한 효과

 
Sharing(공유)

공유할 메모리 부분만을 세그먼트로 분리해서 프로세스간 메모리(세그먼트) 공유가 가능하다.

 

 

또한, 실질적인 관점에서 페이징은 일반적으로 페이지 수가 많고 세그먼트는 개수가 적다. 따라서, 세그먼테이션은 페이징에 비해 매핑 테이블에 쓰이는 메모리 용량을 절약할 수 있다.

 

단점

Allocation(할당)

페이징과 달리 세그먼트의 크기가 균일하지 않기 때문에 외부 단편화 문제가 발생한다.

 

 

Paged Segmentation

세그멘테이션 기법은 현실적으로 메모리 관리에 어려움이 있기 때문에 Paged Segmentation 기법을 주로 활용한다.

  • Paged Segmentation은 먼저 의미 단위로 세그먼트를 나눈 뒤 각 세그먼트를 다시 페이징으로 분할하는 방식이다.

 

논리적 주소

  • 논리적 주소는 segment-numberoffset으로 구성된다.
  • segment-table entry 세그먼테이션 기법과는 다르게 segement lengthpage-table base로 구성된다.
  • segment length: segment-number에 해당하는 세그먼트의 길이로서 offset과 비교한다.
  • page-table base: segment-number에 해당하는 세그먼트의 page-table의 물리 주소이다. offset을 물리 주소로 변환할 때 쓰인다.

Paged Segmentation의 아키텍쳐

장점

Allocation(외부 단편화) 문제를 최소화하면서도 세그먼테이션이 ProtectionSharing에서 얻는 이점을 취할 수 있다.

 

 

주소 변환(Address Binding)의 주체

운영체제 강의라서 오해할 수도 있으나, 주소 변환을 담당하는 주체는 OS가 아니라 하드웨어이다! 주소 변환할 때마다 OS가 개입한다면 오버헤드가 너무 크기 때문이다. 즉, 각 프로세스는 OS를 거치지 않고 하드웨어를 통해 논리적 주소를 물리적 주소로 변환한 뒤 접근한다.

*I/O 장치에 접근할 때는 OS에게 요청한다.

 

 

 

출처

반효경, "운영체제 2014-1", KOCW, http://www.kocw.net/home/cview.do?cid=3646706b4347ef09