728x90
프로세스 상태
running state : 현재 cpu에서 실행 상태
ready state : cpu에서 실행 가능한 상태(실행 대기 상태)
block state : 특정 이벤트 발생 대기 상태( ex : 프린팅 완료)
스케줄러란
스케줄러는 레디 큐에 존재하는 프로세스들을 특정한 우선순위 기반으로 CPU를 할당받게 해주는 역할을 함
링크드 리스트, 해쉬 리스트, 비트 맵, 레드 블랙 트리(리눅스)로 구현
스케줄링 목적
- 처리량 최대화 - 스케줄링 규칙은 단위 시간당 가능하면 많은 프로세스가 서비스를 받을 수 있도록 해야 함
- 자원 활용도 최대화 - 시스템 자원을 부지런히 사용 해야 함
- 무기한 연기 회피 - 프로세스들이 서비스를 받으려고 한 없이 대기하면 안됨
- 우선순위 강화 - 시스템이 프로세스에 우선순위를 부여할 경우 스케줄링 메커니즘은 우선순위가 더 높은 프로세스를 선호 해야 한다
- 오버헤드(처리를 하기 위해 들어가는 간접적인 처리 시간, 메모리) 최소화 - 오버헤드는 자원 낭비
- 예측 가능성 보장 - 프로세스 반응 시간에 대한 통계적인 변량을 최소화함으로써 시스템은 프로세스가 예측 가능한 수준으로 서비스함을 보장
스케줄링 수준
- 고수준 스케줄링 : 어떤 작업이 시스템에 들어갈 것인지 결정
- 중간 수준 스케줄링 : 어떤 프로세스가 프로세서를 얻으려고 경쟁할 수 있는지 결정
- 저수준 스케줄링 : 정책은 활성화된 프로세스 중 어떤 프로세스에 프로세스를 할당할지 결정
선점형/비선점형 스케줄링
- 비선점형 스케줄링 :
- 시스템이 일단 프로세스를 어떤 프로세스에 할당한 경우 프로세스로부터 프로세서를 강제로 빼앗지 않는다
- 비선점형 스케줄링 규칙에서는 각 프로세스가 프로세서를 할당받으면 작업을 완료할 때까지 혹은 프로세스가 자발적으로 프로세서를 반납할때까지 프로세서에서 실행 할 수 있다
- 선점형 스케줄링
- 프로세서에서 프로세스가 실행 중일 때 시스템이 해당 프로세서를 빼앗을 수 없다
- 문맥전환을 일으킬 수 있다
스케줄링 알고리즘
비선점 스케줄링
- FCFS(First Come, First Served)
- CPU를 처음 요구한 프로세스가 CPU를 처음 사용
- FIFO(First in First Out) 큐 자료 구조 사용해 구현
- CPU를 사용하고 있는 프로세스 자기 자신이 CPU를 놓아줄 때까지 CPU를 다른 프로세스에게 양보하지 않음
- 콘보이 효과 불러 일으킬수 있음
- 콘보이 효과란 CPU를 매우 오래 사용하는 프로세스가 도착하게 되면 다른 프로세스가 CPU를 사용하는 시간이 매우 커지는 현상을 말함
- 비선점 스케줄링을 사용할 때만 발생
- 장점 : FCFS는 모든 프로세스가 공평한 조건으로 CPU를 사용할 수 있게 해주면 반응시간 예측 가능
- 단점 : 대기 시간이 매우 긴 스케줄링 알고리즘
선점 스케줄링
- SJF(Shortest Job First)
- 가장 시간이 적게 걸리는 작업을 먼저 함
- CPU 업데이트 될 때 가장 시간이 적게 걸리는 프로세스가 선택되어 실행
- SJF는 비선점 스케줄링, 선점 스케줄링 2가지 종류가 있음
- 선점형 SJF는 SRTF(Shortest Remaining Time First)라고도 한다
- 장점 : 평균 대기시간을 가장 적게 가지는 스케줄링 알고리즘
- 단점 :
- 최소의 오버헤드로 최적의 성능 보장하도록 구현하는 것이 힘듬
- 선점형 SJF에서는 프로세스끼리 끼어들기 때문에 CPU가 점유 시간을 예측하는것이 힘듬
- Priority Scheduling
- 높은 우선순위를 가진 프로세스가 항상 먼저 CPU를 사용할 수 있도록 구현
- 우선순위가 낮은 프로세스는 영원히 작동하지 않을 수 있음
- 해결책 : Aging-method(레디 큐에서 오랜 시간을 기다린 프로세스의 우선 순위를 높히는 방법)
- Round Robin(RR)
- Round Robin 스케줄링은 각각의 프로세스가 공평하게 시간 간격 동안 CPU를 활용할 수 있도록 하는 알고리즘
- 정해진 시간 간격이 끝나면 CPU를 사용하고 있던 프로세스는 선점적으로 추방(레디 큐에 다시 들어가게 된다.)
- Round Robin은 SJF 스케줄링 보다 반응 시간 최적화에 있어서 탁월 하지만 대기 시간 최적화가 떨어짐
'개발자 면접 공부 > 운영체제,CS' 카테고리의 다른 글
가상메모리(페이지 교체 알고리즘) (0) | 2020.02.14 |
---|---|
메모리 관리 전략, 가상메모리 (0) | 2020.02.10 |
동기 비동기(프로세스 동기화) (0) | 2020.01.20 |
프로세스(PROCESS) , 스레드(THREAD) #2 (0) | 2020.01.18 |
프로세스(PROCESS),스레드(THEREAD) (0) | 2020.01.11 |