[운영체제] #10강

Junyoung Park·2022년 8월 2일
0

운영체제

목록 보기
10/25
post-thumbnail

CPU 스케줄링 알고리즘

Multiple-Processor Scheduling

  • 멀티 프로세서: 여러 개의 프로세서 적용된 상태. CPU 스케줄링 알고리즘이 복잡해질 수 있음
  • 멀티 프로세서 내 CPU 종류가 다를 수도 있음
  • 비대칭적 멀티 프로세싱: 한 번에 한 프로세서만 데이터 접근 가능
  • 대칭적 멀티 프로세싱(SMP): 한 번에 여러 개의 프로세서가 접근 가능

Processor affinity

  • 프로세스는 현재 진행 중인 프로세서에 대한 친화도를 가지고 있음
  • Soft affinity: 같은 프로세서에 작동하는 프로세서를 유지한다는 보장 X
  • Hard affinity: 항상 같은 프로세서에 작동한다는 보장 O
  • 장점: 로드 밸런싱. 각 프로세서마다 서로 다른 프로세스를 할당함
  • 단점: 퍼포먼스 오버헤드. 두 프로세서 간의 컨텍스트 스위칭 존재

NUMA 스케줄링

  • Non-uniform memory access: 단일하지 않은 메모리에 접근할 수 있음
  • Remote memory access는 오버헤드가 커지는 문제점 O

Load balancing

  • SMP → 모든 CPU가 효율성을 위해 로드되어야 함
  • 작업량이 공평하게 분배하는 게 목적
  • Push/Pull migration: 프로세서 상태를 확인하면서 여러 프로세스를 옮기기

Multicore processors

  • 같은 피지컬 칩에 멀티 프로세서 코어를 적재
  • 더 빠르고 더 저렴한 파워 소모
  • 코어 당 멀티 스레드도 커지는 추세: 동시의 SMT, HW 멀티 스레딩 가능(메모리 스톨이 일어나는 동안 다른 태스크 수행 가능)

  • 메모리 스톨 시간을 활용하는 Multithreading

  • Concurrency: 진행 상태 태스크 한 개 이상을 지원함(하나의 코어에서 여러 개의 스레드 처리)
  • 멀티 스레딩 환경에서의 Parallelism: 시스템이 여러 개의 태스크를 동시에 수행하기(멀티 코어 시스템에서 멀티 스레드 처리)
  • Data parallelism: 하나의 데이터의 부분집합들이 병렬적으로 처리됨
  • Task parallelism: 하나의 태스크의 부분집합-연산이 병렬적으로 처리됨

Amdahl's Law

  • 순차/병렬 처리 프로세서 추가를 통해 얻을 수 있는 퍼포먼스 법칙

스레드

  • 프로세스: 프로세스 간의 protection domain → 주소 공간이 다르기 때문에 침범할 수 없음. 공유 메모리 옵션에 따라서 일부분을 조회할 수는 있음
  • 스레드: 코드/데이터 섹션이 프로세스 내 공유되는 실행 흐름. Light weight - 프로세스보다 경량화되어 있다는 특징. 멀티 스레드 환경에서 스레드는 자신의 레지스터/스택만 보유

스레드의 장점

  1. Responsiveness: 프로세스 일부가 블락되었을 때 다른 스레드가 블락된 스레드의 작업을 유연하게 이어서 처리
  2. Resource sharing: 하나의 주소 공간을 모두 공유하기 때문에 효율적인 메모리 참조 가능
  3. Performance: 프로세스 생성보다 비용이 작고 컨텍스트 스위칭보다 적은 스레드 스위칭
  4. Scalability: 멀티 코어 환경에서 확장성 존재

Real-time Scheduling

  • Soft real-time: 데드라인에 맞춰야 한다는 보장 X
  • Hard real-time: 태스크가 데드라인까지 무조건적으로 처리되어야 함
  • Latencies: (1). 인터럽트: 인터럽트 도착 - ISR까지 걸리는 지연 시간 (2). 디스패치: 현재 작업을 다른 작업으로 스위칭하는 지연 시간

  • 인터럽트 처리 완료 후 다른 작업 수행 가능. Conflict과 dispatch로 이루어진 dispatch latency
  • 우선순위에 따라 프로세스 중 어떤 프로세스를 수행할지 정하는 Conflict
  • 정해진 프로세스를 dispatch

Priority + Real-time

  • 스케줄러: 비선점/우선순위 스케줄링
  • hard real-time이라면 데드라인까지 포함
  • 프로세스: CPU를 점유하는 프로세싱 시간 T, 데드라인 D, 주기 P.

RM Scheduling

  • 우선순위는 주기의 역에 따라 할당: 주기가 짧다면 높은 우선순위, 주기가 길다면 낮은 우선순위
  • 특정 프로세스가 자신의 D 안에 완료되는지 확인하기

RM 스케줄링이 데드라인을 준수하지 못할 수도 있다!

  • hard real-time에 적절하지 않은 알고리즘

Earliest Deadline First Scheduling (EDF)

  • 데드라인에 따라 동적으로 우선순위 할당
  • 데드라인이 가까울 수록 우선순위 높고 멀수록 우선순위 낮음
  • T마다 프로세스가 돌아오면서 자신에게 남은 데드라인을 동적으로 계산하고 현재 CPU를 점유하고 있는 프로세스와 비교, 스케줄링 실행

Proportional Share Scheduling

  • 프로세스가 비율적으로 CPU를 점유하도록 스케줄링
  • Admission Control: 시간 점유 비율이 1을 넘지 않도록 (최대 제공율이 100%이기 때문) 체크하기 → 현재 70% 실행 중이라면 30% 이상 요구하는 프로세스는 실행 불가능

Virtualization and Scheduling

  • VM의 CPU가 스케줄링 단위 → 게스트 OS가 자신만의 스케줄링 적용 중
  • 피지컬 CPU → 호스트 OS → VM → 게스트 OS의 (가상) CPU

Deterministic Evaluation

  • 주어진 문제(처리 시간 등 정보가 제공된 여러 프로세스 정보) → 문제에 따라 스케줄링 알고리즘마다 서로 다른 성능 보일 수 있음

Simulations

  • 스케줄링 알고리즘을 가상으로 테스트하는 방법
  • 알고리즘 퍼포먼스를 간접적으로 알려주는 통계 수치를 파악하는 방법

Impementation

  • CPU 스케줄링 알고리즘은 OS에 따라 작동 방식이 달라질 수 있음
profile
JUST DO IT

0개의 댓글