Microsoft Word - 2 ES RO.doc

Documente similare
Platformăde e-learning și curriculăe-content pentru învățământul superior tehnic Sisteme de operare 13. Planificarea proceselor

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Microsoft Word - CarteC.doc

PPSD

Concepte de bază ale Tehnologiei Informației

PowerPoint Presentation

Caraivan George-Alexandru Grupa 431A Interfața driver-kernel la Linux Introducere Deși pentru unii dintre noi acest lucru poate fi o supriză, cei mai

Testare manuala: situatia in care o persoana initiaza fiecare test, interactioneaza cu el si interpreteaza, analizeaza si raporteaza rezultatele. Test

Informatică aplicată TEST GRILA TEST GRILĂ - REZOLVAT 1.Structura de principiu a unui sistem de calcul contine urmatoarele componente principale: A. u

MENȚIUNI LEGALE Acest site stabilește instrucţiunile pentru utilizatorii de internet care vor vizita acest website. Fiecare utilizator îşi asumă răspu

PowerPoint Presentation

Sisteme de calcul în timp real

Limbaje de Programare Curs 8 – Fisiere


Limbaje de Programare Curs 6 – Functii de intrare-iesire

Advance CAD 2016 SP1 Acest document descrie îmbunătățirile pentru Advance CAD 2016 Service Pack 1. Notă: Advance CAD 2016 Service Pack 1 este compatib

Ghid de conectare la web MFC-J825DW MFC-J835DW DCP-J925DW Versiunea 0 ROM

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Slide 1

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Microsoft Word - Politică de cookie-uri OK_v1.docx

Analiză de flux de date 29 octombrie 2012

SistemeIncorporate Cursul 10 Dynamic Voltage Scaling

Top

Paradigme de programare

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Microsoft PowerPoint - Curs_SDA_9_RO_2019_v2.pptx

Microsoft PowerPoint - Curs_SDA_4_RO_2019_v2.pptx

Proiectarea Sistemelor Software Complexe

Unitatea: Școala Gimnazială Disciplina: Informatică și TIC Programa școlară aprobată cu OMEN nr.3393 din Profesor: prof. Clasa: a V-a A, B

REVISAL Versiunea: Data release: 15 martie 2016 IMPORTANT! Distribuţia curentă (v6.0.4) a aplicaţiei Revisal conţine nomenclatorul COR ISCO 08 î

Paradigme de Programare

Lucrarea 10

REZUMAT Prezenta lucrare urmărește realizarea unei analize a problematicii rolului şi locului coproprietăţii în materia modalităţilor dreptului de pro

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

Slide 1

Microsoft Word - Plus TV Analog Pro Stick Installation _Rom V1.3_.doc

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Politica N21 privind modulele Cookie mobile Network TwentyOne se angajează să vă protejeze pe dumneavoastră și orice date (anonime sau de altă natură)

Ingineria Sistemelor de Programare

Object Oriented Programming

Analiză statică Analiza fluxului de date 23 octombrie 2014

Sistemul Naţional Unic pentru Apeluri de Urgenţă (SNUAU) reprezintã o componentã importantã a obligaţiilor serviciului universal, fiind prevãzut şi în

CD180 Romanian quick start guide

LUMINIŢA SCRIPCARIU

L7

Lucrarea nr

Microsoft PowerPoint - ARI_R_c9-10_IP_part2 [Compatibility Mode]

E_d_Informatica_sp_SN_2014_bar_10_LRO

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

E_d_Informatica_sp_MI_2015_bar_02_LRO

Update firmware aparat foto Mac Mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să efectuaţi acest update de firmware. Dacă nu aveţi încr

Ghid de Referință Explicații sumare ale operațiunilor de rutină HL-L2312D HL-L2357DW HL-L2352DW HL-L2372DN HL-L2375DW Brother recomandă să păstrați ac

PowerPoint Presentation

Addendum Syllabus 6 Microsoft Access 2016 REF Syllabus 6.0 Cunoașterea domeniilor în care se utilizează bazele de date Datorită potenţialului ma

Slide 1

Slide 1

Ghid Web connect DCP-J4120DW MFC-J4420DW MFC-J4620DW MFC-J5320DW MFC-J5620DW MFC-J5720DW

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

A TANTÁRGY ADATLAPJA

Creational design patterns


AdVision este un software de narrowcasting, destinat tuturor celor care administrează conţinut pe o reţea de monitoare. Fie că este vo

Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Kein Folientitel

SUBPROGRAME

Emoji Planet Video Slot™

INSTITUTUL DE DEZVOLTARE A SOCIETĂŢII INFORMAŢIONLE

Slide 1

Microsoft Word - Laborator 6 - Expresii Regulate IV.doc

