WIPIVERSE

메모리 세그먼트

메모리 세그먼트

정의
메모리 세그먼트는 컴퓨터 시스템에서 주소 공간을 논리적 단위로 나누어 관리하기 위해 사용되는 메모리 영역을 의미한다. 각 세그먼트는 연속된 주소 범위를 가지며, 일반적으로 프로그램 코드, 데이터, 스택, 힙 등 특정 용도에 따라 구분된다.

주요 특징

  1. 주소 변환

    • 논리 주소(세그먼트 번호와 오프셋) → 물리 주소 변환 과정에서 세그먼트 베이스 주소와 오프셋을 결합한다.
    • 세그먼트 레지스터(예: x86 아키텍처의 CS, DS, SS 등)와 세그먼트 디스크립터를 이용해 변환이 수행된다.
  2. 보호 및 권한 관리

    • 각 세그먼트마다 읽기, 쓰기, 실행 등 접근 권한을 설정할 수 있다.
    • 운영체제는 세그먼트 테이블을 통해 권한 검사를 수행한다.
  3. 다중 프로세스 지원

    • 프로세스마다 독립된 세그먼트 공간을 할당함으로써 메모리 격리를 제공한다.

대표적인 세그먼트 종류

구분 설명
코드 세그먼트 (Code Segment) 실행 가능한 프로그램 명령어가 저장되는 영역. 보통 읽기 전용으로 설정된다.
데이터 세그먼트 (Data Segment) 초기화된 전역 변수와 정적 변수가 위치하는 영역.
BSS 세그먼트 초기값이 0인 전역 변수와 정적 변수가 저장되는 영역(일부 시스템에서는 데이터 세그먼트와 구분).
힙 세그먼트 (Heap) 동적 메모리 할당(malloc, new 등)으로 사용자가 요구하는 메모리를 제공하는 영역.
스택 세그먼트 (Stack) 함수 호출 시 사용되는 지역 변수, 반환 주소, 프레임 포인터 등을 저장하는 영역.

역사적 배경
세그멘테이션은 초기 컴퓨터 아키텍처(예: Intel 8086)에서 물리 메모리 제한을 극복하고, 프로그램의 논리 구조를 반영하기 위해 도입되었다. 이후 32비트 및 64비트 시스템에서도 가상 주소 공간의 관리를 효율화하기 위해 세그멘테이션과 페이지 매핑이 결합된 형태가 일반화되었다.

현대 시스템에서의 활용

  • x86 실사용: 현대 x86-64 운영체제는 기본적으로 페이지 기반 가상 메모리를 사용하지만, 여전히 세그멘테이션 구조가 보존되어 특정 보안 기능(예: 수퍼바이저 모드의 세그먼트 레지스트리)이나 호환성을 위해 활용된다.
  • 임베디드 시스템: 메모리 자원이 제한된 환경에서 세그멘테이션을 이용해 메모리 구획을 명확히 함으로써 효율적인 자원 관리가 가능하다.
  • RTOS 및 마이크로컨트롤러: 일부 실시간 운영체제는 세그멘테이션을 사용해 메모리 보호와 태스크 격리를 구현한다.

관련 용어

  • 페이지(Page): 세그멘테이션과 함께 사용되는 메모리 관리 단위로, 고정 크기의 블록이다.
  • 가상 메모리(Virtual Memory): 물리 메모리와 독립된 주소 공간을 제공하며, 세그멘테이션과 페이지 매핑을 조합해 구현된다.
  • 세그먼트 테이블(Segment Table): 각 세그먼트의 베이스 주소와 한계(limit)를 저장하는 데이터 구조이다.

참고

  • 세그멘테이션은 하드웨어와 운영체제 수준에서 지원되는 메모리 관리 기법이며, 프로그래머가 직접 세그먼트를 조작할 필요가 없는 경우가 많다. 현대 고수준 언어와 런타임은 대체로 페이지 기반 메모리 관리에 의존한다.
둘러보기

더 찾아볼 만한 주제

    전체 문서 보기