출처 : SNUON / 운영체제의 기초: 쉽게 배우는 운영체제 원리 / 서울대 홍성수 교수님

현대의 SW는 너무 복잡해서 분석하기 위해 abstaction, decomposition 필요
decomposition : 복잡한 문제를 단순한 여러 개의 문제로 나누는 방법론
그리고 process가 이 decomposition의 단위가 된다


program in execution
- 프로그램은 disk에 저장된 수동적인 데이터에 불과하다.
- 프로그램을 실행하면 비로소 process가 되고 I/O 등의 작업들(execution stream)을 수행하게 된다.
process state (= context)
- 프로그램이 수행되는데 영향을 주거나 프로그램의 수행으로 인해 영향을 받을 수 있는 모든 것들
- ex) memory의 code segment, data segment, stack segment
> code segment에는 기계어 존재
> data segment에는 프로그램의 전역 변수 존재
> stack segment에는 프로그램의 지역 변수나 함수 호출을 위해 필요한 내용이 존재
- ex) CPU의 register values
- ex) Per-process kernel info
execution stream
- 프로세스가 지금까지 수행한 instruction의 sequence

multiprogramming
- 메모리의 관점에서 main memory에 여러 active process가 올라가 있다는 뜻
multiprocessing
- CPU의 관점에서 여러 process가 CPU를 나눠 쓰고 있다는 뜻
참고
얼핏 보기에 multiprocessing을 위해서는 multiprogramming이 필수적일 것 같고 실제로 현대의 OS는 multiprogramming을 통해 multiprocessing을 지원하지만 과거에는 그렇지 않았다.


run-time entity
- process는 instuction 수행의 주체
- process는 OS가 CPU, memory, IO 같은 자원을 할당하는 등의 관리를 하는 단위
design-time entity
- SW system을 design 할 때 각 task를 process로 구현할 수 있다

PCB
- OS가 프로세스의 여러 정보를 보관하는 block
Process table
- 각 process에 대한 PCB들을 저장하는 data structure
- 초기에는 array 형태로 다루는 경우가 많았지만 지금은 주로 linked list 형태로 다룬다.



여기서 말하는 state는 process state(=context)와는 다른 개념이다.
ready queue
- ready 상태의 process들을 관리하는 큐
- 즉, PCB를 node로 쓰는 linked list
device queues
- I/O 작업 등의 사유로 waiting 상태에 있는 process들을 관리하는 큐
- waiting의 사유별로 큐가 존재
'CS > 운영체제' 카테고리의 다른 글
[ETL] Context Switching (0) | 2022.05.22 |
---|---|
[ETL] Processes and Threads - Process Scheduling (0) | 2022.05.16 |
[ETL] Computer Hardware (0) | 2022.05.14 |
[ETL] Functions of OS (0) | 2022.05.14 |
[ETL] Evolution of OS (0) | 2022.05.14 |