http://www.kocw.or.kr/home/cview.do?mty=p&kemId=1046323
해당 강의를 보고 개인적으로 정리를 하는 포스팅 입니다.
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
Process - program in execution 실행중인 프로그램
Process 의 문맥 (Context) - 프로세스의 진행상태 등 상태 정보
CPU 수행 상태를 나타내는 하드웨어 문맥
- Program Counter
- 각종 register
프로세스의 주소공간
- Code, Data, Stack
프로세스 관련 커널 자료구조
- PCB (이전시간에 나왔던 Process Control Block 프로세스 정보를 담고있는 프로세스와 1:1 인 커널 자료구조)
- Kernel Stack
Process 의 상태 (Status)
CPU, 공유데이터, 각 하드웨어는 각각 커널 주소공간에 Priority Queue 형태의 자료구조를 지님.
우선순위에 따라 상태를 변경해가며 상호작용 하여 프로세스를 수행시킴.
Running - CPU 를 할당받고 instruction 을 수행 가능한 상태
Ready - 메모리 할당 등 모든 준비는 마친 후 , CPU 할당을 대기하는 상태
Blocked(= wail, sleep) - 자신이 요청한 이벤트가 즉시 만족되지 않아 Pending 되어 CPU 를 주어도 당장 수행은 불가능 한 상태
(ex 디스크에서 파일 읽기)
Suspended(=stopper) - 외부적인 이유로 프로세스의 수행이 정지된 상태, 이때 프로세스는 통째로 메모리에서 디스크로 Swap out 됨
Blocked vs Suspended
Blocked : 요청한 이벤트가 완료되면 Reday
Suspended: 외부에서 resume 해주어야 Active가 됨 (유저든 커널이든)
PCB (Process Control Block)

PCB?
운영체제가 프로세스를 관리하기 위해 프로세스 당 유지하는 정보
구성요소
OS가 관리상 사용하는 정보:
- Process State, Process ID
- Scheduling Information, Priority
메모리 관련 정보
- Code, Stack, Data 의 위치정보 등
파일 관련 정보
문맥 교환 (Context Switching)
CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
빠른속도로 여러 Task 를 동시에 처리하는 것 처럼 보이게 함

과정
CPU 의 점유를 이동할때, CPU 를 내어주는 프로세스의 상태를 PCB 에 저장
CPU 의 점유를 얻는 프로세스는 프로세스의 정보(register, program counter 값 등) 을 PCB 에서 읽어와
기존에 진행하고 있던 상태를 그대로 이어서 진행할 수 있게 함
하지만 System call 이나 Interrupt 발생시 반드시 Context Switch 가 일어나는 것은 아니다.
예를 들어보자
1. 사용자 프로세스 A -> (interrupt or system call) -> Kernal Mode -> 사용자 프로세스 A
2. 사용자 프로세스 A -> (timer interrupt, I/O system call.. 등 오래걸리는 작업) -> Kernal mode -> 사용자 프로세스 B
1 의 경우엔 컨텍스트 스위칭이 일어나지 않음.
2는 컨텍스트 스위치 발생
1 역시 PCB 에 context 의 일부를 저장하지만, 부담의 정도가 다름.
예를 들면 context switching 이 발생하는 2번은 일반적으로 오버헤드가 큰 Cache memory flush 등도 같이 일어남
Context Switching 은 비용이 크다!
Scheduler
작업의 순서를 결정
종류
Long-term Scheduler (= Job Scheduler)
- new 프로세스 중 어떤 것들을 Ready Queue 로 보낼지 결정
- 프로세스에 Memory 및 각종 자원을 할당하는 문제를 판단
- Degree of MultiProgramming* 을 제어
- Time Sharing System 에서는 일반적으로 Job Scheduler 를 사용하지 않고 무조건 Ready 상태로 프로세스가 실행됨.
Short-term Scheduler (= CPU Scheduler)
- 어떤 프로세스를 Running 시킬지를 결정 즉 프로세스에 CPU 를 할당할지를 판단
- Millisecond 단위의 빠른 처리가 요구됨
Medium-Term Scheduler (= Swapper)
- 메모리 여유 공간 마련을 위해 필요에 따라 프로세스를 통째로 메모리에서 디스크로 스와핑 시킴 (= Suspend status)
- Degree of MultiProgramming 을 제어
- Time Scheduling System 에서는 Long-term Scheduler 가 아닌 이것을 사용함
'OS' 카테고리의 다른 글
| CPU Scheduling (0) | 2022.03.26 |
|---|---|
| 프로세스 생명주기 (0) | 2022.03.17 |
| Thread 쓰레드 (0) | 2022.02.27 |
| System Structure & Program Execution (0) | 2022.02.05 |
| 운영체제 Intro (0) | 2022.02.05 |