[운영체제] 10. 스케줄링 (4) - Real-Time System 스케줄링

2024. 10. 21. 12:10·CS/운영체제
반응형

Real-Time System 은 외부의 이벤트에 대해 정해진 시간 안에 적절하게 반응해야 하는 시스템이다.

디스크 플레이어를 예로 들면, 디스크에 담긴 디지털 음원 데이터를 바로바로 디코딩해야 끊김없이 노래를 들을 수 있다.

자동 조립 로봇, 자동 항법 시스템과 같은 경우도 모두 실시간 시스템의 한 예시이다.

 

실시간 시스템은 올바른 답을 '정해진 시간 안에' 내놓는 것이 매우 중요하다.

정해진 시간 안에 답을 내놓지 못하는 실시간 시스템은 잘못된 답을 내보내는 시스템과 똑같이 나쁜 시스템이다.

 

실시간 시스템은 크게 2가지로 구분된다.

 

1. Hard Real Time : 절대적인 데드라인이 반드시 지켜져야 한다.

2. Soft Real Time : 때때로 데드라인을 못 지켜도 (바람직하지는 않지만) 괜찮다.

 

미사일이나 항법장치 같은 경우에는 작은 실수가 큰 문제로 이어질 수 있으므로 Hard Real Time 에 속하고,

CD 플레이어같은 경우에는 가끔은 못 지켜도 치명적인 문제는 아니므로 Soft Real Time 에 해당한다.

 

실시간 시스템은 그 프로그램을 여러 프로세스로 잘게 나누고, 각각의 프로세스들의 동작이 예측 가능하도록 만든다.

 


 

 

실시간 시스템은 외부의 이벤트에 대해 정해진 시간 안에 반응해야 하는 시스템이라고 정리하였다.

이때 '외부의 이벤트'는 크게 2가지로 구분할 수 있다.

 

1. 주기적인 이벤트

2. 비주기적인 이벤트

 

이때, 어떤 real-time system 에 대해, 그 시스템이 모든 이벤트를 데드라인 안에 처리할 수 있다면 그 시스템은 schedulable 하다고 표현한다. (Schedulable real-time system)

 

이제 실시간 시스템의 스케줄링 방법을 정리해본다.

이때 이 시스템에 들어오는 외부 이벤트의 종류는 주기적인 이벤트가 들어오는 경우만 고려한다.

 

먼저 m개의 주기적인 이벤트가 들어온다고 할 때,

i번째 이벤트는 Pᵢ 주기로 오며, 각 이벤트를 처리하는 데에는 Cᵢ 시간이 소요된다고 해보자.

 

만약 이 시스템이 schedulable 하다면 (또는 the load can be handled 라고도 한다.) 다음과 같은 수식을 만족한다.

 

예를 들어 ms 단위의 '주기(처리시간)' 형태로 이벤트를 나열 할 때, 3개의 주기적인 이벤트를 처리하는 시스템이 있다고 해보자.

각 이벤트는 100(50), 200(30), 500(100) 이라고 하면, 이 시스템이 schedulable 한 지 확인할 때는

 

50/100 + 30/200 + 100/500 = (500 + 150 + 200) / 1000 = 850 / 1000 이므로 1보다 작다.

따라서 이 시스템은 schedulable 하다.

 

만약 이 상태에서 주기가 1초인 이벤트를 하나 더 추가한다고 하면, 그 이벤트의 CPU time 은 150ms 이하여야 한다.

 


 

이번엔 다른 예시를 살펴보자.

 

2개의 이벤트가 주어지고 각 이벤트는 100(50), 50(25) 라고 해보자.

이 시스템이 schedulable 한 지 확인해보면 1/2 + 1/2 = 1 이므로 schedulable 하다.

이 두 시스템이 처리되는 과정을 그림으로 그려보면 아래와 같이 그릴 수 있다.

 

 

먼저 빨간색 영역으로 나타낸 것이 두번째 이벤트이다.

0에 발생한 두번째 이벤트는 데드라인이 50이므로 50 전에 처리해야 한다.

50에 발생한 두번째 이벤트는 데드라인이 100 이므로 100 전에 처리해야 한다.

지금 그림과 같이 처리하면 각각의 데드라인 전에 모두 처리할 수 있다.

 

이제 여기에 첫번째 이벤트를 처리해보자.

 

 

 

여기에서 첫번째 이벤트를 처리하면 0에 발생한 첫번째 이벤트는 100이 데드라인이므로 100 전에 이렇게 사이사이를 채워서 실행하여 처리하고, 100에 발생한 두번째 이벤트는 200이 데드라인이므로, 200 전에 사이사이를 채워서 실행하여 처리하면 된다.

 

이렇게 처리하고 보면 전체 처리 영역이 모두 칠해졌음을 확인할 수 있다.

이것이 schedulable 계산 결과가 1 이라는 것의 의미이다.

 

 

실시간 시스템의 스케줄링 알고리즘은 정적 스케줄링과 동적 스케줄링으로 나뉜다.

정적 스케줄링은 시스템이 시작하기 전에 이미 스케줄링 알고리즘을 결정해두고, 이를 고정적으로 적용하는 것이고

동적 스케줄링은 시스템이 실행하는 중에 스케줄링을 결정한다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'CS > 운영체제' 카테고리의 다른 글

[운영체제] 12. 스레드  (0) 2024.10.21
[운영체제] 11. 스케줄링 (5) - Policy vs. Mechanism  (0) 2024.10.21
[운영체제] 9. 스케줄링 (3) - Interactive System 스케줄링  (0) 2024.10.20
[운영체제] 8. 스케줄링 (2) - Batch System 스케줄링  (2) 2024.10.20
[운영체제] 7. 스케줄링 (1) - 개요  (0) 2024.10.20
'CS/운영체제' 카테고리의 다른 글
  • [운영체제] 12. 스레드
  • [운영체제] 11. 스케줄링 (5) - Policy vs. Mechanism
  • [운영체제] 9. 스케줄링 (3) - Interactive System 스케줄링
  • [운영체제] 8. 스케줄링 (2) - Batch System 스케줄링
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (615) N
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (45) N
        • 생각 정리 (23) N
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8)
        • express.js (1)
        • Spring & Spring Boot (7)
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[운영체제] 10. 스케줄링 (4) - Real-Time System 스케줄링
상단으로

티스토리툴바