Keep going
실시간 cpu 스케줄링 본문
실시간 스케줄링
- 어떤 사건이 일어나면 언제까지 처리가 되어야 된다는 시간에 대한 제약조건
- 일반적으로 사용하고 있는 시스템에 RealTime Schedulling 기능을 더할려고 하니까 문제 생긴다. (어려워짐)
- Real Time 전용 → 문제 쉬움
- Soft realtime-system
- 이 시스템에서는 real time task 와 Non real time task 들이 혼재되어 있는 상황에서 Real time 애플리케이션에 대해서 Real time process가 들어오면 우선순위를 더 주긴주지만 deadline 에 맞춰서 끝내줄거라는 보장이 없는 시스템을 말한다. (다른애들보다 우선순위를 주지만 너가 언제까지 실행이 된다 보장 못할 경우)
- Hard realtime system
- 어떤 process의 deadline 주어지게 되면 그 deadline 안에 맞춰서 끝내주는 시스템
- 이 시스템에서 deadline을 못 맞추는 것은 너무 치명적이여서, 못 맞출바에야 차라리 그냥 스케줄을 안해주는게 더 나을 정도인 시스템이다.
- 대표적인 에로는 자율주행 자동차나 , 무기체계 사용되는 시스템들이 있다.
- real time system에 영향을 크게 주는 2가지 지연 시간이 있다.
- Interrupt latency (인터럽트 지연 시간)
- 바깥에서 들어오는 신호 처리하기 위해서 프로세스를 돌리게 된다. 처리하고 있던 시스템 중단 시켜야 한다. (인터럽트) 인터럽트 걸리게 되면 cpu가 왜 걸렸는지 판단한다. cpu가 인터럽트 원인 발견해서 현재 진행하고 있던 작업환경 필요하면 save → 인터럽트 서비스 루틴으로 점프
- 인터럽트 발생했을 때 부터 시작해서 실제 ISR 실행되기까지 걸린 시간
- Dispatch latency
- 실제 신호를 처리하기 위한 프로세스한테 cpu를 넘겨주기 위해 걸리는 시간이다.
- 현재 중단되있던 프로세스를 처리하고 잠자고 있던 신호 처리하는 프로세스 깨워서 프로세스를 시작한다.
- 2가지 시간이 실시간 신호가 들어왔을 때 필요한 지연 시간이다.
- Interrupt latency (인터럽트 지연 시간)
Soft real time을 위한 스케줄링 알고리즘
- 프로세스는 주기적으로 cpu를 요구한다. (신호 처리기가 깨면 신호들어오면 그때마다 처리 해야하기 때문에 일정한 시간마다 계속 신호를 처리한다고 가정)
- cpu 요청해서 걸게되면 t 시간동안 처리한다.
- deadline 처리시간에 대한 임계치(d) 주기적으로 발생하는 처리 요구도(p) 처리시간(t)
- soft real time system 운영한다고 하면 process 한테 우선순위 줘서 우선순위로 해결하게 된다. 주기가 짧은 프로세스 p1, 주기가 긴 프로세스 p2 중 누구한테 우선순위 주나 ? p1
Rate Montonic Scheduling
- 1/p = rate (대응되는 우선순위) 주기↓ rate↑
- 주기에 의해서 프로세스의 우선순위가 정해지고 거기에 따라서 우선순위가 고정되어지는 스케줄링 방법이다.
- 더짧은 주기 - 더높은 우선순위
- 더 긴 주기 - 더 낮은 우선순위
missed deadlines with rate montonic scheduling
Earliest Deadline First Scheduling (EDF)
- 데드라인 기준으로 잡아서 데드라인 가까운 작업부터 실행한다.
- 이런 방법을 취하게 되면 우리가 스케줄러가 각 프로세스마다 데드라인 얼마인가 알아야 된다. 데드라인만 알면 이 방법은 거의 cpu를 full로 할 수 있을 정도로 문제가 없는 방법이다.
Propotional Share Scheduling
- 세 개 process 있따면 cpu time 100개가 있는데 100개를 일정 비율 (30, 40, 20) 로 나눠준다.
Comments