개발공부/운영체제

[OS] 프로세스의 주소 공간

개발자 찐빵이 2021. 11. 17. 20:18
728x90

Process Address Space 정의

프로그램이 실행되면 메모리에 할당되는 것

구성요소

1. Code Segment

  • 프로그램의 코드가 저장되어 있다.
  • 프로그램의 코드는 바뀌어서는 안 되므로 읽기만 가능하다.

2. Data Segment

  • 전역변수 같은 데이터가 저장되어 있다.
  • 함수 바깥에 있는 데이터를 저장한다.
  • 변수는 변할 수 있으므로 읽고 쓰기가 가능하다.

3. Stack Segment

  • 함수나 지역 변수가 저장되어 있다.
  • 변수는 변할 수 있으므로 읽고 쓰기가 가능하다.

구조

프로그램이 실행되면 프로세스가 생성된다.
메모리에 프로세스의 주소 공간이 할당된다.
주소 공간 안은 Code, Data, Stack 부분으로 이루어져 있다.

Code 부분 존재 이유

  • 코드는 프로그램이 만들어지고 나서는 바뀌지 않기 때문에 Read Only이다.
  • 같은 프로그램이라면 여러 프로세스가 실행되더라도 코드 부분은 모두 같다.
  • 따라서 같은 프로그램의 프로세스인 경우 코드 부분을 공유하여 메모리 사용량을 줄일 수 있다.

함수 실행 순서와 Stack 구조

Code
Stack

Stack 부분과 Data 부분 존재 이유

  • 함수의 Stack 구조로 인해 Stack 부분이 존재한다.
  • 전역 변수는 어떤 함수에서도 접근할 수 있기 때문에 Data로 따로 관리해준다.

참고 사이트

프로세스의 주소 공간

반응형