공부/OS

세그멘테이션(Segmentation)이란?

셩잇님 2023. 3. 4. 22:37
반응형

 

 

1. 세그멘테이션이란?

세그멘테이션은 UNIX 및 그 파생 제품을 포함한 일부 운영 체제에서 사용하는 또 다른 메모리 관리 기법입니다. 세그멘테이션에서 메모리는 가변 크기의 세그먼트로 나뉘며, 각 세그먼트는 프로그램 또는 데이터의 논리적 단위를 나타냅니다.

각 세그먼트에는 프로그램 코드, 스택, 힙 또는 데이터와 같은 특정 유형의 데이터 또는 코드가 포함됩니다. 메모리가 고정된 크기의 페이지로 분할되는 페이징과 달리 세그멘테이션의 세그먼트 크기는 프로그램의 필요에 따라 달라질 수 있습니다. 세그멘테이션은 다양한 메모리 요구 사항을 가진 프로그램을 보다 효율적으로 처리할 수 있으므로 페이징보다 더 유연한 기술입니다.

운영 체제는 세그먼트 테이블을 유지 관리하여 사용 가능한 메모리 세그먼트와 현재 사용 중인 세그먼트를 추적합니다. 세그먼트 테이블의 각 항목에는 시작 주소, 길이, 상태(사용 가능한지 사용 중인지 여부 등) 등 세그먼트에 대한 정보가 포함됩니다. 프로세스가 메모리를 요청하면 운영 체제는 여유 풀에서 하나 이상의 세그먼트를 할당하여 프로세스의 가상 주소 공간에 매핑합니다. 이 프로세스를 "세그먼트 매핑"이라고 합니다.

세그먼트화는 메모리 활용도 향상, 프로세스 간 코드 및 데이터의 효율적인 공유, 프로그램 구성 개선 등 다른 메모리 관리 기법에 비해 몇 가지 장점이 있습니다. 그러나 조각화 및 메모리 누수 가능성 등 몇 가지 단점도 있습니다. 이러한 문제를 완화하기 위해 많은 운영 체제에서는 세그먼테이션과 페이징을 함께 사용하여 메모리를 효율적으로 관리합니다.

 

 

반응형

'공부 > OS' 카테고리의 다른 글

프로세스(Process)란?  (0) 2023.04.09
단편화(Fragmentation)란?  (0) 2023.03.04
페이징(Paging)이란?  (0) 2023.03.04
데드락(Deadlock)이란?  (0) 2023.03.02
멀티 쓰레드(multi-threading)란 무엇인가?  (0) 2023.03.01