brunch

You can make anything
by writing

C.S.Lewis

by 이종복 Jul 03. 2019

운영체제(1) - 프로세스

이번 글에서는 운영체제의 핵심 개념 중 하나인 프로세스에 대해서 다루겠습니다.


 프로세스는 간단히 말해서 '실행 중인 프로그램'입니다. 여기서 주의 할 점은 프로그램과 프로세스의 차이점입니다. 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일과 같은 수동적인 존재(passive entity)인 반면, 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터(program counter)와 관련 자원의 집합을 가진 능동적인 존재(active entity)입니다. 즉, 실행 파일이 메모리에 적재될 때 프로그램은 프로세스가 된다고 할 수 있습니다. 


 프로세스는 일반적으로 다음과 같은 요소를 포함합니다.

1) 스택(stack) - 함수의 매개 변수, 복귀 주소와 로컬 변수와 같은 임시적인 자료를 보유

2) 데이터 섹션(data section) - 전역 변수를 수록 

3) 힙(heap) - 동적으로 할당되는 메모리

4) 텍스트 섹션(text section) - 프로그램 코드

5) 프로그램 카운터(program counter) - 다음에 실행할 명령어의 주소를 보유하고 있어,

                                                                  실행할 기계어 코드의 위치를 지정


 프로세스는 실행되면서 그 상태가 변합니다. 프로세스의 상태는 크게 5가지로 구분됩니다.


1) 새로운(new): 프로세스가 생성 중이다.

2) 실행(running): 명령어들이 실행되고 있다.

3) 대기(waiting): 프로세스가 어떤 사건이 일어나기를 기다린다.

4) 준비 완료(ready): 프로세스가 처리기에 할당되기를 기다린다.

5) 종료(terminated): 프로세스의 실행이 종료되었다. 


여기서 중요한 점은 어느 한 순간에 하나의 처리기(processor)에서는 하나의 프로세스만이 실행된다는 점입니다. 그렇다면 다른 많은 프로세스는 대기(waiting) 혹은 준비 완료(ready) 상태에 있을 수 있습니다.  


Q1. 스택이란 무엇인가?

- 스택(stack)은 제한적으로 접근할 수 있는 나열 구조입니다. 

   스택은 한쪽에서만 자료를 넣고 뺄 수 있는 선형 구조(LIFO)로 되어 있습니다.

   LIFO는 Last In, First Out의 줄임말입니다. 

   

Q2. 힙이란 무엇인가?

- 힙(heap)영역은 필요에 의해 동적으로 메모리를 할당하고자 할 때 위치하는 데이터 영역입니다. 


Q2-1) 필요에 의해 동적으로 메모리를 할당한다는 것이 무엇인가? 

   

Q3. 프로그램 카운터란 무엇인가? 

- 프로그램 카운터(Program Counter)란 프로세서 내부에 있는 레지스터 중의 하나로서,

  다음에 실행할 명령어의 주소를 가지고 있어 실행할 기계어 코드의 위치를 지정합니다. 

  다른 말로는 명령어 포인터라고도 불립니다. 

  일반적으로 프로그램 카운터는 명령을 실행을 마칠 때마다 1씩 증가하게 됩니다. 

  프로그램 카운터가 필요한 이유는 현재 프로그램이 '어디서' 무엇을 하고 있는지 알아야 하기 때문입니다.    


Q4. 왜 프로세스는 스택, 데이터 섹션, 힙, 텍스트 섹션, 프로그램 카운터 이렇게 5개의 영역으로 구성되는가? 


이 글의 내용은 다음 운영체제 책(https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=46380306)을 참조했습니다. 

매거진의 이전글 운영체제 서론(3) - 다중 프로그래밍
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari