프로세스(Process)란
컴퓨터에서 프로그램은 "특정 작업을 수행하는 일련의 명령어들의 모음"이다.
그렇다면 프로세스는 무엇인가?
프로세스는 다양한 종류의 프로그램 중 "실행 중인컴퓨터 프로그램"이다.
조금 더 자세하게 "운영체제로부터 시스템 자원을 할당받는 작업의 단위"라고 정의하기도 한다.
*시스템 자원이란?
- CPU 점유 시간
- Code, Data, Stack, Heap의 구조로 되어 잇는 독립된 메모리 영역
프로세스끼리는 서로 독립되어있기 때문에 서로 다른 프로세스의 메모리에 접근할 수 없다.
만약 다른 프로세스의 자원에 접근해야 한다면, IPC(Inter-Process-Communication)를 통해 접근할 수 있다.
*대표적인 IPC의 종류
1. Signal
2. Pipe
3. Message Queue
4. Shared Memory
프로세스의 상태
커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료 구조가 있으며 커널은 이것들을 이용하여 프로세스의 상태를 관리한다.
*커널에 대해서 모른다면 여기를 한번 읽는 것을 추천한다!
- 생성(create) : 프로세스가 생성되는 중이다.
- 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
- 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
- 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
- 종료(terminated) : 프로세스의 실행이 종료되었다.
프로세스의 상태 전이
- 디스패치(dispatch)
준비 리스트의 있던 프로세스 중 우선순위가 높은 프로세스가 CPU를 점유하게 되는 것, 즉 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라고 한다. - 보류(block)
실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어간다. 이것을 보류라고 한다. - 깨움(wakeup)
입출력 작업 종료 등 기다리던 사건이 일어났을 때 보류 상태에서 준비 상태로 넘어가는 과정을 깨움이라고 한다. - 시간제한(timeout)
운영체제는 프로세스가 프로세서를 계속 독점해서 사용하지 못하게 하기 위해 clock interrupt를 두어서 프로세스가 일정 시간 동안만 프로세서를 점유할 수 있게 한다.
참고 링크
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4
'Computer_Language > Etc.' 카테고리의 다른 글
[Thread] 스레드란 무엇인가 (vs 프로세스) (0) | 2019.11.02 |
---|---|
[DevOps] DevOps란 무엇인가 (0) | 2019.11.02 |