[운영체제] 프로세스의 주소 공간

강민승·2023년 7월 23일
0

운영체제

목록 보기
3/18
post-thumbnail

출처

📌 프로세스의 주소 공간

프로그램이 CPU에 의해 실행됨 → 프로세스가 생성되고 메모리에 '프로세스 주소 공간'이 할당됨

프로세스 주소 공간에는 코드, 데이터, 스택으로 이루어져 있다.

  • 코드 Segment( text ) : 프로그램 소스 코드 저장
    코드 영역(Code Section): 이 영역은 실행 가능한 코드를 담고 있습니다. 프로그램의 함수나 메서드 등의 실행 코드가 여기에 위치하며, 이 영역의 데이터는 읽기 전용이라 프로그램 실행 중에 변경되지 않습니다.
  • 데이터 Segment : 전역 변수 저장
    데이터 영역(Data Section): 이 영역은 전역 변수와 같은 정적으로 할당된 메모리를 포함합니다. 또한 프로그램이 실행되면서 변경할 수 있는 데이터가 이곳에 위치합니다. 또한, 이 영역은 초기화된 데이터 영역과 초기화되지 않은 데이터 영역(BSS, Block Started by Symbol)으로 나뉠 수 있습니다.
  • 힙 Segment: 런타임에 크기가 결정
    사용자에 의해 공간이 동적으로 할당 및 해제된다.
    주로 참조형 데이터 (ex. 클래스) 등의 데이터가 할당된다.
    메모리의 낮은 주소에서 높은 주소의 방향으로 할당된다.
  • 스택 Segment : 함수, 지역 변수 저장
    스택 영역(Stack Section): 이 영역은 함수 호출 정보를 저장합니다. 이 정보에는 함수의 매개변수, 반환 주소, 지역 변수 등이 포함됩니다. 함수 호출이 발생하면 새로운 스택 프레임이 스택 영역에 생성되며, 함수가 반환되면 해당 스택 프레임이 제거됩니다.

📍 왜 이렇게 구역을 나눈건가요?

최대한 데이터를 공유하여 메모리 사용량을 줄여야 합니다.

Code는 같은 프로그램 자체에서는 모두 같은 내용이기 때문에 따로 관리하여 공유함

Stack과 데이터를 나눈 이유는, 스택 구조의 특성과 전역 변수의 활용성을 위한 것!


프로그램의 함수와 지역 변수는, LIFO(가장 나중에 들어간게 먼저 나옴)특성을 가진 스택에서 실행된다. 
따라서 이 함수들 안에서 공통으로 사용하는 '전역 변수'는 따로 지정해주면 메모리를 아낄 수 있다.
profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

0개의 댓글