본문 바로가기

CS스터디/운영체제

프로세스 주소 공간

728x90

프로세스의 주소 공간

  • 프로그램이 CPU에 의해 실행이 되면 프로세스가 생성이 되고 프로세스 주소 공간이 할당 된다. 
  • 프로세스 주소 공간에는 코드, 데이터, 스택으로 이루어져 있다
  •  코드 segment : 프로그램 소스 코드를 저장한다. (읽기만 가능)
  • 데이터 segment : 전역 변수를 저장한다. (읽고 쓰기가 가능하다) 
  • 스택 segment : 함수, 지역 변수가 저장되어 있다. (읽고 쓰기가 가능하다)

 

코드 segment : 

- 코드 영역은 실행 파일을 구성하는 명령어들이 올라가는 메모리 영역으로 함수, 제어문, 상수 등 함수에 대한 기계어 코드가 여기에 저장된다. 

- 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없어 Read-Only

 

Data segment: 

- 초기값이 있는 전역변수 , 배열, 정적 변수가 저장이 된다. 즉 프로그램이 구동이 되는 동안 항상 접근 가능한 변수가 저장이 되는 영역이다. 

- 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다. 

 

Stack segment: 

- 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역이다. 

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

 

프로그램의 함수와 지역 변수는, LIFO(가장 나중에 들어간게 먼저 나옴)특성을 가진 스택에서 실행된다. 따라서 이 함수들 안에서 공통으로 사용하는 '전역 함수'는 따로 지정해주면 메모리를 아낄 수 있다

 

 

'CS스터디 > 운영체제' 카테고리의 다른 글

시스템 콜  (0) 2022.01.11
인터럽트  (0) 2022.01.11
프로세스와 스레드  (0) 2022.01.07
CPU 스케줄러  (0) 2022.01.07
스케줄러(단기,중기,장기)  (0) 2022.01.07