1. 프로세스
- 프로세스는 운영체제에서 메모리 영역을 할당받아 실행되는 독립적인 프로그램 인스턴스이다.
- 동적인 개념으로는 실행된 프로그램을 의미한다.
- 더 자세한 내용은 지난 글을 참고하자.
* 특징
- 한 프로세스는 다른 프로세스에 접근할 수 없다. 만일 접근하려면 통신을 사용해야한다.
- 프로세스 하나는 독립된 메모리영역을 받으며 내부에는 Code, Data, Stack Heap영역이 있다.
- 프로세스는 최소 1개의 스레드(메인 스레드)를 가지고 있다.
* 상태
- 프로세스는 아래와 같은 생명주기를 갖는다.
- CPU는 여러 프로세스를 빠르게 번갈아 가며 작업해야하는데 이 때, PCB(Process control block)을 이용하여 위의 상태들을 관리하며 Context Switching을 한다.
- 각 상태의 의미는 다음과 같다.
- Ready : 프로세스가 CPU에 할당되어 처리되기를 기다리는 상태이다.
- Running : 명령어들이 실행되고 있는 상태이다.
- Waiting : 어떤 이벤트의 발생으로 프로세스가 대기중인 상태이다.
- Terminated : 프로세스가 종료된 상태이다.
- Running 상태의 프로세스가 다른 상태로 바뀌는 경우는 총 3가지이다. 프로세스가 종료되어 terminated 상태가 되는경우, 너무 오래 running 상태일 경우 ready상태로 되돌아 가는 경우, 그리고 IO처리 등의 다른 일이 진행될 경우 waiting상태가 되는 경우가 있다.
- 이처럼 운영체제는 프로세스들의 자원배정을 적절히 돌려가며 동작한다. 이 때 필요한 것이 스케줄링이다. 적절한 스케줄링 기법을 사용하여 다중 프로그래밍을 더 효율적으로 동작하게 해야한다. 스케줄링 기법은 이후의 포스팅에서 다루도록 하겠다.
2. 스레드
- 스레드는 프로세스 내에서 각각의 스택을 할당받아 실행되는 독립적인 단위이다.
- 기본적으로 하나의 애플리게이션(프로그램)은 하나 이상의 프로세스를 갖고 있고, 하나의 프로세스는 하나 이상의 스레드를 갖는다.
* 특징
- 스레드는 각각 스택만 따로 할당 받고 코드, 데이터, 힙 영역을 서로 공유한다.
- 한 스레드가 프로세스 자원을 변경하면 다른 스레드도 그 결과를 즉시 확인한다.
참고
'Computer Science > Operating System' 카테고리의 다른 글
<운영체제> 멀티프로세스와 멀티스레드 (0) | 2021.08.21 |
---|---|
<운영체제> 프로세스 스케줄링 (0) | 2021.08.20 |
<운영체제> 프로세스 메모리 (0) | 2021.08.16 |