Process 1
프로세스의 개념
Q. 프로세스란?
A. process is a program in execution(실행중인 프로그램)
프로세스의 문맥(context) : 프로세스의 현재 상태를 나타내는데 필요한 모든 요소
CPU 수행 상태를 나타내는 하드웨어 문맥
- Program Counter
- 각종 register
프로세스의 주소 공간(memory)
- code, data, stack
프로세스 관련 커널 자료 구조(운영체제가 프로세스 관리하는 부분)
- PCB(Process Control Block)
- Kernel stack
프로세스의 상태(Process State)
process가 놀이공원 줄 기다리듯이 queue에 들어가서 자기 차례를 기다린다.
사실 kernel의 data영역에서 자료구조로 queue를 만들고 프로세스 상태를 바꿔가면서 운영한다.
프로세스는 상태(state)가 변경되며 수행된다.
Running
- CPU를 잡고 instruction을 수행중인 상태
Ready
- CPU를 기다리는 상태(다른 모든 준비는 끝남)
- 필요한 부분은 main memory에 올라와있어서 CPU만 얻으면 바로 동작할 수 있는 상태
Blocked(wait, sleep)
- CPU를 주어도 당장 instruction을 할 수 없는 상태
- Process 자신이 요청한 event(ex: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
- 디스크에서 file을 읽어와야 하는 경우
Suspended(stopped)
- 사용자(사람)가 프로그램을 일시 정지시킨 경우
- 시스템이 여러 이유로 프로세스를 잠시 중단시킴
- 메모리에 너무 많은 프로세서가 올라와 있을 때
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out 됨
Blocked vs suspended
- Blocked: 자신이 요청한 event가 만족되면 Ready
- Suspended: 외부에서 resume해 주어야 Active
New
- 프로세스가 생성중인 상태
Terminated
- 수행(execution)이 끝난 상태
새로운 프로세스 상태도(사용자 프로그램의 상태도)
user mode running: 프로세스가 CPU를 가지고 있으면서 본인의 코드를 실행중인 상태
monitor mode running: 프로세스가 kernel모드에서 running하고 있다
- 주의) CPU가 프로세스에서 커널로 넘어가서 운영체제가 running하는 것이 아니다.
점선의 아랫 부분은 inactive라고 부르고 외부의 요인으로 인해 프로세스가 얼어붙은 상황
PCB(Process Control Block)
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
PCB 구성 요소 (구조체로 유지)
OS가 관리상 사용하는 정보
- Process state(ready? blocked?), Process ID
- scheduling information, priority
CPU 수행 관련 하드웨어 값
- Program counter, registers
메모리 관련
- code, data, stack의 위치정보
파일 관련
- open file descriptors
문맥 교환(Context Switch)
문맥교환: CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
- CPU를 내어주는 프로세스 상태를 그 프로세스 PCB에 저장
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
문맥교환 - 헷갈리기 쉬운 부분
System call이나 Interrupt(하드웨어) 발생시 반드시 context switch가 일어나는 것은 아니다.
- 현재 프로세스 내에서 User mode에서 kernel mode로 넘어가는 것은 context switch가 아니다
- 사용자 프로세스 A로부터 사용자 프로세스 B로 넘어가는 과정이 문맥교환임
1의 경우 CPU 수행 정보 등 context의 일부를 PCB에 save해야한다.
2의 경우 문맥교환(프로세스 자체가 바뀜)을 실제로 수행하기 때문에 그 부담이 훨씬 크다(문맥교환의 경우, cache memory를 다 지워버림 → overhead)
스케줄러(Scheduler)
Long-term scheduler(장기 스케줄러 or job scheduler)
- 다음번에 어떤 프로세스에게 Memory를 줄지 결정
- 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
- degree of Multiprogramming을 제어
- 메모리에 프로그램이 몇 개 올라가 있는지 나타냄
- 사실 현재 시스템들은 장기 스케줄러가 없다(시작되면 무조건 메모리 줌).
- Medium-term scheduler를 이용해서 degree of Multiprogramming을 조절
Short-term scheduler(단기 스케줄러 or CPU scheduler)
- 다음번에 어떤 프로세스에게 CPU를 줘서 running 시킬지 결정
- millisecond 단위로 빨라야 함
Medium-term scheduler(중기 스케줄러 or Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
- 프로세스에게서 memory를 뺏는 문제
- degree of Multiprogramming을 제어
'sw사관학교정글 > OS 개념정리' 카테고리의 다른 글
[week08] KOCW 운영체제(반효경교수님) - Process Management (0) | 2021.12.30 |
---|---|
[week08] KOCW 운영체제(반효경교수님) - Process 2 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - System Structure & Program Execution 2 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - System Structure & Program Execution 1 (0) | 2021.12.30 |
[week08] KOCW 운영체제(반효경교수님) - 강의소개 (0) | 2021.12.30 |