프로세스의 개념
Process is a program in execution (실행중인 프로그램)
프로세스의 문맥 ( 프로세스의 현재 상태를 알기 위해 필요한 모든 요소)
- CPU 수행 상태를 나타내는 하드웨어 문맥
Program Counter
각종 register
- 프로세스의 주소 공간
code, data, stack
- 프로세스 관련 커널 자료 구조
PCB (Process Control Block)
Kernel Stack
프로세스의 상태
프로세스는 상태가 변경되며 수행된다.
Running: CPU를 잡고 instruction을 수행중인 상태
Ready: CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족한 상태)
Blocked (wait, sleep): CPU를 주어도 당장 instruction 할 수 없는 상태
Process 자신이 요청한 event가 즉시 만족되지 않아 이를 기다리는 상태
ex) 디스크에서 파일을 읽어와야 하는 경우
New: 프로세스가 생성중인 상태
Terminated: 수행이 끝난 상태
+) Suspendid (stopped): 외부적인 이유로 프로세스의 수행이 정지된 상태
프로세스는 통째로 디스크에 swap out 된다.
외부에서 resume 해주어야 Active 됨
PCB (Process Control Block)
운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보
아래의 구성 요소를 가진다.
1) OS가 관리상 사용하는 정보
Process state, Process ID
scheduling information, priority
2) CPU 수행 관련 하드웨어 값
Program Counter, registers
3) 메모리 관련
Code, Data, Stack의 위치 정보
4) 파일 관련
Open file descriptors...
문맥 교환 (Context Switch)
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
다른 프로세스에게 넘어갈 때 다음을 수행
1. CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
2. CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
System call이나 Interrupt 발생 시 반드시 문맥 교환이 일어나는 것은 아님
프로세스를 스케줄링 하기 위한 큐
Job queue
현재 시스템 내에 있는 모든 프로세스의 집합
Ready queue
현재 메모리 내에 있고 CPU를 잡아 실행되기를 기다리는 프로세스의 집합
Device queues
I/O device의 처리를 기다리는 프로세스의 집합
프로세스들은 각 큐들을 오가며 수행된다.
스케줄러 (Scheduler)
Long-term scheduler (장기 스케줄러 or job scheduler)
시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
프로세스에 memory 및 각종 자원을 주는 문제
degree of Multiprogramming을 제어
time sharing system에는 보통 장기 스케줄러가 없음
Short-term scheduler (단기 스케줄러 or CPU scheduler)
어떤 프로세스를 다음번에 running 시킬지 결정
프로세스에 CPU를 주는 문제
충분히 빨라야 함 (milisecond 단위)
Medium-term scheduler (중기 스케줄러 or swapper)
여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냄
프로세스에게서 memory를 뺏는 문제
degree of multiprogramming 제어
Thread (프로세스 내부에 CPU 수행 단위가 여러개 있는 경우)
thread의 구성
program counter
register set
stack space
thread가 동료 thread와 공유하는 부분 ( = task)
code section
data section
OS resources
전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
Thread의 장점
다중 스레드로 구성된 구조에서는 하나가 blocked 상태이더라도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처리 가능
동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상을 얻을 수 있다.
병렬성을 높일 수 있다. (멀티 CPU 경우)
요약
1) 응답성
2) 자원 공유
3) 경제성
4) 멀티 CPU 환경에서 병렬 작업
스레드의 구현
Kernel Threads: 스레드가 여러 개 있다는 사실을 커널이 알고 있음
User Threads: 운영체제는 프로세스 안에 스레드가 여러 개 있는 걸 모름. 프로그램이 스스로 관리함
Real-time Thread
'운영체제 정리' 카테고리의 다른 글
쉽게 배우는 운영체제 챕터별 연습문제 및 심화문제 정리 [PART 3, PART 4] (0) | 2021.01.14 |
---|---|
쉽게 배우는 운영체제 챕터별 연습문제 및 심화문제 정리 [PART 1, PART 2] (0) | 2021.01.11 |
이화여대 운영체제 수업 3 - 2강(프로세스) 정리 (0) | 2019.11.29 |
이화여대 운영체제 수업 2 강(시스템 구조와 프로그램 실행) 정리 (0) | 2019.11.26 |
이화여대 운영체제 수업 1 강(개론) 정리 (0) | 2019.11.23 |