[세그멘테이션이란]

 

페이징 기법이 동일한 크기의 페이지와 프레임을 통해 메모리를 관리하는 기법이라면, 세그멘테이션은 프로세스를 서로 크기가 다른 가변적인 영역인 세그멘트(논리 단위; Segment)로 분할하여 가상 메모리를 관리하는 기법입니다. 고로 각 세그멘트의 크기는 일정하지 않습니다.

 

프로세스의 메모리를 보통 코드, 데이터, 힙, 스택으로 나누게 되는데, 이렇게 나누는 방식도 세그멘테이션입니다.

 

 

[세그멘트 테이블(Segment Table)]

 

세그멘트를 메모리에 할당하는 방식은 페이지를 할당하는 방식과 동일하나, 테이블의 형태가 조금 다릅니다. 세그멘테이션을 위한 테이블은 세그멘트 테이블이며, 세그멘트 번호(s)와 시작 주소(base), 세그멘트 크기(limit)을 엔트리로 갖습니다. 주소 변환 역시 페이징과 유사하지만, 세그멘트의 크기는 일정하지 않기 때문에 테이블의 limit 정보를 통해 할당을 실시합니다.

출처 : https://dar0m.tistory.com/269

 

[세그멘테이션의 활용]

 

페이징은 코드, 데이터, 스택 영역이 있어도 이를 일정한 크기로 나누기 때문에, 두 가지 영역이 섞을 수 있지만, 세그멘테이션은 r, w, x 비트를 테이블에 추가하는데, 이는 논리적으로 나누어지기 때문에 해당 비트를 설정하기 매우 간단하고 안전합니다. 이를 잘 활용할 경우 프로세스 보안에 용이하게 활용 가능합니다.

 

또한 페이징은 영역을 나누기 때문에 힙이나 데이터 같은 영역도 일정 크기로 나눠져 다른 프레임에 할당될 수 있지만, 세그멘테이션은 정확히 힙, 데이터라는 영역 자체를 나누기 때문에 공간을 효율적으로 공유하게 됩니다.

 

하지만 잦은 메모리 할당과 해제를 반복하게 될 경우, 메모리 공간이 파편화될 수 있습니다. 이를 외부 단편화라고 하는데, 이럴 경우 연속적인 공간을 갖는 세그멘테이션 메모리를 정상적으로 메모리에 적재할 수 없게 됩니다.

'컴퓨터과학 > 시스템' 카테고리의 다른 글

[CS] CPU(Central Processing Unit)  (0) 2025.09.30
[CS] 페이지 폴트(Page Fault)  (0) 2025.05.19
[CS] 페이징(Paging)  (0) 2025.05.19
[CS] 가상 메모리(Virtual Memory)  (0) 2025.05.18
[CS] 데드락(Dead Lock)  (0) 2025.05.18

+ Recent posts