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

2024. 5. 5. 19:59·🖥️ Computer Science/Operating System

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

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

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

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

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

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

캐시 일관성 문제가 발생함

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

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

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

캐시 일관성 주요 해결 방법

💡 버스 스누핑

각 캐시는 버스를 계속 감시함 → 데이터 상황을 살핌

CPU가 데이터를 갱신하면, 자신이 갖고 있는 복사본을 무효화 or 업데이트

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

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

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

캐시 친화성 문제

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

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

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

장점

  • 단순함

단점

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

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

여러 개의 큐를 사용하게 됨

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

장점

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

단점

  • 부하 불균등

부하 불균등 해결책

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

    두 가지 방법이 있음

    Sender-initiation

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

    Receiver-initiation

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

  2. 작업 가로채기

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

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

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

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

저작자표시 (새창열림)

'🖥️ Computer Science > Operating System' 카테고리의 다른 글

[OS] 13장: Memory Virtualization  (0) 2024.06.26
[OS] Cuncurrency: 동시성 개요  (0) 2024.05.06
[OS] Proportional Share (비례 배분)  (1) 2024.05.04
[OS] MLFQ (Multi-Level Feedback Queue)  (0) 2024.05.03
[OS] 운영체제 스케줄링 개요  (2) 2024.05.02
'🖥️ Computer Science/Operating System' 카테고리의 다른 글
  • [OS] 13장: Memory Virtualization
  • [OS] Cuncurrency: 동시성 개요
  • [OS] Proportional Share (비례 배분)
  • [OS] MLFQ (Multi-Level Feedback Queue)
kyxxn
kyxxn
컴퓨터공학을 좋아하는 대학생의 공부 일기
  • kyxxn
    컴공 학부생의 공부 일기
    kyxxn
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • 📱 iOS (64)
        • Xcode (10)
        • Swift (17)
        • Swift Concurrency (12)
        • UIKit (21)
        • SwiftUI (0)
      • 🖥️ Computer Science (57)
        • 🏛️ Software Architecture Pa.. (2)
        • 👨🏻‍🎨 Design Pattern (3)
        • Data Structure (4)
        • Algorithm (10)
        • Computer Architecture (4)
        • Operating System (19)
        • Network (15)
      • ✍🏻 회고록 (9)
      • 🎸 기타 (25)
        • 해커톤 (1)
        • git (6)
        • 세미나 (1)
        • 책을 읽고 (1)
        • AOS, Kotlin (6)
        • Reinforcement Learning (9)
  • 블로그 메뉴

    • 링크

      • 깃허브
      • 일상 블로그
    • 공지사항

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    kyxxn
    [OS] 멀티 프로세서 스케줄링
    상단으로

    티스토리툴바