운영체제 (operating system, os)
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트 웨어와 하드웨어를 연결하는 소프트웨어 계층

좁은 의미 - 커널: 운영체제의 핵심 부분으로 메모리에 상주함
넓은 의미 : 커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념
운영체제 목적
- 편리하게 사용할 수 있도록 환경 제공
- cpu 메모리등의 자원를 효율적 관리
프로그램들에게 메모리 효율적인 분배 & cpu를 번갈아 할당
효율성: 주워진 자원으로 최대한 성능
형평성: 특정 사용자/프로그램에 불이익이 발생되지 않도록
운영체제 기능
- cpu 스케줄링: 어떤 프로그램에게 사용권을 줄 지 결정
- 메모리 관리: 한정된 메모리 관리
- 디스크 스케줄링: 디스크에 들어온 요청을 어떤 순서로 처리할지 결정
- 인터럽트, 캐싱: 빠른 cpu와 느린 i/o장치 간의 속도차이 극복하기 위해 사용
cpu 스케쥴링

처리속도가 짧은 process가 먼저 도착했다면?

그렇다면 이를 최적화하는 방법은 ?
SJF(shortest job first)
- cpu 사용시간이 가장짧은 프로세스를 제일 먼저 스케줄
- 최소 평균 대기 시간을 보장 (minimum average waiting time)

문제점
starvation (기아현상) 발생 가능
이유: 사용시간이 긴 프로세스가 무한정 대기할 수 있음
RR(round robin)
- 각 프로세스는 동일 크기의 cpu 할당시간을 가짐
- 할당시간이 끝나면 인터럽트가 발생하고 프로세스는 cpu를 빼앗기고 cpu queue 맨 뒤로 입력됨
- n 개의 프로세스가 cpu queue에 있을 경우
어떤 프로세스도 (n-1)*할당시간 이상 대기하지 않음
대기시간이 프로세스 사용시간에 비례

reference