운영체제

[OS/운영체제] 프로세스(Process) - (1)

4Legs 2020. 11. 4. 00:11

프로세스(Process)란?

일반적으로 실행 중인 프로그램을 지칭한다.

그렇다면 왜 프로세스라는, 실행 중인 프로그램에 대한 개념이 별도로 필요할까?

우리는 대개 컴퓨터를 사용할 때 단 하나의 프로그램만 사용하지 않는다. 크롬과 같은 웹 브라우저, 음악을 재생하는 프로그램, 메신저 프로그램 등 여러 개의 프로그램을 동시에 켜놓고 사용하기 마련이다.

하지만 실행 중인 프로그램들 중 우리가 실제로 조작하고 사용하는 프로그램은 한 순간에 단 하나뿐이다. 따라서 OS는 프로그램 고유의 내부 기능이 잘 동작하도록, 실제로 사용하는 프로그램에게 메모리 관리와 같은 지원을 해 주어야 한다.

 

메모리에서의 프로세스 (Process Memory Layout)

메모리 내의 프로세스

각 프로세스마다 다음과 같은 메모리 영역을 가진다.

 - 스택 영역 (Stack Segment) : 함수 파라미터, 반환되는 주소값, 지역 변수 등의 일시적 데이터가 저장된다. 스택 영역은 그림에서 아래 방향으로 확장된다.

 - 힙 영역 : 프로세스가 돌아가는 동안 동적으로 할당되는 메모리 영역이다. 그림에서 위 방향으로 확장된다.

 - 데이터 영역 : 전역 변수 등의 데이터가 저장된다.

 - 텍스트 영역 : Binary Program Code가 저장된다.

 

프로세스의 상태(State)

프로세스의 상태 다이어그램

프로세스는 다음과 같은 상태(State)를 갖는다.

 - New : 프로세스가 새로 생성된 상태

 - Ready : 프로세스가 프로세서에 의해 할당되기를 기다리는 상태

 - Waiting : 프로세스가 I/O이벤트, Signal 발생등의 발생으로 인해 대기

 - Running : 프로세스가 실제로 실행되고 있는 상태

 - Terminated : 프로세스의 실행이 종료된 상태

 

 

※ 본 게시글은 『Operating System Concepts』 를 참고하여 작성되었습니다.