순서는 다음과 같습니다

1. CPU 스케줄링이 필요한 이유
2. CPU 스케줄링의 성능 평가 기준
3. CPU 스케줄링의 종류

1. CPU 스케줄링이 필요한 이유

   - 프로세스는 동작하려면 CPU가 필요함

   - 많은 프로세스들이 CPU를 요구할 때, CPU는 그 중 어떤 프로세스를 실행해야할지 선택해야함

   - CPU에 어떤 프로세스를 할당할 지 결정하는 것을 CPU 스케줄링이라고 


2. CPU 스케줄링의 성능 평가 기준

   - 여러 CPU 스케줄링 알고리즘이 등장할 수 있음(ex. 먼저 요청한 프로세스를 먼저, 적게 걸리는 것 먼저 등등)

   - 그 중 어떤 스케줄링이 가장 적합한지 고르려면 기준이 있어야 함. 이것이 CPU 스케줄링 성능 평가 기준임

   - 성능평가 기준

      ① CPU 이용률 : 시간당 CPU를 사용한 시간의 비율. CPU가 쉬지않고 계속 일을 해야(프로세스를 돌려야) 좋은 알고리즘임. 그러므로, 입출력 작업보다 프로세서 중심의 작업을 해야함.

      ② 처리율 : 시간당 처리한 작업의 비율. 많은 일을 끝내야 좋은 알고리즘임. 그러므로, 작업소요시간이 짧은 것을 먼저 처리하도록 해야함.

      ③ 소요시간 : 한 프로세스가 처리된 총 시간. 이 시간이 짧을수록 좋은 알고리즘임

      ④ 대기시간 : CPU를 할당받기까지 기다린 시간. 이 시간이 짧을수록 좋은 알고리즘임

      ⑤ 응답시간 : 처음 CPU를 할당받기까지 기다린 시간. 이 시간이 짧을수록 좋은 알고리즘임


3. CPU 스케줄링의 종류

   - 크게 두가지로 나눌 수 있음(선점형, 비선점형)

      ① 선점형

         : 프로세스가 CPU를 사용하고 있더라도, 운영체제가 강제로 CPU를 빼앗아 다른 프로세스에게 할당할 수 있는 방식.

      ② 비선점형

         : 프로세스가 종료되거나 스스로 대기상태에 접어들기 전까지 다른 프로세스가 CPU를 사용할 수 없는 방식.

   - 선점형 특징 : 더 급하게 처리해야할 일이 들어왔을 경우 먼저 처리할 수 있음. 그렇지만, Context-Switching이 발생하므로 오버헤드가 발생할 수 있음

   - 비선점형 특징 : Context-Switching 오버헤드는 적지만, 더 급한일을 처리할 수 없음

   - 대표적인 스케줄링 알고리즘

      ① FCFS(First Come First Served)

         * 먼저 온 프로세스가 먼저 CPU를 할당받아서 하나씩 처리하는 방식, 비선점형

         * 긴 시간이 필요한 프로세스가 끝날때까지 다른 프로세스는 모두 기다려야하므로 비효율

      ② SJF(Shortest Job First)

         * 짧은 시간이 필요한 프로세스를 먼저 처리하는 방법

         * 프로세스가 얼마나 시간을 필요로할지 애초에 알지 못함. 긴 시간이 필요한 프로세스는 기아현상 발생

      ③ Priority Scheduling

         * 높은 우선순위를 가진 프로세스를 먼저 처리하는 방법

         * 선점형 방식에서는 도착한 프로세스의 우선순위가 현재 실행되는 것보다 높으면 CPU를 할당받음

         * 비선점형 방식에서는 준비큐에 우선순위에 따라 삽입

         * 우선순위가 낮은 프로세스일 경우 기아현상 발생함

         * 이러한 기아현상은 결국 우선순위가 높은 프로세스가 계속 실행되므로 발생하는 것임. 그러므로, 우선순위가 높은 것을 낮춰야하고, 낮은것을 높이는 방식으로 해결해야 함.

         * 대표적인 방법으로는 aging이 있는데, 오랫동안 대기한 프로세스의 우선순위를 점차 높이는 방법임. 이렇게 하면 기아현상을 줄일 수 있음

      ④ Round Robin

         * 동일한 시간동안 계속 돌아가면서 CPU를 할당받는 방식, 선점형

         * 만약 이 시간이 커지면 결국 FCFS와 같아지므로 비효율적이고, 너무 짧을 경우 Context-Switching이 자주 발생해 오버헤드가 증가함

      ⑤ 다단계 피드백 큐 스케줄링

         * 가장 일반적인 CPU 스케줄링 알고리즘

         * 우선순위에 단계별로 큐가 여러개 있고, Round Robin으로 돌아감

         * 이후 실행된 프로세스의 우선순위를 하나씩 낮춤(aging)

         * 우선순위에 따라 긴급한 처리가 가능, 기아 현상 줄임, Round Robin으로 응답시간을 줄임


CPU 스케줄링에 대해 알아볼 수 있었습니다

'운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2023.08.10
Deadlock  (0) 2023.08.08
Context Switching  (0) 2023.08.06
프로세스와 스레드  (0) 2023.08.05
캐시(Cache)  (0) 2023.07.31

+ Recent posts