Anexa nr. 2 FIŞA DISCIPLINEI 1. Date despre program 1.1 Instituţia de învăţământ superior UNIVERSITATEA DE VEST TIMISOARA 1.2 Facultatea FIZICA 1.3 De

PROBLEME PRIVIND INSTABILITATEA UNOR CALCULE ALE MECANISMELOR

ANEXĂ

Microsoft Word - DCE - lucrarea 5.doc

Slide 1

Microsoft PowerPoint - SD7-RO.ppt

..MINISTERUL EDUCAŢIEI NAȚIONALE ŞI CERCETARII STIINTIFICE UNIVERSITATEA DE VEST DIN TIMIȘOARA.I CENTRUL DE DEZVOLTARE ACADEMICĂ. FIŞA DISCIPLINEI (CO

PROGRAMARE ORIENTATA PE OBIECTE

Investeşte în oameni Proiect cofinanţat din Fondul Social European prin Programul Operaţional Sectorial pentru Dezvoltarea Resurselor Umane

Microsoft Word - MANUAL_APP_ROMPOS_V7.docx

manual_ARACIS_evaluare_experti_v5

PowerPoint Presentation

Ghid privind raportările referitoare la decontarea internalizată conform articolului 9 din regulamentul privind depozitarii centrali de titluri de val

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

CERERE ONLINE PENTRU INSCRIEREA LA CRESA CAPITOLINA SI SECTIA DE LEGATURA (SEZIONE PONTE) ANUL 2014/15 Ghid pentru familii Domanda online iscrizioni n

PROGRAMA DE EXAMEN

1

Ghidul pentru utilizator

ACADEMIA ROMÂNĂ,,Dezvoltarea capacității Ministerului Educației Naționale de monitorizare și prognoză a evoluției învățământului superior în raport cu

tehnologii web

PROIECT DIDACTIC DATE DE IDENTIFICARE Data: Școala : Școala Gimnazială Grigore Moisil Ploiești Clasa: a VI-a Profesor: Ilie Oana Magdalena Disciplina:

NORMĂ pentru aplicarea Ghidului ESMA privind raportările referitoare la decontarea internalizată conform articolului 9 din regulamentul privind depozi

Sistem de supraveghere video inteligent cu localizarea automata a evenimentelor de interes SCOUTER, cod proiect PN-II-IN-DPST , contract nr

Metode de programare Proiectarea algoritmilor

Laborator 3

Comanda si supravegherea centralelor termice de putere

Tipuri de date abstracte 30 noiembrie 2005 Programarea calculatoarelor 2. Curs 9 Marius Minea

Laborator 4: Continuare Programare Orientată pe Obiecte Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 29 octombrie 2011

CABINET MINISTRU

Transcriere:

2 MULTITASKING 2.1. Preliminarii Este deja foarte bine cunoscut faptul că o programare eficientă în domeniul sistemelor în timp real, în mod evident, vizând aici sistemele în timp real încorporate, este programarea multitasking. Dar la ce ne referim când folosim noţiunea de task? Un task este un program sau o parte a unui program care reunește activități independente sau autonome, apte de a fi rulate simultan cu altele. De exemplu, un program de procesare a textului și un program de calcul tabelar care rulează în același timp pe un sistem desktop sunt, fiecare dintre ele, task-uri. Acestea oferă posibilitatea de a face un calcul şi de a edita un text simultan. Dar procesorul de text poate, de exemplu, să permită editarea unui document şi tipărirea unui al doilea document, ambele acţiuni în acelaşi timp, posibil, al doilea în background. Deci, avem două tipuri de multitasking: multitasking noncooperativ, respectiv multitasking cooperativ. Multitasking-ul non-cooperativ desemnează situația în care task-urile sunt programe de execuţie separate. Task-urile care sunt programe de execuţie separate, sunt numite procese [GREH'98] și, în acest caz, multitasking-ul non-cooperativ se numeste multiprocessing [GREH'98]. 1

Multitasking-ul cooperativ desemnează situația în care task-urile sunt părți ale unui program sau, cu alte cuvinte, părți ale unui proces. Task-urile care sunt părți ale unui program sunt numite fire de execuţie, iar în acest caz, pentru multitasking-ul cooperativ se foloseşte noţiunea de multithreading. Evident, folosind această convenţie a termenilor, putem spune că există următoarele noţiuni: multiprocessing, multithreading, şi multiprocessing cu multithreading. În cele două cazuri de multitasking, nu doar denumirile sunt diferite, ci există şi diferenţe substanţiale - a se vedea următoarele paragrafe. 2.2. Despre multiprocessing Un proces se materializează printr-o stare CPU curentă și o colecție de zone de memorie alocată de sistemul de operare. Această colecție constă în următoarele: O zonă de cod care conţine codul executabil al procesului O zonă de stivă în care sunt implementate variabilele locale și argumentele funcțiilor și unde sunt făcute operaţiile de salvare O zonă de date unde sunt implementate variabilele globale O zonă heap dedicată alocărilor dinamice (alocarea dinamică = alocarea de memorie în timpul execuţiei programului, şi nu la compilare, când e vorba de alocarea statică) O zonă de sistem, dedicată sistemului de operare pentru procesul respectiv. Zona de sistem include informații cu privire la resursele alocate procesului respectiv, cum ar fi structurile de date pentru deschiderea fişierelor. Zona de sistem include, de asemenea, informații despre procesul în sine, cum ar fi localizarea regiunilor sale de memorie. 2

Starea CPU constă din toţi regiştrii CPU care pot fi modificaţi de un program: regiştrii generali, indicatorul de instrucţiuni, indicatorul de stivă, registrul flag-urilor, etc. Un sistem de operare multiprocessing execută mai multe procese prin comutarea succesivă de la contextul unui proces la contextul altuia sau, altfel spus, prin comutarea de context. Contextul unui proces constă în zonele sale de memorie şi în starea CPU. Sistemul de operare comută între procese prin suspendarea execuţiei procesului curent, salvarea contextului său, încărcarea contextului noului proces şi lansarea acestuia în execuţie. Încărcarea contextului noului proces constă în a face accesibile zonele sale de memorie și în încărcarea regiştrilor CPU cu informaţiile care au existat în ele când procesul a ieşit din rulare. Sistemul de operare permite fiecărui proces să ruleze de la un moment de timp până la un timp maxim specific, numit o felie de timp. Când felia de timp a unui proces expiră, sistemul de operare selectează un alt proces, folosind un algoritm de dispecerizare și trece la contextul acelui proces. Deși la un moment dat de timp, un singur proces se execută, toate procesele fac progrese dacă sunt privite într-un interval de timp suficient de lung. Deşi toate procesele se află în memoria sistemului în acelaşi timp, doar zonele de memorie deţinute de procesul curent sunt accesibile. În sistemele care dispun de o gestiune hardware a memoriei, sistemul de operare poate uşor să protejeze zonele de memorie ale proceselor inactive, astfel încât orice încercare de a le accesa să determine o eroare de protecţie a memoriei. În sistemele care nu dispun de un manangement hardware al memoriei, o variabilă pointer cu valoare eronată poate conduce la citiri sau scrieri accidentale în zona de memorie a unui alt proces. Nu există însă, nicio modalitate de a citi sau scrie în mod intenționat în zona de memorie a unui alt proces, pentru că nu se pot obține informații cu privire la localizarea altor procese în memorie. 3

Prin urmare, în cazul în care două procese trebuie să facă schimb de date, acest lucru este imposibil fără anumite mecanisme speciale, numite mecanisme de comunicare. 2.3. Despre multithreading După cum am văzut, un fir de execuţie este un flux autonom de execuţie în cadrul unui proces. Într-un sistem de operare multithreading, un proces este format din unul sau mai multe fire de execuţie. Toate firele de execuţie dintr-un proces partajează aceleaşi zone de memorie de cod, de date, heap şi de sistem ale procesului. Fiecare fir de execuţie are o stare CPU separată și o zonă de stivă separată. Pentru că toate firele de execuţie ale unui proces partajează aceleaşi zone de memorie pentru date si heap, toate datele globale din proces pot fi accesate de către oricare din firele de execuţie. Pe de altă parte, dat fiind că fiecare fir de execuţie are propria stivă, toate variabilele locale şi argumentele funcțiilor sunt private unui fir specific. Deoarece firele de execuţie partajează acelaşi cod şi aceleaşi date globale, firele sunt legate mult mai puternic între ele decât procesele şi tind să interacţioneze mult mai mult decât o fac procesele. Din acest motiv, sincronizarea între taskuri se utilizează mai mult în aplicaţiile de multithreading decât în aplicaţiile de multiprocessing. Modalitățile prin care problemele de sincronizare și de comunicare sunt rezolvate la nivelul proceselor și la nivelul firelor de execuţie, respectiv între procese și între fire sunt similare, aproape identice. Deoarce firele de execuţie partajează aceeaşi zonă de sistem, resursele pe care sistemul de operare le alocă pentru un proces sunt disponibile pentru toate firele de execuţie din cadrul procesului, aşa cum si toate datele globale sunt disponibile, de asemenea, pentru toate firele de execuţie. Aceasta înseamnă că, de exemplu, dacă Thread #1 va 4

deschide un fişier, Thread #2 va putea să acceseze acel fişier, fară să fie nevoit să îl mai deschidă. Aşa cum s-a spus, în aplicaţiile multithreading, datele globale sau statice sunt partajate de către toate firele de execuţie, iar datele locale sau temporare sunt private pentru fiecare fir de execuţie. Cele mai multe sisteme de operare multithreading implementeză un al treilea tip de date: date locale statice, care sunt private pentru un fir de execuţie. Acest tip de date sunt adesea numite date specifice unui fir de execuţie. Datele specifice unui fir de execuţie sunt utile deoarece furnizează o cale pentru ca firul de execuţie să aibă date private care sunt persistente și pot fi accesate de către orice funcție în cadrul procesului. Comutarea de context între firele de execuţie ale aceluiași proces implică pur și simplu salvarea stării CPU a firului de execuţie curent şi încărcarea stării CPU pentru noul fir. Deoarece regiştrii IP și SP sunt reîncărcaţi ca şi parte a stării CPU, după comutarea contextului, procesorul va executa codul de la locaţia asociată noului fir de execuţie în rulare și va utiliza stiva noului fir în rulare. 2.4. Dispecerizare Am spus că funcţionarea unui sistem de operare multitasking constă în executarea unui task și apoi trecerea în execuţie a unui alt task (termenii "task" și "multitasking" sunt aici, utilizaţi în sensul lor generic). Timpul în care un sistem de operare permite unui task să se execute numit felie de timp sau quantum or tick- este de o durată determinată. Sistemul de operare alocă o felie de timp pentru fiecare task. Când felia de timp pentru rularea unui task se termină, partea de sistem de operare numită dispecer determină carui task i se va aloca următoarea felie de timp pentru rulare. Un task poate fi în una din următoarele 3 stări: Rulare. În această stare, task-urile se execută. 5

6 Pregătit. Task-urile în starea de pregătit işi aşteaptă rândul de la CPU. Blocat. Task-urile blocate aşteaptă ca ceva să se întâmple. Un dispecer menține una sau mai multe liste interne pentru a urmări starea fiecărui task. Tipic, acesta are o listă de task-uri pregătite și separat, o listă de task-uri blocate pentru fiecare condiţie de sincronizare pe care task-urile o așteaptă. Task-ul din capul listei de task-uri în starea ready este următorul care va rula. Task-urile din oricare din listele de task-uri blocate sunt suspendate. Ele sunt în așteptare pentru un eveniment: o intrare de la un dispozitiv, un mesaj de la un alt task, schimbarea de stare a unui obiect de sincronizare etc. Ori de câte ori are loc un eveniment pe care un task de pe lista de task-uri blocate îl aşteaptă, acesta este şters de pe lista de taskuri blocate şi plasat în lista de task-uri pregatite, unde îşi așteaptă rândul pentru execuție. Când un task iese din rulare datorită blocării pe o condiţie de sincronizare sau la expirarea feliei de timp, sistemul de operare are nevoie de a efectua o schimbare de context pentru un alt task. Am rezumat acest fenomen mai devreme, dar să îl prezentăm pas cu pas. O schimbare de context implică următoarele: 1. Salvarea contextului task-ului curent. Dispecerul salvează starea CPU pe stiva acelui task şi îşi actualizează în zona sistem a memoriei informaţiile privind localizarea celorlalte zone de memorie ale respectivului task şi alte informaţii precum cele legate de lucrul cu fişierele. Apoi, task-ul curent este plasat pe lista de task-uri pregătite sau pe lista adecvată de taskuri blocate. 2. Selectarea noului task. Dispecerul determină care task va urma pentru execuţie şi îl şterge din lista de task-uri pregătite. 3. Încărcarea contextului noului task. Dacă task-ul este un proces, dispecerul face accesibile zonele de memorie corespunzătoare noului task şi apoi încarcă starea CPU salvată când acest task a ieşit din rulare.

4. Transferul de control al noului task. Ca şi pas final, sistemul de operare încarcă registrul indicator de instrucţiuni. Încărcarea indicatorului de instrucţiuni implică transferul controlului la următorul task. Task-ul işi reia execuţia din punctul în care a rămas (unde a fost făcut ultima oară inactiv). Deși precedent am explicat modul în care are loc schimbarea de context, rămâne o întrebare: Cum un dispecer determină ce task urmează să ruleze? Răspunsul depinde de algoritmul de dispecerizare folosit. Mulți algoritmi de dispecerizare sunt disponibili, cum ar fi: prin rotaţie, cel cu cea mai scurtă durată mai întâi, cel cu cel mai scurt timp de rulare rămas primul, după priorităţi, metoda ruletei, etc [TANE'97]. 7