프로세스(Process)란?
일반적으로 실행 중인 프로그램을 지칭한다.
그렇다면 왜 프로세스라는, 실행 중인 프로그램에 대한 개념이 별도로 필요할까?
우리는 대개 컴퓨터를 사용할 때 단 하나의 프로그램만 사용하지 않는다. 크롬과 같은 웹 브라우저, 음악을 재생하는 프로그램, 메신저 프로그램 등 여러 개의 프로그램을 동시에 켜놓고 사용하기 마련이다.
하지만 실행 중인 프로그램들 중 우리가 실제로 조작하고 사용하는 프로그램은 한 순간에 단 하나뿐이다. 따라서 OS는 프로그램 고유의 내부 기능이 잘 동작하도록, 실제로 사용하는 프로그램에게 메모리 관리와 같은 지원을 해 주어야 한다.
메모리에서의 프로세스 (Process Memory Layout)
각 프로세스마다 다음과 같은 메모리 영역을 가진다.
- 스택 영역 (Stack Segment) : 함수 파라미터, 반환되는 주소값, 지역 변수 등의 일시적 데이터가 저장된다. 스택 영역은 그림에서 아래 방향으로 확장된다.
- 힙 영역 : 프로세스가 돌아가는 동안 동적으로 할당되는 메모리 영역이다. 그림에서 위 방향으로 확장된다.
- 데이터 영역 : 전역 변수 등의 데이터가 저장된다.
- 텍스트 영역 : Binary Program Code가 저장된다.
프로세스의 상태(State)
프로세스는 다음과 같은 상태(State)를 갖는다.
- New : 프로세스가 새로 생성된 상태
- Ready : 프로세스가 프로세서에 의해 할당되기를 기다리는 상태
- Waiting : 프로세스가 I/O이벤트, Signal 발생등의 발생으로 인해 대기
- Running : 프로세스가 실제로 실행되고 있는 상태
- Terminated : 프로세스의 실행이 종료된 상태
※ 본 게시글은 『Operating System Concepts』 를 참고하여 작성되었습니다.
'운영체제' 카테고리의 다른 글
[OS/운영체제] 프로세스 (Process) - (3) (0) | 2020.11.04 |
---|---|
[OS/운영체제] 프로세스(Process) - (2) (0) | 2020.11.04 |
[OS/운영체제] OS 구조 (OS Structure) (0) | 2020.11.03 |
[OS/운영체제] 인터럽트(Interrupt), 시스템 콜(System Call) (0) | 2020.11.03 |
[OS/운영체제] 운영체제란? (OS, Operating System) (1) | 2020.10.08 |