Documente Academic
Documente Profesional
Documente Cultură
de timp real
CURS 05
Gestionarea proceselor într-un
sistem de operare în timp real
Titular curs: Conf. dr. ing. Florin Dragomir
Sistemul de Operare face parte din Softwareul de bază
(programe și date de sistem), care coordonează funcționarea
de ansamblu a sistemului; asigură prelucrearea de date
desfășurate de calculator. Acesta asigură exploatarea eficace a
resurselor Hardware și Software ale mașinii de calcul,
furnizând suportul necesar pentru dezvoltarea și execuția
programelor de aplicație.
Modelul abstract al unui sistem de calcul
Controlul și alocarea memoriei
Exemplu: când este lansat un joc video în execuție pe un sistem de calcul este alocată
memorie pentru variabilele acestuia
Prioritizarea cererilor sistemului
Exemplu: butonul ,,eject” întrun avion militar de vânătoare are prioritate mai mare
decât sistemul de control al luminilor
Facilitează conexiunea la rețea
Exemplu: Network Interface Card (NIC) conectează calculatorul la rețea
Managerizează fișierele
Exemplu: My Computer oferă acces la hard disk drive (HDD) sau solid state drive
(SSD), și perifericele externe, cum ar fi memoriile externe: stick USB extern, HDD
extern, unități optice externe și/sau interne.
Altfel spus, un Sistem de Operare reprezintă o platformă pentru alte
aplicații.
DEFINIREA UNUI SISTEM DE OPERARE
ÎN TIMP REAL
Un sistem de operare în timp real (RTOS – Real Time Operating System) este o
clasă de Sistem de Operare special dedicată aplicațiilor în timp real. Astfel de aplicații sunt
sistemele îmbarcate (embedded), roboții industriali, navele spațiale, și așa mai departe.
Exemple de Sisteme de Operare în Timp Real:
Green Hills Software INTEGRITY
Wind River VxWorks
QNX Neutrino
FreeRTOS
Micrium µC/OSII, III
Windows CE
TIRTOS Kernel (previously called DSP/BIOS)
RTEMS open source RTOS designed for embedded systems, mainly
used for missile and space probes control
RTPreempted Linux
* Conform unui studiu realizat în anul 2014 [7], aceste 10 sisteme de operare în timp real sunt primele
utilizate pe piața sistemelor integrate.
HARD VS. SOFT RTOS
Hard Real Time înseamnă că toate deadlineurile sunt respectate. Orice
eveniment va fi procesat și răspunsul emis întrun interval predefinit, indiferent de
încărcarea sistemului. În următoarea figură poate fi observată descrierea unui astfel de
sistem Hard Real Time OS.
Figura 2 Hard Real Time
HARD VS. SOFT RTOS
Pentru a obține orice tip de date analitice despre comportamentul unui program
întrun mediu hardrealtime, anumite aserțiuni trebuie făcute despre acest tip de mediu.
Nu toate aceste aserțiuni sunt absolut necesare. [9]
[A1] – Cererile pentru toate taskurile pentru care deadlineurile hard există sunt
periodice, cu intervale constante între cereri.
[A2] – Deadlineurile conțin doar abilități de rulare cu constrângeri – așadar, orice task
trebuie să fie executat înainte ca următoarea cerere să apară.
[A3] – Taskurile sunt independente, cererile pentru un anumit task nu depind de
inițializarea sau de executarea cu success a cererii pentru alte taskuri.
[A4] – Timpul de rulare pentru fiecare task este constant pentru acel task și nu variază cu
timpul. Timpul de rulare face referință la timpul în care procesorul îl asigură executării
unui task fără întreruperi.
[A5] – Toate taskurile aperiodice din sistem sunt speciale; ele sunt
inițializate sau rutini de recuperare a eșecurilor; ele înlocuiesc taskurile
periodice cât timp acestea se execută, și nu au deadlineuri hard, critice.
HARD VS. SOFT RTOS
Aserțiunea A1 complementează idea lui Martin [8], dar pare
să fie validă pentru controlul proceselor pur.
Aserțiunea A2 elimină problema listei de așteptare pentru
taskuri individuale. Ca aserțiunea A2 să fie ținută în picioare, o
cantitate minusculă, dar posibil signifiantă de zonă tampon
hardware (buffer) trebuie să existe pentru fiecare funcție periferică.
Orice buclă de control închisă în sistemul de calcul trebuie să fie
proiectată să permit cel puțin o unitate de eșantionare cu întârziere.
HARD VS. SOFT RTOS
Un algoritm de scheduling este un set de reguli care
determină taskul care urmează să fie executat la un moment dat.
Algoritmii de scheduling specificați în această lucrare sunt cei
preemptivi și cei determinați de priorități (prioritydriven). Acest
lucru înseamnă că ori de câte ori există o cerere pentru un task care
are o prioritate mai mare decât cel executat în mod curect, procesul
ce rulează este întrerupt imediat și taskul cu cererea nou creată
este pornit.
HARD VS. SOFT RTOS
Figura 3 Executarea lui Ti între cererile lui Tm
HARD VS. SOFT RTOS
Se va deriva o regulă asignarea de priorități care dorește a fi
un algoritm de scheduling optim, static. Un concept important în
determinarea acestei reguli este acela ca un task de a fi instant
critic. Deadlineul (timpul limită) pentru o cerere a unui task este
definit a fi timpul pentru următoarea cerere pentru același task.
Pentru un set de taskuri programate cu un algoritm de scheduling,
se poate spune că un overflow se întâmplă la timpul t, dacă t este
deadlineul unei cereri neîmplinite.
HARD VS. SOFT RTOS
Pentru un set de taskuri date, un algoritm de scheduling este
fezabil dacă taskurile sunt programate în așa fel încât nu se
întâmplă niciun eveniment de tipul overflow. Se definește răspunsul
de timp la o cerere pentru un anumit task a fi durata de timp dintre
cerere și sfârșitul răspunsului la cererea respectivă. Un critical
instant pentru un task este definit a fi un instant în care o cerere
pentru acel task va avea cel mai mare timp de răspuns. O zonă
critică temporală (critical time zone) pentru un task este intervalul
de timp dintre un critical instant și sfârșitul răspunsului la cererea
ce corespunde pentru task.
HARD VS. SOFT RTOS
Teoremă. Un critical instant pentru orice task are loc ori de câte ori
taskul are o cerere simultană cu alte cerere pentru taskuri de
priorități mai mari.
HARD VS. SOFT RTOS
Demonstrație. Fie T1, T2, ...Tm un set de taskuri ordonate pe prioritate cu
Tm – taskul cu cea mai mică prioritate. Se consideră o cerere particulară
pentru Tm care se întâmplă la timpul t1. Presupunem că între t1 și t1+Tm,
timpul când cererea Tm apare, cererea pentru taskul Ti, cu i<m, se
întâmplă la t2, t2+Ti, t2+2Ti,...,t2+kTi, așa cum este ilustrat în Figura 3. În
mod evident, preempțiunea lui Tm prin Ti, dacă nu este cerut pentru Tm
este finalizat înainte de t2. Mai mult, din Figura 3 se poate realiza faptul că
avansarea timpului cererii t2 nu va repezi finalizarea lui Tm. Timpul de
finalizare pentru Tm este ori neschimbat, ori încetinit de un asemenea
avans. Întârzierea în finalizarea taskului Tm este cea mai mare atunci
când t2 coincide cu t1.
Repetând argumentul de mai sus pentru toate valorile
Ti din interval, i=2, ... , m1, se poate dovedi teorema
(inducție matematică).
HARD VS. SOFT RTOS
Figura 4 Scheduling-ul pentru două taskuri
HARD VS. SOFT RTOS
Una din valorile acestui rezultat este că o calculare simplă și directă poate
determina dacă sau dacă nu o prioritate dată, asignată, va rezulta cu un
algoritm de scheduling fezabil. Dacă cererile pentru toate taskurile sunt la
instantele lor critice și sunt împlinite înainte de deadlineurile lor, atunci
algoritmul de scheduling este fezabil. Spre exemplu, considerăm un set de
două taskuri T1 = 2 și T2 = 5, și timpii de rulare aferente taskurilor T1 ,
respectiv T2, C1 = 1 și C2 = 1. Dacă T1 este taskul cu prioritate mai mare,
atunci din Figura 4 (a) se poate observa că o asignare de prioritate de
acest fel este fezabilă. Mai mult, valoarea lui C2 poate fi crescută maxim
până la valoarea 2, dar nu mai mult, așa cum reiese din Figura 4 (b). Pe de
cealaltă parte, dacă T2 este taskul cu prioritate mai mare, atunci niciunul
din valorile C1 și C2 poate fi crescută peste valoarea 1,
așa cum este prezentat în Figura4(c).
HARD VS. SOFT RTOS
Soft Real Time înseamnă că toate evenimentele tolerează întârzieri
și răspunsul poate să nu fie cel mai bun calitativ. De exemplu, un
player video poate pierde cadre în timp ce rulează un fișier. În Figura 3
poate fi observată descrierea unui astfel de sistem Soft Real Time OS.
Figura 5 Soft Real Time
HARD VS. SOFT RTOS
Exemplu:
Soft Real Time este pentru utilizatorii care sunt mulțumiți
că sistemul răspunde optim, dar care nu consider că a apărut o
eroare catastrofală dacă sistemul nu îndeplinește cerințele lor de
fiecare dată. Un Soft Real Time oferă răspunsul dorit de cele mai
multe ori.
SO Monolitic vs. SO Micro-Kernel
Kernel Monolitic: modulele Sistemului de Operare,
aplicațiile, driverele și protocoalele sunt conectate împreună printr
un singur modul.
Figura 8 Micro-Kernel – Fără erori
SO Monolitic vs. SO Micro-Kernel
Defectarea unui modul nu va corupe întregul sistem, ci doar
acel modul.
Figura 9 Micro-Kernel – Eroare => Nu este compromis întregul sistem
SO Monolitic vs. SO Micro-Kernel
Comparație între SO ce utilizează Kernel Monolitic și cele ce
utilizează Micro – Kernel:
Micro Kernel — Avantaje
Micro-
Caracteristici Kernel Monolitic
Kernel
Proces: un program în execuție
• Instanțe ale programelor care sunt
executate
• Zone de memorie virtuală
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Task: subprogram care rulează în contextul unui proces
• Mai multe threaduri pot să ruleze în zona de memorie
a unui singur proces
• Taskurile impart o zonă de memorie comună
• În POSIX (Linux și Windows OS) task thread
• În Știința Calculatoarelor, un fir de execuție (thread of
execution) este cea mai mică secvență de instrucțiune
programată care poate fi administrat independent de un
scheduler, care este o parte a unui Sistem de Operare.
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Multitasking: execuția mai multor taskuri care
împart resursele comune ale CPU – Unitatea
Centrală de Prelucrare
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Procesul poate fi considerat o casă
•Casa utilizează teren (spațiu de memorie)
•Are multe facilități
•Când nu este locuită, este ,,idle”
Taskul poate fi considerat un locuitor din acea casă
•Persoana locuiește în interiorul casei
•Folosește facilitățile casei Figura 10 Sistem embedded Real Time – procese
•Mai multe persoane pot locui simultan acolo și taskuri
•Aceste persoane impart și au acces la aceleași resurse
•Când mai multe persoane vor să acceseze grupul sanitar, se impune o politică de
,,share”.
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Structura unui task
Informațiile despre fiecare task sunt salvate în ,,Task Control
Blocks” (TCB), care este o mică bază de date din memorie. Fiecare
Task are propriul TCB. Acesta salvează informațiile taskului precum
și informații externe, cum ar fi regiștrii CPU. Taskurile pot trece
dintro stare în alta, deoarece în TCB există un snapshot al taskului
care poate fi accesat imediat.
Fiecare task are asignată o prioritate.
Taskul este creat de o acțiune care se numește
,,Spawn”.
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Figura 12 Stările unui Task
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
Comutarea contextuală (Context Switching)
Este procesul de salvare/reîncărcare (store/restore) al unei stări. Task
Context Switching este procesul tranzitoriu de la o stare la alta.
Exemplu:
• Taskul A este Pended și gata de a fi lansat în execuție(Figura 13)
Figura 13 Starea taskului A
DEFINIREA PROCESELOR, TASK-URILOR.
MULTITASKING
• Comutarea contextuală va salva starea taskului current și va
restaura CPU la starea de dinainte ca taskul A să fie Pended
• Taskul A este ready și este executat de CPU
• Task Context Switch finalizat cu succes => Figura 14
Figura 14 Comutarea contextuală
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Tehnicile de planificare în timp real pot fi împărțite în mare
măsură după două categorii: statice și dinamice.
Algoritmii statici atribuie priorități la timpul de proiectare
(înainte ca procesele să fie lansate în execuție). Toate prioritățile
atribuite rămân constant pe toată durata de viață a unui process.
Algoritmii dinamici atribuie priorități în timpul rulării, pe
baza unor parametric de execuție a proceselor.
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Figura 15 Clasificarea algoritmilor de planificare a proceselor în timp
real
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Rate Monotonic
Planificatorul Rate Monotonic acordă o mai mare prioritate
proceselor cu perioade mai mici. Prin urmare, ori de câte ori un set
de procese sunt programate cu programatorul Rate Monotonic,
procesele sunt întotdeauna prioritizate în aceeași ordine. Din acest
motiv, Rate Monotonic este considerat un algoritm de planificare
dinamic cu prioritate statică. Rate Monotonic este un algoritm
stabil, simplu de înțeles și ușor de implementat. Dezavantajele
acestui algoritm sunt utilizarea scăzută a CPU
ului și faptul că se ocupă doar de procese independente.
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Figura 16 Exemplu de planificare cu algoritmul Rate Monotonic
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Earliest Deadline First
Algoritmul EDF acordă prioritate proceselor cu cel mai
apropiat deadline. În timp ce sistemul execută, deadlineul fiecărui
process se va schimba în raport cu timpul current al sistemului.
Deși fiecare dintre deadlineuri se va schimba cu o cantitate
identică de timp în raport unul cu altul, EDF este un algoritm de
planificare dinamică cu prioritate dinamică. El este simplu și
lucrează bine în teorie. Este un algoritm optimal ce are cea mai
bună utilizare a CPUului, însă este greu de implementat și instabil
(dacă un process nu își atinge deadlineul, sistemul devine
instabil și orice process ulterior poate să eșueze).
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Figura 17 Exemplu de planificare cu algoritmul EDF
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Least Slack Time First
Algoritmul LSTF acordă prioritate procesului cu cea mai
mică cantitate de „slack”. „Slack” este definit ca deadlineul minus
munca rămasă. Un proces cu un număr mare de „slack” va avea o
prioritate mai mică în raport cu un proces cu un număr mic de
„slack”. Procesul cu un număr mic pentru un deadline și un număr
mare pentru cantitatea rămasă de muncă va avea cea mai mare
prioritate. Acest algoritm poate fi implementat cu un minim al
timpului de angajament al unui proces pentru a preveni o oscilație
rapidă între procese atunci când preemțiunea este inclusă. Când
toate procesele din volumul de lucru au „slackul”
diferit doar prin minimul timpului de angajament al
unui proces atunci planificatorul LSTF este esenţial
identic cu cel RR.[6]
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Figura 18 Exemplu de planificare cu algoritmul LSTF
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Round Robin
Algoritmul RR alocă un interval de timp specificat pentru
fiecare proces al cărui lungime este cunoscută sub numele de
cuantă de timp. Ordinea proceselor este aceeaşi ca ordinea în care
au
ajuns ele în sistem. Din acest punct de vedere, algoritmul RR se
aseamană cu FIFO. În cazul în care un task este gata de a fi executat
dar nu mai are nimic de facut atunci următoarul task, în aceeași
ordine, este verificat.
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Acest ciclu continuă până când se găseşte un proces
care are ceva de făcut în ciclul curent sau până când sunt
verificate toate procesele. În cazul în care nu există niciun
proces cu ceva de executat, atunci sistemul nu face nimic
util în acest ciclu. Dacă există un proces cu ceva de făcut
în ciclul curent atunci procesul este lansat și executat
pentru un timp egal cu cuanta de timp. [5]
ALGORITMI DE GESTIONARE A PROCESELOR ȘI ALE
TASKURILOR ÎN RTOS
Figura 19 Exemplu de planificare cu algoritmul RR
DEFINIREA PROCESELOR ÎN TIMP REAL
În unii algoritmi de planificare în timp real, un proces poate
fi preemptiv dacă un alt process de prioritate mai mare devine gata
de execuție. În schimb, executarea unui process de bază non-
preemptiv ar trebui să fie finalizată fără întrerupere, odată ce
acesta este pornit.
În planificarea de prioritate determinată, o prioritate este
alocată fiecărui proces. Atribuirea de priorități se poate face static
sau dinamic în timp ce sistemul este pornit.
DEFINIREA PROCESELOR ÎN TIMP REAL