반응형
멀티태스킹(Multitasking)이란?
여러 프로세스 내에서 여러 작업을 동시에 수행하는 것을 의미한다. 정확히는, 멀티태스킹은 CPU의 스케줄링을 통해 "동시에 수행하는 것처럼 보이는 것"이다.
멀티프로세싱은 실제로 CPU병렬 처리를 통해 동시에 작동하는 것으로 차이가 있다.
멀티태스킹 스케줄링 방식
- 멀티프로그래밍 : 여러 프로그램이 메모리에 동시에 적재되어 CPU가 필요할 때마다 프로그램을 실행
- 시분할 : 여러 프로세스가 동시에 실행되는 것처럼 보이도록 각 프로세스에 시간 할당량을 주고 CPU를 빠르게 전환해주는 방식
- 실시간 시스템 : 시스템의 응답시간이 중요한 환경에서 특정 작업을 정해진 시간안에 완료해야 하는 방식
스케줄링 알고리즘
비선점형 스케줄링 (Non-preemptive Scheduling)
프로세스가 스스로 CPU의 소유권을 포기하는 방식. CPU가 강제로 프로세스를 중지하지 않음.
FCFS(First Come First Served), FIFO(First In First Out)
- 먼저 도착한 프로세스가 먼저 실행되는 방식.
- 길게 수행되는 프로세스 때문에 준비 큐에서 오래 기다리는 현상(Convoy effect)이 발생할 수 있음.
SJF (Shotest Job First)
- 실행시간이 가장 짧은 프로세스를 우선적으로 실행.
- 긴 시간을 가진 프로세스가 실행되지 않는 현상(starvation)이 일어날 수 있음.
때문에 오래된 작업일 수록 우선순위를 높여 단점을 보완한 알고리즘이 탄생.
우선순위는 작업 시간, 프로세스 메모리 요구사항, 열린 파일 수 , 평균 CPU 사용량 등을 고려해서 설정 - 평균 대기 시간은 가장 짧음.
- 하지만 실제 실행 시간을 알 수 없어 과거의 실행했던 시간을 토대로 추측해서 사용.
선점형 스케줄링 (Preemptive Scheduling)
현대 운영체제가 쓰는 방식. CPU가 현재 실행 중인 프로세스를 강제로 중단하고, 다른 프로세스에 CPU를 할당하는 방식
라운드로빈(Round Robin)
- 각 프로세스에 일정한 시간 할당량을 주고, 그 시간안에 끝나지 않으면 ready queue 의 뒤로 가는 알고리즘.
- 할당 시간이 너무 크면 FCFS가 되고, 짧으면 컨텍스트 스위칭이 잦아져 오버헤드가 커짐.
- 전체 작업시간을 길어지지만 평균 응답시간을 짧아진다.
- 로드밸런서의 트래픽 분산 알고리즘이 대표적 예
다단계 큐
- 우선순위에 따른 준비큐를 여러개 사용. 큐마다 라운드 로빈이라 FCFS 등 다른 스케줄링 알고리즘을 적용.
- 큐 간의 프로세스 이동이 안됨. -> 스케줄링 부담은 적지만 유연성은 떨어짐.
- 우선순위가 낮은 큐의 프로세스가 처리 안되는 기아현상 발생할 수도 있음.
SRF (SRTF, Shortest Remaining Time First)
- 중간에 더 짧은 작업이 들어오면 수행하던 프로세스를 중지하고 해당 프로세스를 수행
728x90
반응형
'Computer Science > Operating System' 카테고리의 다른 글
경쟁상태 해결하기 - 뮤텍스, 세마포어, 모니터 (0) | 2024.11.01 |
---|---|
공유자원과 경쟁 상태, 임계영역 (1) | 2024.10.31 |
프로세스의 상태 (0) | 2024.10.29 |
IPC(Inter-Process Communication) (0) | 2024.10.29 |
멀티프로세싱(Multiprocessing), 멀티스레딩(Multithreading) (0) | 2024.10.24 |