#스케쥴링 알고리즘
#프로세스(process) - 작업, task, job 이라는 용어와 혼용
메모리 위에서 실행 중인 프로그램을 말함
#알고리즘
어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것
유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다.
#알고리즘의 조건
알고리즘은 다음의 조건을 만족해야 한다.
입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.
출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다. (즉 모든 입력에 하나의 출력이 나오면 안됨)
명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
유한성(종결성) : 유한번의 명령어를 수행 후(유한 시간 내)에 종료한다.
효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다.
# 좋은 알고리즘의 분석 기준
정확성 : 적당한 입력에 대해서 유한 시간내에 올바른 답을 산출하는가를 판단.
작업량 : 전체 알고리즘에서 수행되는 가장 중요한 연산들만으로 작업량을 측정. 해결하고자 하는 문제의 중요 연산이 여러 개인 경우에는 각각의 중요 연산들의 합으로 간주하거나 중요 연산들에 가중치를 두어 계산
기억 장소 사용량 : 수행에 필요한 저장 공간
최적성 :그 알고리즘보다 더 적은 연산을 수행하는 알고리즘은 없는가? 최적이란 가장 '잘 알려진' 이 아니라 '가장 좋은'의 의미이다
#코드 이미지(바이너리)
실행 파일 ex. ELF format
#응용 프로그램은 프로세스는 아니다.
응용 프로그램은 여러 개의 프로세스로 이루어 질 수 있음
#하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행 될 수도 있음
- UNIX 철학
- IPC 기법
#스케쥴러가 프로세스 실행을 관리한다.
#스케쥴링 알고리즘
- 어느 순서대로 프로세스를 실행시킬까??
시 분할 시스템 ex. 프로세스 응답 시간을 가능한 짧게
멀티프로그래밍 ex. CPU 활용도를 최대로 높여서, 프로세스를 빨리 실행
가정 : 프로세스가 저장매체를 읽는다던지, 프린팅을 한다는 작업 없이, 쭉 CPU를 처음부터 끝까지 사용한다.
#FIFO 스케쥴러
- 가장 간단한 스케쥴러(배치 처리 시스템)
- FCFS (First Come First Served) 스케쥴러
#SJF 스케쥴러(최단 작업 우선)
- SJF (Shortest Job First) 스케쥴러
- 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘
단점 : 실행시간을 다 알아야 이런 알고리즘이 가능함
#RealTime OS(RTOS)
응용 프로그램 실시간 성능 보장을 목표로 하는 OS
- 정확하게 프로그램을 언제 시작할지, 완료 시간을 언제할지 보장
- 시간에 민감한 프로세스들을 동작해야 하는 시스템에서 RTOS 사용
- GPOS보다 간단
- Hardware RTOS, Software RTOS
#General Purpose OS(GPOS)
- 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS
- Windows, Linux
#우선순위 기반 스케쥴러
Priority-Based 스케쥴러 - 우선 순위가 높은 순서대로 CPU에 실행시킨다.
그래서 우선 순위를 어떻게 매기는데??
- 정적 우선순위
프로세스마다 우선순위를 미리 지정
- 동적 우선순위
스케쥴러가 상황에 따라 우선순위를 동적으로 변경
#Round Robin 스케쥴러
시 분할 시스템 기반
#멀티 프로그래밍과 Wait
멀티 프로그래밍 : CPU 활용도를 극대화하는 스케쥴링 알고리즘
Wait : 간단히 저장매체로 부터 파일 읽기를 기다리는 시간으로 가정
#프로세스 상태
Running state : 현재 CPU 에서 실행 상태
ready state : CPU에서 실행가능상태 (실행 대기 상태)
block state : 특정 이벤트 발생 대기 상태