이미지 출처 : https://en.wikipedia.org/wiki/Thread_%28computing%29
- 하나의 프로세스에 두가지 이상의 작업 처리 가능
동시성(Concurrency)
와 병렬성(Parallelism)
동시성
: 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행할 수 있는 성질병렬성
: 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행할 수 있는 성질생성 -> 준비 -> 실행 <> 대기 -> 종료 (크게 5가지 상태로 구분)
ReadyQueue
나 메인 메모리에 여러 프로그램들이 대기 상태로 존재할 때, 현재 실행중인 프로세스가 종료되면, 다음 프로세스로 어떤 것을 선택하여 실행시킬지 결정하는 작업을 CPU 스케쥴링이라 한다.선점 Preemptive
: CPU를 강제로 점유할 수 있는 방식
First-Come, First-Served(FIFO)
: 선입선출(비선점형), 먼저 온 프로세스를 먼저 처리하는 스케쥴링 방식
Shortest-Job-First(SJF)
: (선점 또는 비선점으로 구현), 실행시간이 가장 짧은 것부터 처리하는 스케쥴링 방식
Priority(우선순위)
: (선점 또는 비선점으로 구현), 기아현상을 극복하기 위해 aging 기법 사용
ReadyQueue
에서 기다리는 프로세스 중 우선순위가 가장 높은 프로세스에게 cpu를 할당하는 방식RoundRobin(라운드 로빈)
: 시분할 시스템 성질을 가장 잘 활용한 방법
multi-level queue
: ReadyQueue
를 여러개로 분할하여 관리
multi-level feedback queue
: 멀티 레벨 큐와 비슷하나, 프로세스가 다른 큐로 이동할 수 있음
다중 처리기 스케쥴링
: cpu가 여러개인 시스템을 다중 처리기 시스템이라고 한다.
실시간 스케쥴링
: 작업마다 주어진 데드라인 존재, 그 안에 반드시 작업을 처리