Program
실행 가능한 파일
Process
실행중인 Program
Thread
Process 내에서 실제로 작업을 수행하는 주체
Computer Science 지식에 대해 공부를 하면서 블로그에서는 처음으로 OS 주제를 다루겠습니다. OS에 대한 CS는 상당히 많지만 그 중 가장 기본적인 Process에 대해 공부하도록 하겠습니다.
우리들은 컴퓨터를 사용하거나 프로그래밍을 공부햐면서 Program, Process, Thread라는 용어를 상당히 많이 접하게 됩니다. 하지만 제대로 공부하지 않는다면 각각에 대한 개념과 차이점을 모른채 무분별하게 사용하게 됩니다. 가장 먼저 각 정의와 개념에 대해 알아보도록 하겠습니다.
Program이란?
Program을 쉽게 말하자면 "실행 가능한 파일"입니다. 즉 개발자가 작성한 코드를 전처리기, 컴파일러, 어셈블러, 링커 과정들을 통해 최종적으로 사용자가 실행시킬 수 있도록 만들어진 실행 파일입니다. 윈도우에서 우리들은 .exe 파일을 볼 수 있는데 이것이 실행파일, 즉 프로그램입니다.
Process란?
Process는 "실행중인 Program"입니다. 실행 파일인 Program은 사용자가 실행하기 전까지는 아무런 동작을 하고 있지 않습니다. 하지만 사용자가 Program을 실행시키는 순간 이것은 실행중인 Program, 즉 Process가 되는겁니다. 그래서 우리가 윈도우라면 작업관리자, Mac이라면 활성 상태 보기를 실행했을 때 나타나는 Process들이 현재 컴퓨터에서 실행되고 있는 Program들입니다.
활성 상태 보기에서 확인한 것처럼 내 컴퓨터에서 작동하고 있는 Process는 상당히 많습니다. 이렇게 많은 Process들은 우리 눈에는 동시에 실행되는 것처럼 보이지만 실제로는 하나의 CPU가 OS의 스케쥴링에 의해서 각각의 Process들을 번갈아 실행시키는 것입니다.
( CPU core가 1개라는 가정 )
7가지 프로세스 상태
1. New
프로세스가 이제 막 생성된 시점의 상태, 필요한 메모리 구조를 초기화 해야하는 작업들이 필요하다.
2. Ready
실행하기 전 상태, OS가 프로세스들을 스케쥴링 함으로써 Queue에 위치해있다.
3. Running
프로세스가 실행되고 있는 상태, 이전 프로세스와 context switching이 일어나 프로세스의 PCB에 담겨있는 정보들이 CPU register로 옮겨지고 CPU를 차지하고 있다.
4. Blocked
프로세스가 대기 상태로 있는 상태, 프로세스는 특정 입출력 및 자원 등을 기다리는동안 CPU의 효율을 높이기위해 다른 프로세스에게 CPU 자원을 양보하고 대기상태로 들어간다.
5. Suspend & Block
Blocked 상태에서 입출력 작업이나 특정 작업이 끝났지만 메모리 공간 부족으로 아직 메모리에 올라가지 못한 상태이다.
6. Suspend & Ready
Running 상태에서 메모리가 꽉차 프로세스를 메모리 밖으로 내보내거나, 입출력 지연으로 인해 보류가 되는 상태이다.
7. Terminated
프로세스의 작업이 모두 끝나고 메모리에서 빠져나가 종료된 상태이다.
※ CPU 작업과 입출력 작업
디스크 입출력 작업은 CPU 처리 속도에 비해 오래 걸리는 작업이며, 입출력 작업 동안에는 CPU를 사용하지 못하게 된다. 이러한 비효율적인 CPU 사용을 방지하기위해 프로세스는 CPU의 자원을 반납하고 다른 프로세스와 context switching 한다. 이때 프로세스는 Blocked 상태가 되며 입출력 작업이 모두 끝났을 경우에는 Ready 상태로 변한다.
Thread란?
Thread는 "Process 내에서 실제로 작업을 수행하는 주체"입니다. Process는 작업을 수행할 때 1개 이상의 Thread를 이용합니다. 이 때 Process가 포함하고 있는 여러 Thread들은 서로 전역 변수 공간, Heap 영역을 공유하고 Stack 메모리만 각자 독립적으로 가지기 때문에 원활한 Multi Thread 작업이 가능합니다. 게다가 Multi Thread 작업은 Multi Process의 Context switching과 달리 캐시 메모리를 비울 필요가 없기 때문에 훨씬 빠릅니다.
References