운영체제 - 프로세스 주소 공간

델리만쥬 디퓨저·2024년 8월 19일

운영체제

목록 보기
3/13

프로세스 주소 공간

  • 코드(Code) 세그먼트
    - 프로그램 소스 코드가 저장되는 공간
    - 프로그램 내에서 변경되지 않으므로, 여러 프로세스가 동일한 코드 실행시 이 부분을 공유 가능
    - 이를 통해 메모리 사용량을 줄일 수 있음
  • 데이터(Data) 세그먼트
    - 전역 변수와 static 변수들이 저장되는 공간
    - 프로세스간 공유되지 않으며, 각 프로세스는 고유한 데이터를 가지고 실행
  • 스택(Stack) 세그먼트
    - 함수 호출 시 생성되는 지역 변수와 함수의 실행 상태를 저장하는 공간
    - LIFO 구조를 가지며, 함수가 호출될 때마다 새로운 스택 프래임이 생성되고, 함수가 종료되면 해당 스택 프레임이 제거됨

스택과 데이터 세그먼트 분리의 이유

  • 스택과 데이터 세그먼트를 나누는 이유는 이들의 사용 방식과 특성이 다르기 때문
  • 스택 세그먼트는 함수 호출과 지역 변수 관리를 위해 동적으로 크기가 변하며, 함수가 끝날 때마 메모리가 자동으로 반환
  • 데이터 세그먼트는 전역 변수와 static 변수를 위해 할당된 공간으로, 프로그램이 실행되는 동안 유지

메모리 효율성과 공유

  • 코드 세그먼트를 따로 분리하여 여러 프로세스가 동일한 프로그램 코드를 공유할 수 있게 하면 메모리 사용량이 줄어듬
  • 데이터와 스택을 분리해 전역 변수와 지역 변수의 용도를 명확히 하고, 프로그램 실행 중 발생하는 충돌 방지
profile
< 너만의 듀얼을 해!!! )

0개의 댓글