Process Scheduling
이번 글에서는 프로세스 스케줄링에 대해 간단히 알아보겠습니다.
- 스케줄링은 멀티프로그래밍/멀티태스킹시스템에서 하는 것
- 멀티프로그래밍/멀티태스킹시스템 = 시스템안에 여러 개의 프로세스가 존재하여 메모리 cpu를 번갈아가며 사용하는 것.
- Cpu utilization을 높이는 것이 중요한 issue
- CPU/processor = time sharing (시분할 지원)
- Memory = space sharing (공간할 지원) = 프로세스 간 공간을 나눠서 메모리를 사용
Performance Measures
- Response Time : 요청을 보낸 뒤 그 요청에 대한 첫번째 response(응답)이 올때 까지의 시간을 의미합니다. 사용자가 컴퓨터의 어떤 아이콘을 눌러 작업 처리를 요청했을 때 로딩 중이라는 표시 등이라도 빨리 떠야 시스템의 성능이 좋다고 느끼기 때문에 아주 중요한 지표입니다. 즉, 응답 시간은 요청 ~ 요청에 대한 반응 사이의 시간을 의미하는 것입니다.
- Throughput : 단위 시간당 처리량을 의미하는 것으로 일정 단위 시간 동안 종료하고 나가는 프로세스의 개수를 나타내는 지표입니다.
- Resource utilization : 전체 시간 대비 특정 자원 (디바이스)가 사용된 시간을 나타내는 지표로 자원 마다 따로 계산이 가능합니다.
- Turn Around Time : 하나의 프로세스가 실행되어 완전히 종료될 때까지 걸리는 시간을 나타내는 지표입니다.
- Waiting Time : 프로세스가 서비스를 받기 위해 ready queue에서 기다리는 시간의 총합을 나타내는 지표입니다. 만일, 프로세스 스케줄링이 공정하지 못하여 특정 프로세스가 계속해서 서비스 받지 못하는 상황이 오면 해당 프로세스의 waiting time이 길어지게 되는 것이죠.
- Predictability : 분산 또는 표준 편자가 좁을 수록 예측 가능성이 높다고 판단합니다.
- Fairness : 스케줄링 기법이 얼마나 공정한지, 즉, 특정 프로세스만 대기 시간이 길지 않도록 유지하는 것이 공정성을 지키는 것입니다.
Scheduling Criteria
프로세스 특징 및 속성 별 스케줄링 우선 순위
- I/O bound 프로세스 > CPU bound 프로세스
- I/O bound 프로세스는 CPU 사용보다 입출력이 많은 프로세스입니다.
- CPU bount 프로세스는 반대로 CPU 사용이 입출력보다 많은 프로세스입니다.
- I/O bound 프로세스는 CPU를 길게 쓰지 않고 쓰다가 입출력 요청이 처리될 때까지 asleep 상태에 빠지기 때문에 입출력 처리 디바이스와 CPU를 병렬적으로 운영되는 시간이 길어지게 합니다.
- 따라서 CPU 와 입출력 디바이스 등 전체 자원의 활용도를 높이기 위해 I/O bound 프로세스를 CPU bound 프로세스보다 우선적으로 스케줄링합니다.
- Batch 프로세스 < Interactive 프로세스
- Batch 프로세스는 사용자가 프로그램을 실행시키면 사용자와 상호작용 없이 시스템 혼자서 작업을 처리하는 프로세스입니다.
- Interactive 프로세스는 사용자와 상호작용하는 프로세스입니다.
- 사용자의 대기 시간이 길어지는 것은 성능이 나쁘다고 판단하는 큰 요소이기 때문에 Interactive 프로세스를 우선적으로 스케줄링합니다.
- Foreground 프로세스 > Background 프로세스
- Background 프로세스는 사용자 간섭이 보이지 않는 곳에서 실행 중인 프로세스 입니다. 이 프로세스는 키보드와의 연결 없이 수행할 수 있는 작업입니다. 하나의 프로세스가 동작하도 있는 동안에도 다른 프로세스를 동작시킬 수 있다는 특징을 가집니다.
- Foreground 프로세스는 백그라운드 프로세스와 달리 사용자가 간섭할 수 있고 눈으로 확인할 수 있습니다. 키보드로부터 입력을 받고, 결과를 스크린에 출력합니다. 이 프로세스는 한 커맨드가 실행되고 있는 동안에는 다른 것을 실행시킬 수 없다는 특징을 가집니다.
- 위의 특징으로 인해 foreground 프로세스를 우선적으로 스케줄링합니다.
- Urgency of the process in real time system
- deadline을 가지고 있는 프로세스들 - 대학원 별도의 과목으로 존재할만큼 복잡한 내용이지만 간단하게 그 종류를 나누자면 다음과 같습니다.
- hard real time : 데드라인을 반드시 지켜야 하는 프로세스
- soft real time : 최대한 데드라인을 지키려고 하지만 그렇지 못할 경우에는 지키지 않아도 되는 프로세스
- non real time : 데드라인이 없는 프로세스
- Process type and importance
- 프로세스의 중요도가 높은 것부터 스케줄링합니다.
- 예를들어 이 중요도는 사용자가 등급에 따라 프롯세스의 우선순위를 매길 수 있습니다.
- 스케줄링에 사용자가 개입하는 것은 아주 복잡한 일이기 때문에 요즘에는 거의 사용되지 않습니다.
- Service time of the process
- 프로세스가 할당 받은 CPU를 한번에 사용하는 시간이 짧은 프로세스부터 먼저 스케줄링합니다.
- 스케줄링 받은 후에 CPU를 사용할 수 있는 시간에 제한을 두기도 하는데 이 제한된 시간 안에 해당 프로세스의 작업이 끝나지 않으면 잠시 대기 후 다시 스케줄링 받아야 하는데 이는 뒤에 있는 프로세스들이 밀리게 만듭니다.
- I/O bound 프로세스가 먼저 스케줄링되는 이유도 이와 같습니다.
Scheduling Level
Long Term
- Job을 프로세스로 creation 할지 결정하는 스케줄링
- 시스템 내부에 너무 많은 프로세스가 created되어 있으면 모든 시스템의 성능이 떨어지게 됩니다. 따라서 시스템 내부의 프로세스 개수를 조절해야 하는데 이를 위해 롱텀 스케줄링이 필요합니다.
- 시스템 내부에 I/O bound 프로세스와 CPU bound 프로세스를 적절히 섞여 있게 조절합니다.
Medium Term
- 메모리 할당 순서를 결정하는 스케줄링 (swapping)
- 추후 메모리 관리 챕터에서 다루겠습니다.
Short Term (process scheduling)
- 프로세스 스케줄링
- CPU 할당 순서를 결정하는 스케줄링으로 이번 글과 다음 글에서 배울 내용입니다.
- Interrupt 또는 system call 발생시 프로세스 스케줄링을 해야 합니다.
- 보통 프로세스가 CPU를 한번 사용하는 시간이 100이지만, 스케줄링 시간이 10이라고 한다면 낭비가 발생하는 것이기 때문에 스케줄링 자체를 빠르게할 수 있는 것도 스케줄링 기법 선정의 기준이 됩니다.
Scheduling Policies
Preemptive
- 선점 가능
- 선점은 강제적으로 CPU를 사용하며 작업을 하는 running 상태에서 쫒겨날 수 있다는 것을 의미합니다.
- CPU가 현재 실행 중인 프로세스의 의지와 관련 없이 다른 프로세스에 할당되는 것입니다.
- 프로세스가 스케줄링되어 CPU를 사용하게 되면 일정 시간 (time quantum)이 정해져 있습니다.
- 이 시간을 넘으면 Preemption되기 때문에 CPU 사용시간이 긴 하나의 프로세스가 CPU를 독점하는 상황을 예방할 수 있습니다.
- 반점은 Preemption될 때 context switching이 필요한데 이 작업의 오버헤드가 큽니다.
Non-preemptive
- time quantum이 없어 하나의 프로세스가 CPU를 사용하면 해당 프로세스 작업이 끝날 때까지 CPU를 사용합니다.
- 프로세스가 끝나면 스스로 asleep 상태로 들어가 CPU를 반납합니다.
- 주로 batch system에서 많이 사용합니다.
- 프로세스가 CPU 사용 중 I/O 요청이 들어와 중단되면 스스로 CPU 사용을 중단하기 전까지 다른 프로세스들도 CPU를 사용할 수 없는 문제가 발생합니다.
- 하지만 context switching이 덜 발생한다는 장점도 있습니다.
Related Terminologies
- CPU burst : CPU가 시행되는 한 번의 사이클
- I/O burst: I/O를 기다리는 한 번의 사이클
- Bust time : 스케줄링의 기중
- 모든 프로세스는 CPU burst와 I/O burst를 반복하며 실행
이번 글에서 프로세스 스케줄링에 대해 알아보았습니다.
분량이 너무 많아서;; 이번 글은 여기까지만 하고, 다음 글에서 스케줄링 기법에 대해 마저 설명하겠습니다.
감사합니다 :)
References
- 성균관대학교 소프트웨어대학 엄영익 교수님 <운영체제> 수업
'컴퓨터 공학 > 운영체제' 카테고리의 다른 글
5. 프로세스 동기화 (0) | 2021.02.09 |
---|---|
4 (2). 프로세스 스케줄링 : 스케줄링 기법 (0) | 2021.02.02 |
3. 운영체제 공부를 위한 사전 지식 (0) | 2021.01.29 |
2. 운영체제의 개념, 주요 기능, 구조 (0) | 2021.01.11 |
1. 운영체제 공부를 시작하며 (0) | 2021.01.08 |