Computer Science/Operating System

[OS] 멀티 프로세서 스케줄링

kyxxn 2024. 5. 5. 19:59
728x90

멀티 프로세서: 한 시스템 내에 여러 개의 프로세서 (CPU)
멀티 코어: 하나의 칩 내에 여러 개의 코어 (CPU)

CPU가 하나일 때는 적합하지 않음
병렬 프로그래밍, 멀티 스레딩.. 등 영역을 나누어 수행 후 결과를 합치는 방식으로 이용

멀티 프로세서 구조에 따른 문제 + 캐시 일관성

캐시가 접근이 가장 빠르므로, 캐시 접근을 주로 다룸

싱글 CPU의 경우, 캐시와 데이터 일관성 문제가 없다.

멀티 프로세서 구조에서 캐시 ?

캐시 일관성 문제가 발생함

CPU 0이 메모리에서 데이터를 읽어와 캐시에 적재 후 내용을 바꿈

→ 이러면 메모리에도 다시 내용을 바꿔줘야 하는데 CPU 1이 메모리에 접근 중임

→ 그러면 CPU 0과 CPU 1이 갖는 데이터가 다르게 됨

캐시 일관성 주요 해결 방법

동기화 문제 - 여러 CPU가 데이터를 공유할 때,

병행성 예제와 같은 문제 발생

배타적 접근(접근 중인 프로세스가 있으면 접근 X)을 보장

캐시 친화성 문제

한 번 수행한 CPU의 캐시에 많은 정보가 있을 거임
그럼 스케줄링 시, 이전에 쓴 CPU를 선택하는게 유리함

SQMS 특징 및 장단점 (단일 큐 멀티프로세서 스케줄링)

여러 CPU가 하나의 큐를 공유함

장점

  • 단순함

단점

  • 캐시 친화성 고려
  • 확장성 고려
    어느 스케줄러에 배치할지 ?

MQMS 특징 및 장단점 (멀티 큐 멀티프로세서 스케줄링)

여러 개의 큐를 사용하게 됨

각 큐마다 독립적인 스케줄링 동작
각 큐마다 하나의 CPU 연결 → 캐시 친화성 보장

장점

  • 캐시 친화성 용이함
  • 동기화 부담 감소

단점

  • 부하 불균등

부하 불균등 해결책

  1. 이주
    CPU 작업을 이리저리 옮겨다님

    두 가지 방법이 있음

    Sender-initiation

    CPU가 다른 CPU에게 작업을 보냄

    Receiver-initiation

    스케줄러가 놀면, 바쁜 CPU를 가져옴

  2. 작업 가로채기

    큐를 감시하다가 자신보다 많은 작업 큐가 있으면 가져옴

  3. 지속적 감시와 판단은 운영 오버헤드

    감시를 많이 하면 오버헤드가 발생함

    그러나, 불균등으로 성능 저하 vs 많은 감시로 오버헤드