Job / 프로그램
프로세스
- 시스템 성능 향상을 위해 커널이 관리한다.
Job vs Process
아직 디스크에 있으면 Job
커널에 올라가면 Process
프로세스의 정의
: 실행중인 프로그램
- 각종 자원들을 요청하고 할당 받을수 있는 개체
- PCB를 할당받은 개체
- 능동적인 개체
프로세스 종류
역할에 따라
- 시스템 프로세스
- 사용자
병행수행방법에 따라
- 뭐랑
- 뭐
자원(resource)의 개념
: 커널의 관리하에 프로세스에게 할당/반납되는 수동적 개체
이 자원을 커널이 관리한다
- H/W 자원
- S/W 자원
What is PCB(Process control block)
프로세스를 제어하기위해 필요한 정보들 관리하는 곳
커널이 가지고 있겠죠
PCB가 관리하는 정보
- PID
- 스케줄링 정보
- 프로세스 상태
- 메모리 관리 정보
- 입출력 상태 정보
- 문맥 저장 영역 (context save area)
- 계정 정보
PCB 정보는 OS별로 서로 다르다
OS의 성능을 결정짓는다.
Process 의 상태
Created State
어떤 Job이 커널에 등록
쓸 수 있는 메모리 공간이 있으면 ready로
없으면 suspended ready
Ready State
프로세서를 기다리는 상태
- 즉시 실행 가능 상태
running 으로 바뀌는 걸 dispatch 라고 한다.
Running State
프로세서를 할당받은 상태
프로세서를 뺏겨서 쫓겨나면 ready로. preemption이라 부름
I/O 자원이 필요하면 asleep으로. block 됐다고 한다.
Blocked / Asleep State
I/O 자원 할당 받으면 ready로 간다. wake up 이라 부름
running으로 못간다!! (프로세서에 다른 자원이 있을 수 있으니까 새치기 안된다)
Suspended State
메모리를 할당 받지 못한 상태
- 다른 메모리가 차지한다. 그럼 이전 메모리에 대한 정보는 어디서, 어떻게 저장?
Memory image를 swap device(HDD라생각하세요) 에 보관 - swap-out, swap-in
Terminated State
프로세스 수행이 끝난 상태
(근데 수행 끝났으면 소멸되면 되는데 왜 상태를 부여하지?)
프로세스가 어떤 자원들을 주로 요청했는지 등
이후의 프로세스 작업에 효율을 위해 정보 수집
모든 자원은 다 반납하고, PCB정보만 남아있는 상태다.
인터럽트 Interrupt
: 예상치 못한, 외부에서 발생한 이벤트
- 종류
- I/O interrupt
- 예) 마우스 클릭
- Clock interrupt
- Console interrupt 등등
- I/O interrupt
인터럽트 처리과정
- 인터럽트 발생
- 커널이 개입해서 프로세스 중단
- Context Saving 발생 : 어디까지 일했는지를 PCB(커널 내부)에 저장
- (프로세서) Ready 상태의 프로세스가 프로세서 할당 받는다.
- 인터럽트 처리 (커널)
- Interrupt Handling
- 인터럽트 발생 장소, 원인 파악
- 인터럽트 서비스 할 것인지 결정
- Interrupt Service (커널→프로세서)
- 결정 됐다면 인터럽트 서비스 루틴 호출!
- Interrupt Handling
Context Switching (문맥 교환)
Context
: 프로세스와 관련된 정보들의 집합
- CPU register context (CPU 안에 저장) : 메인메모리의 정보를 반드시 register에 받아와서 CPU에서 사용
- Code & data, Stack, PCB (메모리 안에 저장)
Context Saving
(프로세서를 뺏기거나, 시간이 다됐을 때) 현재 프로세스의 CPU register context를 (메모리의 PCB에) 저장하는 작업
Context Restoring
Register context를 프로세스로 복구하는 작업
Context Switching ≒ Process Switching
≒ ( Context Saving + Context Restoring )
실행중인 프로세스의 context를 저장하고
앞으로 실행할 프로세스의 context를 복구하는 작업
- 커널의 개입으로 이루어진다.
Context Switch Overhead
- Context Switch에 소요되는 비용
- (많은 process를 사용하기 때문에 context switch 많이 일어난다.)
- OS마다 다름
- OS성능에 큰 영향을 줌
- 불필요한 context switching을 줄이는 것이 중요하다!!
- 어떻게? 스레드(thread)를 사용해라(뒤에서 배운다)
'Study > OS' 카테고리의 다른 글
Chapter 05. Process Scheduling (2of4) - FCFS, RR (0) | 2021.06.23 |
---|---|
Chapter 05. Process Scheduling (1of4) (0) | 2021.06.23 |
Chapter 04. Thread Management (0) | 2021.06.23 |
Chapter 02. OS Overview (0) | 2021.06.16 |
Chapter 01. Computer System Overview (0) | 2021.06.15 |