티스토리 뷰

반응형

다중 처리기라는 것은 쉽게 말해 CPU의 역할을 하는 것이 여러 개라는 것이다.

처리기가 여러개이기 때문에 부하분산이 가능하지만, 그에 따라서 스케줄링은 더 복잡해진다.

 ( 이 전에 설명했던 스케줄링 기법들과 마찬가지로 최선의 해결책이란 존재하지 않는다. 그저 상황에 따를뿐. )

 

요즘은 하나의 칩에 여러개의 처리기 코어가 들어가있는 다중코어 프로세서가 많이 사용된다.
                        ( 16코어 8스레드 → 128개의 논리 프로세서 )

 

 - 비대칭 다중처리 (Asymmetric Multiprocessing) : 비교적 간단하다

     하나의 처리기를 master로 두어 해당 처리기가 모든 스케줄링결정과 입출력처리, 다른 시스템의 활동을

     취급하게한다. 다른 처리기들은 User코드만을 수행한다. 

     하나의 처리기가 다 처리하기 때문에 공유자원이 존재하지 않고 처리기간 이동이 필요없다.

 

 - 대칭 다중처리 (Symmetric Muliprocessing) : 현대 OS들은 이걸 지원한다.  - SMP

     처리기마다 독자적이 스케줄링을 진행한다.

     모든 프로세스는 공동의 Ready Queue나 처리기마다의 Ready Queue에 존재하며,

     모든 처리기에는 각각의 스케줄러가 있어야 한다.

     때문에 동시에 여러 처리기에서 공동자료구조에 접근할 시 동기화문제가 발생할 수 있다.

 


처리기 친화성

[ 상황 ]

A 처리기에서 특정 프로세스가 실행되었다. A 처리기의 CashMemory에는 해당 프로세스의 데이터가 남게 된다.
이 때 스케줄러에 의해서 해당 프로세스가 B 처리기를 할당받는다면 ?

A 처리기에 존재하는 CashMemory의 이주가 필요하다. 이는 극심한 자원소모가 발생한다.

 - "대부분 SMP System은 한 처리기에서 다른 처리기로의 이주를 피하고 같은 처리기에서 처리하려는 현상"

   위 현상을 처리기 친화성이라고 하며, 위 상황에서 이 현상을 이용해 자원소모를 최소화할 수 있다.

 

 - 연성친화성과 강성친화성이 있고, Liunx System의 경우 두 가지모두 지원한다.

 


부하 균등화 

 - 처리기마다 Ready Queue가 존재하는 경우에만 해당된다. ( 하지만 대부분이 이렇다. )

 - PUSH 및 PULL 이주가 있는데 동작방식은 아래와 같다.

   PUSH 이주 : 특정 Task가 각 처리기의 부하를 감시하고, 불균형 감지시 프로세스를 바쁜 처리기에서

                   덜 바쁜 처리기로 PUSH하여 부하 균등화를 진행한다.

   PULL 이주 : 한가한 처리기가 바쁜 처리기에서 프로세스를 PULL하여 가져와서 처리한다.

     ( 종종 병렬적으로 구현된다. )

 

 - 처리기 친화성하고 서로 엇갈리는 역할이다. 

   몇 번이나 말했듯이 절대적인 기준은 없고 상황에 따라서 달리해야한다는 것을 명심하자.

 

 

 

 

반응형

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

[OS] "동적연결 & 공유" 라이브러리  (1) 2019.11.20
[OS] 실시간 CPU 스케줄링  (0) 2019.11.04
[OS] CPU Scheduling 기본 ( 6가지 )  (0) 2019.11.04
[OS] CPU Scheduling  (0) 2019.09.30
[OS] Process Synchronized  (0) 2019.09.07
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함