프로세스
:실행중인 프로그램
프로세스의 문맥(특정 시점을 놓고 봤을 때 어디까지 수행했는지를 확인할 수 있음.)
- cpu 수행상태를 나타내는 하드웨어 문맥 : program counter, 각종 register
- 프로세스 주소 공간 : code, data, stack
- 프로세스 관련 커널 자료 구조 : pcb, kernel stack
프로세스의 상태
Running- cpu잡고 instruction을 수행중인 상태 / Ready-cpu를 기다리는 상태/ Blocked(wait, sleep)- cpu를 주어도 당장 instruction을 수행할 수 없는 상태 / Suspended(stopped) - 외부적인 이유(ex) 중기 스케쥴러)로 프로세스 수행이 정지된 상태, 프로세스는 통째로 디스크에 swap out된다.(왜? 메모리에 너무 많은 프로세스가 올라오면 성능이 떨어지기 때문에 일시정지 시킴) / New- 프로세스가 생성중인 상태 / Terminated - 수행이 끝난 상태
*Blocked - 자신이 요청한 event(I/O작업)이 끝나면 다시 수행가능하다.
Stopped/ Suspended - 외부에서 정지한 상태로 다시 swap in해야 수행가능하다.
PCB는 커널에 각 프로세스마다 가지고 있으며, instruction을 어디까지 수행했는지에 대한 정보를 저장해 놓는다.
또한 각 프로세스의 PCB에도 pc와 register에 대한 정보가 저장되어 있다.
이는 context switch될 때 어디서부터 수행할지 시작점을 알려주는데 활용된다.
context switch는 프로세스 간 교환이 발생할 때를 말하고, system call이나 interrupt발생 처럼 사용자 프로세스로부터 운영체제로 넘어가는 것은 context switch가 발생하는 것이 아니다.
그러나 timer interrupt나 I/O요청에 의한 system call(IO가 오래걸리니까 다른 프로세스로 넘기는 경우)는 문맥교환이 일어난다.
스케줄러
1. Long-term scheduler(장기 스케줄러 or job scheduler)
- 어떤 프로세스를 ready queue로 보낼지 결정. 메모리를 어떤 프로세스에게 할당할지 결정
- time sharing system에는 보통 장기 스케줄러가 없음. 무조건 ready상태이기 때문
2. Short-tem scheduler(단기 스케줄러 or cpu scheduler)
- 어떤 프로세스를 다음번에 running시킬지 결정
- millisecond 단위
3. Medium-term scheduler(중기 스케줄러 or Swapper)
- 여유 공간 마련을 위해 어떤 프로세스를 통째로 메모리에서 디스크로 쫒아냄
- 프로세스에게서 memory를 뺏는 문제
* 프로세스의 상태를 구분하는 이유는 운영체제가 관리하기 위한 목적이다. 그렇기 때문에 system call에 의해 운영체제가 커널모드에서 running될 때에 운영체제가 running하고 있다고 표현하지 않는다. 사용자 프로그램이 running되고 있는 것.
Thread
: 프로세스 내부에서 cpu수행단위가 여러개 있는 작업 단위
- 프로세스마다 code, data, stack의 공간이 있는 주소공간이 부여된다. 동일한 일을 하는 프로세스가 여러개일 경우, 별도의 주소 공간이 부여되어 메모리가 낭비가 되기 때문에 하나의 프로세스안에서 별도의 일을 하는 thread가 생겨나게 되었다.
- cpu가 실행되려면 현재 메모리의 어느 부분을 수행하는지를 가리키는 PC가 있어야 하는데, thread가 여러개일 경우 하나의 PCB안에 여러개의 thread의 PC가 담겨져 있다.
thread는 프로세스의 메모리를 공유하지만, stack이나 pc, register는 별도로 두어 공유하지 않는다.
장점
1. 빠른 응답성 : 다중 스레드로 구성된 경우, 하나의 스레드가 blocked상태일 때 running상태인 스레드가 일을 수행할 수 있기 때문에 사용자에게 빠른 응답을 제공할 수 있다.
2. 자원 공유 : 프로세스 내에서 메모리를 공유하기 때문에 자원을 절약할 수 있다.
3. 경제성 : 프로세스간에 switching 하는 것보다 스레드간 switching하는 것이 오버헤드가 적음.
ppt 자료 및 내용 출처: 운영체제 강좌 - 반효경 kocw
http://www.kocw.net/home/search/kemView.do?kemId=1046323
'운영체제' 카테고리의 다른 글
Deadlock (0) | 2021.06.29 |
---|---|
Process Synchronization (0) | 2021.06.28 |
CPU Scheduling (0) | 2021.06.28 |
프로세스 생성 (0) | 2021.05.15 |
운영체제 개요 (0) | 2021.05.13 |