본문 바로가기
IT Auditor Study/운영체제

[Part2-공룡책] 3. CPU 스케줄링(2/2) - Operating System(OS)

by latteart 2024. 6. 6.
반응형

Operating System(OS)에 이어서 Part2에는  다음과 같은 순서*로 알아보겠습니다.

*공룡책을 기반

  
[프로세스 관리]
1. 프로세스
2. 스레드와 병행성
3.CPU 스케줄링
[프로세스 동기화]
4. 프로세스동기화
5. 동기화 예제
6. 교착상태
[메모리 관리]
7. 메인 메모리
8. 가상 메모리
[저장장치 관리]
9. 대용량 저장장치 구조
10. 입출력 시스템
[파일시스템]
11. 파일시스템 
12. 파일시스템 구현

 

Operating System(OS) Part2 - 3.CPU 스케줄링(2/2)

 

 

4. 다중처리기 스케줄링(Multi Processor Scheduling)

만약 여러 개의 CPU가 사용 가능하다면, 여러 스레드가 병렬로 실행될 수 있으므로 부하 공유(load sharing)가 가능해진다.

이번에는 다중 처리기 스케줄링 관련 문제에 관해 다룬다.

 

 

1) 다중 처리기 스케줄링에 대한 접근 방법

다중 처리기 시스템의 CPU 스케줄링에 관한 한 가지 해결 방법은 마스터 서버(master server)라는 하나의 프로세서가 모든 스케줄링 결정과 I/O 처리, 다른 시스템의 활동을 취급하게 하는 것이다.

이러한 비대칭 다중 처리(asymmetric multiprocessing)는 오직 하나의 코어만 시스템 자료구조에 접근하여 자료 공유의 필요성을 배제하기 때문에 간단하다. 반면 단점은 마스터 서버가 전체 시스템 성능을 저하할 수 있는 병목이 된다는 것이다.

 

표준 접근 방식은 대칭 다중 처리(symmetric multiprocessing)이다. 이때 각 프로세서는 스스로 스케줄링할 수 있다.

각 프로세서의 스케줄러가 준비 큐를 검사하고 실행할 스레드를 선택하여 스케줄링이 진행된다.

 

 

2) 다중 코어 프로세서 (Multicore Processors)

현대 컴퓨터 하드웨어는 동일한 물리적인 칩 안에 여러 개의 처리 코어를 장착하여 다중 코어 프로세서가 된다.

각 코어는 운영체제 입장에서는 개별적인 논리적 CPU처럼 보이게 된다.

 

이 프로세서는 스케줄링 문제를 더 복잡하게 하는데, 바로 메모리 스톨(memory stall) 현상이 발생하기 때문이다.

메모리 스톨은 최신 프로세서가 메모리보다 훨씬 빠른 속도로 작동하기 때문에 주로 발생한다.

 

                                                                                                   메모리 스톨

 

이러한 상황을 해결하기 위해서 하나의 코어에 2개 이상의 하드웨어 스레드가 할당된다.

이렇게 하면 메모리를 기다리는 동안 하나의 하드웨어 스레드가 중단되면 코어가 다른 스레드로 전환할 수 있다.

 

                                                                                  다중 스레딩 다중 코어 시스템

 

 

3)부하 균등화 (Load Balancing)

여러 개의 프로세서를 최대한 활용하려면, 부하를 모든 프로세서에 균등하게 배분하는 것이 매우 중요하다.

부하 균등화는 통상 각 프로세서가 실행할 스레드를 위한 자기 자신만의 준비 큐를 가지고 있음을 가정한다.

 

부하 균등화를 위해서는 push 이주와 pull 이주 두 가지 접근이 있다.

push 이주는 특정 태스크가 주기적으로 각 프로세서의 부하를 검사하고, 만일 불균형 상태로 밝혀지면 과부하인 처리기에서 쉬고 있거나 덜 바쁜 처리기로 스레드를 이동시킴으로써 부하를 분배한다.

pull 이주는 쉬고 있는 처리기가 바쁜 처리기를 기다리고 있는 프로세스를 pull 할 때 일어난다.

균등 부하에는 두 가지 관점이 존재하는데, 한 가지는 "모든 큐에 대략 같은 수의 스레드가 있어야 할 것"과 나머지 하나는 "모든 큐에 스레드 우선순위를 균등하게 분배해야 한다는 것"이다.

 

 

NUNUHANA USB충전팬 휴대용 탁상용 목걸이 핸디 선풍기

COUPANG

www.coupang.com

*이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.

 

 

5. 실시간 CPU스케줄링

실시간 CPU 스케줄링은 일반적으로 연성(soft) 실시간 시스템과 경성(hard) 실시간 시스템으로 구분한다.

soft real-time system은 실시간 프로세스가 스케줄 되는 시점에 관해 아무런 보장을 하지 않는다. 오직 중요한 프로세스가 그렇지 않은 프로세스들에 비해 우선권을 가진다는 것만 보장한다.

hard real-time system은 반드시 마감시간까지 서비스를 받아야 하며, 그렇지 않으면 서비스를 전혀 받지 않은 것과 동일한 결과를 낳는다.

 

* 지연시간 최소화

시스템은 일반적으로 실시간으로 발생하는 이벤트를 기다린다.

이벤트가 발생하면, 시스템은 가능한 한 빨리 그에 응답을 하고 그에 맞는 동작을 수행하여야 한다. 이벤트 지연시간은 이벤트가 발생해서 그에 맞는 서비스가 수행될 때까지의 시간을 말한다.

 

                                                                                     

이벤트 지연에는 두 가지 지연시간이 실시간 시스템의 성능을 좌우한다.

 

1) 인터럽트 지연시간

인터럽트 지연시간은 CPU에 인터럽트가 발생한 시점부터 해당 인터럽트 처리 루틴이 시작하기까지의 시간을 말한다.

인터럽트가 발생하면 운영체제는 우선 수행 중인 명령어를 완수하고 발생한 인터럽트의 종류를 결정한다.

해당 인터럽트 서비스 루틴(ISR)을 사용하여 인터럽트를 처리하기 전에 현재 수행 중인 프로세스의 상태를 저장해 놓아야만 한다.

 

                                                                              

-> 이러한 작업을 모두 수행하는 데 걸리는 시간이 인터럽트 지연시간이다.

 

 

2) 디스패치 지연시간

디스패치 지연시간은 스케줄링 디스패처가 하나의 프로세스를 블록 시키고 다른 프로세스를 시작하는 데까지 걸리는 시간을 말한다.

디스패치 지연시간을 최소화하는 가장 효과적인 방법은 선점형 커널이다.

 

                                                                               

 

반응형