본문 바로가기
공부/OS

[OS] 프로그램과 프로세스의 차이 및 프로세스 구조

by 웅대 2023. 3. 28.
728x90

프로그램과 프로세스의 차이

 

프로그램과 프로세스는 혼동하기 쉬운데 둘은 엄연히 다르다.

 

프로그램은 특정 목적을 수행하기 위한 명령문들의 집합이다.

 

또한 컴파일된 결과물이 디스크에 저장되어있는 상태라고도 볼 수 있다.

 

우리는 이미 일상적으로 프로그램이라는 용어를 사용하고 있다.

 

그렇다면 프로세스는 무엇일까?

 

실행 중인 프로그램을 프로세스라고 한다.

 

디스크 안에 있는 프로그램을 메모리로 가져와서 실행 중이면 프로세스라고 한다.

 

프로그램과 프로세스는 일대다 매핑이 가능하다.

 

예를 들면 크롬이라는 프로그램이 있고 이 크롬 프로그램을 여러 개 실행하면 프로그램과 프로세스가 일대다 관계를 이루고 있는 것을 확인할 수 있다.

 

프로세스 메모리의 구조

프로세스가 메모리로 로딩될 때 다음과 같이 4개의 세그먼트로 나뉘어 로딩된다.

 

  1. stack : 임시 데이터(지역 변수, 배개 변수, 함수를 종료하고 돌아갈 주소값)를 저장하는 공간. 
  2. heap : c언어의 malloc과 같이 프로그래머가 필요할 때마다 할당하는 공간.
  3. data : 전역 변수와 정적 변수(static)이 저장되는 공간
  4. text : 프로그래머가 작성한 프로그램의 코드가 저장된 공간. 컴파일 과정에서 결정되고 읽기만 가능하다.

data를 더 세분화하면 data와 bss로 나눌 수 있다.

 

  1. data : 초기화 된 전역 변수와 정적 변수(static)이 저장되는 공간
  2. bss : 초기화 되지 않은 전역 변수와 정적 변수(static)이 저장되는 공간

 

 

 

https://wikidocs.net/165974

Q. data와 bss를 구분하는 이유

data의 경우 초기화 되어있기 때문에 초기값을 저장하고 있어야 한다. 이후 프로그램이 실행되면 RAM으로 가져와서 사용하게 된다.

 

그런데 bss는 초기값이 존재하지 않기 때문에 미리 저장할 필요가 없다. 프로그램이 실행되면 0이라는 값을 RAM에 저장하면 된다.

728x90
반응형

댓글