# 프로세스 스케쥴러
-배치 처리 시스템
이를 이해하기 위해 큐 자료구조를 이용해 보자
-First in First out
-시분할 시스템 :다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화.
시간 단위로 쪼개서 a1a2a3a1a2a3
-멀티태스킹
여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템
ex)음악을 들으며 문서 작성을 한다.
멀티 태스킹 :단일 cpu
멀티 프로세싱 : 다중 cpu 여러 cpu에 하나 프로그램을 병렬로 실행해서 실행속도를 극대화시키는 시스템
-멀티프로그래밍
OS가 CPU에게 명령을 내렸을 때 CPU가 '파일이 오픈이 되는지 안되는지를 확인 할 때 다른 어플리케이션을 활요한다.
3,0,0,0,0,0,3
⇒ 3,1,1,1,1,1,3
=⇒저장매체를 오픈할 수 있는지 없는지는 CPU입장에서는 오래 걸리는 작업이다 그 사이에 다른 응용프로그램 명령을 하는 것이 더 효율적
프로세스란?
-실행 중인 프로그램은 프로세스라고 함
프로세스 ;메모리에 올려져서 실행 중인 프로그램
**스케쥴링 알고리즘**
OS가 어느 순서대로 프로세스를 CPU한테 얘기할까에 대한 알고리즘
목표
프로세스 응답을 짧게
CPU 활용도를 높이는데 사용
예시 32221
- FIFO 스케쥴링(가장 간단한 스케쥴러
First Come First Served
(Q라는 자료구조로 처리)
12223
- SJF최단 작업 우선(Shortes Job First)스케쥴러
13222
- 우선순위 기반 스케쥴러
22213
정적 우선순위
프로세스마다 우선순위를 미리 지정
동적 우선순위
스켸줄러가 상황에 따라 우선순위를 동적으로 변경
- Round Robin 스케쥴러
시분할을 베이스로 순서대로 시작하고 레뒤큐에서 대기를 한 상태에서 CPU에서 처리함.
123232
**멀티 프로그래밍과 wait(어려움)**
cpu의 활용도를 극대화 하기 위해서 어떤 시점에 어떤 프로그램을 실행할 것인가에서 시작.
1. 스케쥴러가 어떤 시점에 어떤 프로그램을 실행할지를 안다면??
ready상태 : CPU에서 실행이 바로 가능한 상태
block상태 특정 이벤트 발생 대기 상태 EX) 프린트가 다 되었다.
RUNNING STATE 상태 ( 현재 CPU 실행 상태)
EX)파일 읽는 중 ~ 메모리에서 찾기?!
Running : CPU를 잡고 인스트럭션(instruction)을 수행중인 상태
Ready : CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하는 상태)
Blocked (wait, sleep) : ex) 파일 읽어오기
- CPU를 주어도 당장 instruction을 수행할 수 없는 상태
- process 자신이 요청한 event(ex: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
ex) 디스크에서 file을 읽어와야 하는 경우
시분할 시스템으로 AAABBCC라는 응용프로그램 명령이 있다고 가정하자 A가 'Running'중이라면 B를 실행하기 위해서 A를 READY 상태로 바꿔주고 B 응용프로그램을 RUNNING 상태로 바꿔준다.
처음에는 READY STATE상태로 Q의 자료구조로 빠져나옴
RUNNING 상태가 되면 다른 프로세스를 READY STATE에서 찾음
WAIT 상태는 ⇒ BLOCK 상태로 변함
선점형과 비선점형 스케쥴러
비선점형 스케쥴러: 1번의 PROCESS가 5초 이상으로 길다면 다른 프로세스를 CPU가 처리하는데 오래 걸릴 수 있음.
선점형은 : 다른 우선순위 기준으로 바꾸기 (EXIT OR BLOCK 상태를 설정하여 처리함)
'운영체제' 카테고리의 다른 글
프로세스와 스케쥴러 2탄 (0) | 2021.10.15 |
---|---|
운영체제의 시작 (0) | 2021.10.15 |