[운영체제](반효경) 4강. Process(1)
프로세스
프로세스의 개념
💡 “Process is a program in execution” - 프로세스는 실행중인 프로그램이다.
- 프로세스의 문맥(Context)
- CPU 수행상태를 나타내는 하드웨어 문맥
- Program Counter
- 각종 Register
- 프로세스의 주소공간
- code, data, stack
- 프로세스 관련 커널 자료 구조
- PCB(Process Control Block)
- Kernel Stack
- CPU 수행상태를 나타내는 하드웨어 문맥
프로세스의 상태(Process State)
*본 수업은 CPU가 1개인 컴퓨터를 기준으로 설명함
- 프로세스는 아래와 같은 상태가 번갈아가며 수행된다.
- Running
- CPU를 잡고 instruction을 수행중인 상태
- Ready
- CPU를 기다리는 상태(메모리 등 다른조건을 모두 만족한)
- Bloacked(wait, sleep)
- CPU를 주어도 당장 instruction을 수행할 수 없는 상태
- Process 자신이 요청한 event(e.g. I/O)가 즉시 만족되지 않아 이를 기다리는 상태
- e.g. 디스크에서 file을 읽어와야 하는 경우
- Suspended(Stopped) ← 중기스케쥴러의 도입으로 추가된 개념
- 프로세스가 메모리를 아에 잃어버리는 상태를 일컫는다
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에 swap out된다
- e.g. 사용자가 프로그램을 일시정지 시킨경우(break key) 시스템이 여러 이유로 프로세스를 잠시 중단시킴(메모리에 너무많은 프로세스가 올라와 있을때)
- New
- 프로세스가 생성중인 상태
- Terminated
- Execution이 끝난 상태
- Running
💡 Blocked: 자신이 요청한 event가 만족되면 Ready Suspended: 외부에서 resume해 주어야 Active그 외(일반적으론 위 4개로 나눔)
프로세스 상태도
- 다른 queue에서의 일이 끝나면 controller가 CPU한테 interrupt를 건다.
- Queue는 운영체제의 커널의 Data 영역에 자료구조 형태로 구현되어 있음
PCB(Process Control Block)
- 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
- 다음의 구성 요소를 가진다(구조체를 유지)
- OS가 관리상 사용하는 정보
- Process State, Process ID
- Scheduling Information, Priority
- CPU 수행 관련 하드웨어 값
- Program Counter, Registers
- 메모리 관련
- Code, Data, Stack의 위치 정보
- 파일 관련
- Open file descriptors 등
- OS가 관리상 사용하는 정보
문맥 교환 (Context Switch)
- CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
- CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행
- CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어옴
- System Call이나 Interrupt 발생 시 반드시 Context Switch가 일어나는 것은 아님
💡 (1)의 경우에도 CPU 수행정보 등 context의 일부를 PCB에 save해야 하지만, 문맥교환을 하는 (2)의 경우 그 부담이 훨씬 큼(e.g. Cache Memory Flush)
프로세스를 스케줄링하기 위한 큐
- Job Queue
- 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready Queue
- 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device Queue
- I/O device의 처리를 기다리는 프로세스의 집합
💡 프로세스들은 각 큐들을 오가며 수행된다. (PCB를 그 포인터를 사용해 연결 해놓는다)
Scheduler
디스크 스케쥴러도 있으나 여기서는 다루지 않음
1. Long-term scheduler(장기 스케줄러 or job scheduler)
- 시작 프로세스 중(new상태의 프로세스) 어떤 것들을 ready queue로 보낼지 결정(메모리를 줘야 비로소 Ready로 올라감)
- 프로세스에 메모리 및 각종자원을 주는 문제
- Degree of Multiprogramming(메모리에 몇개의 프로그램이 올라갈지)을 제어
- time sharing system에는 보통 장기 스케줄러가 없음(무조건 Ready)
2. Short-term scheduler(단기 스케줄러 or CPU scheduler)
- 어떤 프로세스를 다음번에 running시킬지 결정
- 프로세스에 CPU를 주는 문제
- 충분히 빨라야 함(millisecond 단위)
3. Medium-Term Scheduler(중기 스케줄러 or Swapper)
→ 이 스케쥴러의 도입으로 Process의 Suspended상태 개념이 추가됨
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄
- 프로세스에게서 메모리를 뻇는 문제
- Degree of Multiprogramming을 제어
'CS > OS' 카테고리의 다른 글
[운영체제](반효경) 5강. Process Management (0) | 2022.08.09 |
---|---|
[운영체제](반효경) 4강. Process(2) (0) | 2022.08.09 |
[운영체제](반효경) 3강. SystemStructure & Program Excution(2) (0) | 2022.08.09 |
[운영체제](반효경) 3강. SystemStructure & Program Excution(1) (0) | 2022.08.09 |
[운영체제](반효경) 2강. Introduction to Operating Systems (0) | 2022.03.28 |
댓글
이 글 공유하기
다른 글
-
[운영체제](반효경) 5강. Process Management
[운영체제](반효경) 5강. Process Management
2022.08.09 -
[운영체제](반효경) 4강. Process(2)
[운영체제](반효경) 4강. Process(2)
2022.08.09 -
[운영체제](반효경) 3강. SystemStructure & Program Excution(2)
[운영체제](반효경) 3강. SystemStructure & Program Excution(2)
2022.08.09 -
[운영체제](반효경) 3강. SystemStructure & Program Excution(1)
[운영체제](반효경) 3강. SystemStructure & Program Excution(1)
2022.08.09