프로세스
프로세스는 실행 중인 프로그램이다.
Process context(프로세스의 문맥)
- 특정 시점에서의 cpu 수행 상태를 나타내는 하드웨어 문맥
- PC가 어디를 가리키고 있는가?
- 각종 레지스터
- 프로세스의 주소 공간(code, data, stack)
- 프로세스 A의 주소공간에 어떤 내용이 담겨있는가? (stack에 쌓인 함수, bss에 있는 변수의 값)
- 프로세스 관련 커널 자료구조
- PCB(Process Control Block): 프로세스 하나가 실행될 때 마다 이를 관리하기 위해 생성. cpu를 얼마나 줘야할지 등
- Kernel Stack
Process State(프로세스의 상태)
프로세스는 상태가 변경되며 수행된다.
- New
- 프로세스가 생성 중인 상태
- Running
- cpu를 잡고 instruction을 수행 중인 상태
- Ready
- 메모리 등 다른 조건을 모두 만족하고 cpu를 기다리는 상태(메모리에 올라와있음)
- cpu time sharing
- Blocked(wait, sleep)
- cpu를 주어도 당장 instruction을 수행할 수 없는 상태(시간이 오래 걸리거나)
- process가 요청한 event(I/O 작업 등)가 즉시 만족되지 않아 기다리는 상태.(timer에 의해 cpu를 얻었다 뺐겼다함.)
- Exit = Terminated
- 수행(execution)이 끝난 상태
*그림에서는 실행해야 할 프로세스들이 일렬로 큐에 저장되어 있어도, PCB가 이들 간의 우선순위를 따져서 우선순위 대로 실행한다.
(대비되는 개념 라운드로빈 방식: 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로, 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간 단위로 cpu를 할당하는 방식)
PCB(Process Control Block)
운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
- OS가 관리상 사용하는 정보
- Process State, Process ID
- scheduling state, priority
- cpu 수행 관련 하드웨어 값
- PC, registers
- 메모리 관련
- stack, bss, code 등이 메모리 어디에 위치해있는지
- 파일 관련
- 리소스와 관련된 파일 정보들
Context Switch(문맥 교환)
cpu를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
운영체제가 cpu를 다른 프로세스에 내어주는 다리 역할을 한다.
- cpu를 내어주는 프로세스의 상태를 헤당 프로세스의 pcb에 저장
- cpu를 새롭게 얻는 프로세스의 상태를 pcb에서 얻어옴.
✔️ System call이나 Interrupt 발생 시 반드시 context switch가 일어나는 것은 아님
(System call이나 interrupt는 하나의 프로세스 내에서 어떤,, 작업을 하게되는 거고. context switch는 프로세스 A에서 프로세스 B로 바뀌는 상태를 말함.)
두번째 예제는 timer interrupt(cpu를 다른 프로세스에 넘기기 위한 의도적인 hw 인터럽트), I/O 요청(오래 걸리는 작업) 등을 요청하게 되면 context switching 발생
Scheduler(스케줄러)
자원 별로 시간을 얼마나 쓸 건지 계획하는 역할
- Short-term scheduler(단기 스케줄러 or CPU scheduler)
- 밀리 세컨드 단위로 작동하는 cpu scheduler이다.
- 어떤 프로세스를 다음 번에 running시킬지 결정한다. ➡️ context switching 순서 제어
- Long-term scheduler(장기 스케줄러 or job scherduler)
- 프로세스에 메모리(및 각종 자원)을 주는 문제를 다루고, 메모리에 이미 올라가 있는 프로그램의 수도 관리.(degree of multiprogramming)
- 시작 프로세스 중 어떤 것들을 ready, queue로 보낼지 결정(메모리 공간을 할당하고 각종 자원 줌.)
- time sharing system은 바로 new ➡️ ready이기 때문에 보통 장기 스케쥴러 X
48:00
'CS > OS' 카테고리의 다른 글
[OS] CPU Scheduling | preemptive & non-preemptive | 스케줄링 알고리즘 | 스케줄러 알고리즘 평가 (0) | 2023.05.11 |
---|---|
[OS] 운영체제가 하는 일4가지 (0) | 2023.04.15 |
[OS] 컴퓨터 시스템 구조 | 저장장치 계층 | 프로그램 실행 과정 | 커널 | 동기식/비동기식 IO | DMA (0) | 2023.04.06 |
[OS] Mode bit | Device Controller | Interrupt (0) | 2023.03.17 |
[OS] os를 공부하기 위해 알아야 하는 용어들 (0) | 2023.03.10 |