CursMS8_2014

download CursMS8_2014

of 20

description

curs smp

Transcript of CursMS8_2014

  • 1

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 1

    Agenda

    Protectie si multitasking

    Modelul de protectie

    Multitasking Comutarea taskurilor si Tabela TSS (Task State Segment)

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 2

    Modelul de protectie

    Contine elemente de siguranta care pot fi realizate in modulprotejat al unui sistem software pentru a interzice accesulneautorizat la resursele de memorie ale unui task.

    Microprocesorul include unitati hardware care implementeazaun mecanism de protectie. Acest mecanism:

    Restrictioneaza accesul la resursele sistem si locale ale unui task;

    Izoleaza taskurile intre ele intr-un mediu multitasking.

  • 2

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 3

    Modelul de protectie Descrierea accesului de memorie

    Elementele cheie ale mecanismului de protectie sunt segmentarea, paginarea si descriptorii.

    Un segment al unui spatiu virtual de adrese are atribute de protectie unice (drepturi de acces si limita segmentului in descriptori)

    Unitati hardware de protectie on chip efectueaza verificari in timpul fiecarui acces la memorie.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 4

    Modelul de protectie

    Lista verificarilor de protectie si a restrictiilor contine: Verificarea tipului; Verificarea limitei; Restrictii ale domeniului adresabil; Restrictii ale intrarii la apelul de procedura Restrictii ale setului de instructiuni.

    Exemplu: Scrierea la o locatie de memorie Este testat tipul segmentului pentru a fi consistent cu registrul in al

    carui cache se incarca. Este verificat offsetul ca sa fie in limita segmentului.

    Atribute importante ale descriptorului: P- bit prezenta segmentului in memoria fizica. Segment de cod sau de date (bit 4); readable, writable, conforming, expand up or expand down, accessat; Nivelul de privilegii (DPL).

  • 3

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 5

    Modelul de protectie

    Inaintea incarcarii descriptorului , MMU verifica daca: Segmentul este prezent in memorie fizica; Segmentul este pe un nivel de privilegii ca sa poata fi accesat de

    programul curent aflat la nivelul curent de provilegii. Tipul este consistent cu registrul in care este selectorul (CS=cod,

    DS, ES, FS, GS, SS=date) Referinta in segment nu depaseste limita segmentului.

    Daca se detecteaza o violare? Semnaleaza conditie de eroare si MMU trebuie sa:

    Determine cauza erorii; Corecteze problema; Reinitieze operatia;

    Exemplu de violare a protectiei : Selectorul incarcat in CS indica undescriptor care defineste un segment de date.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 6

    Niveluri de privilegii

    Modelul de protectie ofera 4 posibile niveluri de privilegii fiecarfui task. Acestea sunt numite: Level 0, Level 1, Level 2, Level l 3.

    Level 0 este cel mai privilegiat; Level 3 este cel mai putin privilegiat.

    Nivelurile de privilegii sunt asociate astfel: Level 0: software independent de

    aplicatii care ofera functii orientate pe microprocesor: control I/O, gestiunea memoriei.

    Level 1: procese care ofera serviciile sistemului: accesul la fisiere.

    Level 2: implementeaza rutine customizate care sa suporte operatii ale sistemului in scopuri speciale.

    Level 3: aplicatii utilizator.

  • 4

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 7

    Niveluri de privilegii

    Nivelurile de privilegii izoleaza software-ul sistemului de aplicatiile utilizatorilor.

    Taskurile de pe un nivel pot utiliza programele de pe nivelurile mai privilegiate, dar nu pot modifica in nici un fel aceste rutine.

    Nu afecteaza integritatea altor programe. Prin aceasta protectie se obtine o mai buna fiabilitate

    software pentru ca erorile dintr-o aplicatie nu pot afecta sistemul de operare sau alte aplicatii.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 8

    Accesul la cod si date prin modelul de protectie

    Terminologie Descriptor privilege level (DPL) a fost definit. I/O privilege level (IOPL) a fost definit. Current privilege level (CPL) nivelul de privilegii curent al unui task is

    defined as the privilege level of the code or data segment that is currently being accessed by a task.

    Exemplu: CPL al unui task in executie este DPL octetul drepturilor de acces din descriptor cache al registrului CS. Aceasta valoare este de obicei egala cu DPL al segmentului de cod.

    Requested privilege level (RPL) este nivelul de privilegii al noului selector ce se incarca in registrul segment.

    Exemplu: in cazul codului, este nivelul de privilegii al segmentului de cod care contine rutina apelata. => RPL este DPL al segmentului de cod caruia I se transfera controlul.

  • 5

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 9

    Accesul la cod si date prin modelul de protectie

    Pe masura ce se executa un task intr-o aplicatie, acestapoate sa aiba nevoie de accesul la rutine program, care se afla in segmente cu diverse niveluri de privilegii. Astfel, nivelulde privilegii curent al unui task se poate modifica dinamic pemasura ce se executa, pentru ca CPL al unui task comuta peDPL al segmentului de cod accesat.

    Regulile de protectie stabilesc care cod sau date pot fiaccesate de un program.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 10

    Accesul la cod si date prin modelul de protectie

    Cum sunt accesate segmentele de date de un cod cu CPL?

    Verificarea nivelului de privilegii pentru accesul la date

  • 6

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 11

    Accesul la cod si date prin modelul de protectie Cum sunt accesate segmentele de date de un cod

    cu CPL? Regula generala: Codul poate accesa doar date care sunt pe acelasi

    nivel de privilegiu sau mai putin privilegiat. Exemplu: CPL al unui task =1 => poate accesa segmente de date

    cu DPL egal cu1, 2 or 3. Cand un nou selector este incarcat in registrele DS, ES, FS or GS, DPL

    al segmentului de date target este verificat sa respecte aceasta regula. Exceptie: Cand registrul SS este incarcat. In acest caz DPL trebuie sa

    fie egal cu CPL. => Stiva activa este intotdeauna la acelasi CPL. Fiecare nivel de privilegiu are cate o stiva.

    Exemplu: DPL=2, CPL=0 and RPL=2 Are loc accesul la date? Solutie: DPL al segmentului target este 2 si este mai putin

    privilegiat decat CPL sau RPL. De aceea criteriul de protectie este satisfacut si accesul la date are loc.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 12

    Accesul la cod si date prin modelul de protectie

    Cum este transferat controlul intre cod la acelasi nivel de privilegii sau intre cod cu niveluri diferite de

    privilegii? Transferul controlului are loc:

    In acelasi segment de cod prin instructiunile: JMP NEAR CALL

    verificarea limitei

    In alt segment de cod prin instructiunile: JMP FAR CALL

    Verificari: tip segment, limita segment, reguli de nivel de privilegii

  • 7

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 13

    Accesul la cod si date prin modelul de protectie

    Cum este transferat controlul intre cod la acelasi nivel de privilegii sau intre cod cu niveluri diferite

    de privilegii? Verificari de privilegii

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 14

    Accesul la cod si date prin modelul de protectie

    Cum este transferat controlul intre cod la acelasi nivel de privilegii sau intre cod cu niveluri diferite

    de privilegii? Transferul controlului programului are loc daca una din cele doua

    conditii este indeplinita : Daca CPL este egal cu DPL, cele doua segmente sunt pe

    acelasi nivel de privilegii. Daca CPL reprezinta un nivel mai privilegiat decat DPL, dar

    bitul C (conforming code) din descriptorul noului segment este setat, rutina se executa la nivelul CPL.

    Regula generala: Cand controlul este transferat unui cod dintr-un segment cu un nivel de privilegii diferit => noul segment de cod trebuie sa fie mai privilegiat. Se utilizeaza descriptorul de poarta.

  • 8

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 15

    Formatul unui descriptor de poarta

    Descriptor de poarta Implementeaza schimbarea nivelurilor de privilegii. Incercarea de a transfera controlul unei rutine dintr-un segment

    de cod mai privilegiat Exista 4 tipuri de descriptori de poarta:

    Poarta de apel (call gate) Poarta taskului (task gate) Poarta intreruperii (interrupt gate) Poarta capcanei (trap gate)

    Instructiunile care refera un descriptor de poarta: CALL FAR JMP FAR

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 16

    Formatul unui descriptor de poarta

    where

  • 9

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 17

    Poarta de apel

    Implementeaza un transfer indirect al transferuluicontrolului dintr-un task de la un cod cu nivelul CPL la un cod mai privilegiat. Defineste un punct de intrare valid intr-un segment mai privilegiat. Adresa virtuala a acestui punctde intrare este:

    destination selector + destination offset unde:

    =>destination selector identifica segmentul de cod caruia i se re-directioneaza controlul.

    =>destination offset indica instructiunea din acestsegment de unde se reia executia.

    Se poate afla fie in GDT or LDT.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 18

    Poarta de apel

    Operare: Selectorul portii de apel este incarcat

    in CS => se incarca in cache descriptorul segmentului de cod apelat (descriptorul unui segment executabil).

    Offset-ul din descriptorul portii de apel localizeaza punctul de intrare in procedura din segmentul executabil.

    Ori de cate ori CPL-ul taskului se modifica, o noua stiva este activata.

  • 10

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 19

    Poarta de apel

    Secventa de comutare a contextului programului: ..

    Vechile informatii din ESP si SS sunt salvate in noua stiva impreuna cu alti parametri, EIP si CS (pastrarea legaturii pentru return).

    Incepe executia procedurii la un nivel mai inalt de privilegii.

    RET: intoarce controlul programului apelant. Se reface contextul original al programului => vechile valori ale EIP, CS, parametri, ESP, SS sunt scoase din stiva.

    Executia programului se reia cu instructiunea urmatoare instructiunii CALL din segmentul de cod mai putin privilegiat.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 20

    Poarta de apel

    Verificari de privilegii la transferul programului prin poarta de apel.

    Apelul este realizat cu succes daca:

    DPL poarta este egal cu CPL.

    RPL al codului apelat este (RPL

  • 11

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 21

    Example de schimbari de segment valide si invalide

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 22

    Example de schimbari de segmente valide si invalide

  • 12

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 23

    Example de schimbari de segment valide si invalide

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 24

    Example de schimbari de segment valide si invalide

  • 13

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 25

    Multitasking Comutarea taskurilor si Tabela Task State Segment (TSS)

    Un microprocesor implementeaza o arhitectura software multitasking daca are on-chip hardware care sa permita existenta mai multor taskuri in sistemul software si sa permita ca acestea sa fie planificate pentru executie intr-o maniera time-sharing.

    Controlul programului este comutat de la un task la altul dupa o perioada de timp fixata.

    Exemplu: taskurile executa intr-o secventa round-robin. Taskul cel mai recent executat se intoarce la sfarsitul listei de taskuri de executat. Chiar daca taskurile sunt executate in time sharing, utilizatorul percepe ca toate taskurile sunt simultan in executie.

    Un task este definit ca o colectie de rutine program ce efectueaza o functie specifica. Aceasta functie se numeste proces. Microprocesorul are un mecanism eficient de comutare a taskurilor.

    Cand este apelat in operare acesta are resurse de memorie locale si globale.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 26

    Multitasking Comutarea taskurilor si Tabela Task State Segment (TSS)

    Taskul este unitatea de lucru pe care un procesor o poate executa sau suspenda.

    Un procesor poate executa un: program, un task or proces, un serviciu al sistemului de operare, un serviciu al unei intreruperi, tratarea unei exceptii.

    Task este elementul cheie al unei arhitecturi software multitasking.

    Arhitectura microprocesorului ofera un mecanism de salvare a starii taskului, trimiterea unui task in executie sau comutarea dintr-un task in altul.

  • 14

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 27

    Multitasking Comutarea taskurilor si Tabela Task State Segment (TSS)

    Structura unui task este definita prin spatiul de executie al taskuluisi segmentul de stare a taskului.

    Spatiul de executie al taskului contine segmentul de cod, unul sau mai multe segmente de date, segmentele de stiva. pentru protectie, fiecare nivel de protectie are cate o stiva.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 28

    Multitasking Comutarea taskurilor si Tabela Task State Segment (TSS)

    Segmentul de stare a taskului - TSS

    TSS contine toate informatiile necesare pornirii sau opririi unui task.

    TSS specifica

    segmentele care fac parte din spatiul de executie al taskului reprezinta locul de stocare a altor informatii de stare a taskului.

    In multitasking TSS ofera mecanismul de legatura dintre taskuri.

  • 15

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 29

    Multitasking Comutarea taskurilor si Tabela Task State Segment (TSS)

    Un task este identificat prin selectorul de segment al TSS-ului.

    Cand un task este incarcat in procesor pentru executie, sunt incarcate in registrul TR urmatoarele:

    selectorul de segment, descriptorului de segment al TSS prin:

    adresa de baza limita atributele.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 30

    Noi termeni asociati unui task segmentul de stare a taskului si descriptorul acestui segment

  • 16

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 31

    Formatul descriptorului unui TSS segment de stare a taskului

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 32

    TSS pentru 80386 DX

  • 17

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 33

    NT flag NT flag are un rol important in multitasking. Pentru a reveni in taskul anterior sunt utilizate doua elemente:

    back link din TSS si NT flag. Cand NT=1 arata ca taskul curent in executie este imbricat in

    executia altui task.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 34

    Invocarea taskurilor

    Un task poate fi invocat direct indirect

    Invocarea poate fi: intersegment jump (nu exista legatura de return

    la taskul anterior), intersegment call (informatiile de back linkage

    sunt salvate automat).

  • 18

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 35

    Invocarea directa a unui task

    Invocarea directa a unui task este atunci cand instructiunile JMP or CALL au ca operand un selector.

    Executia instructiunii CALL include:

    1. selectorul este incarcat in registrul TR Verificarea drepturilor de acces

    - descriptor este prezent P=1 - taskul nu este ocupat Busy B=0 - regula de protectie nu este violata: CPL=DPL

    2. citeste descriptorul TSS din GDT si l incarca in cache-ulregistrului TR.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 36

    Invocarea directa a unui task

    Operatii la comutarea unui nou task Ipoteza : taskul este activ si apeleaza un nou task. Noul task se

    numeste task imbricat (engl. nested task)1. Bitul NT din reg. EFLAGS este setat pe 1.2. Taskul curent este suspendat si starea sa este salvata in vechiul

    TSS. 3. Bitul B bit al noului descriptor TSS este marcat ocupat (busy) 4. Bitul TS (Task Switched) din registrul program status word (PSW)

    este setat pentru a arata ca un task este activ. 5. Informatiile de stare ale noului task din TSS sunt incarcate in

    unitatea centrala de prelucrare.6. Selectorul vechiului TSS este salvat ca back link selector in noul

    TSS. 7. Operatia de comutare a taskurilor este completa si executia se

    reia cu instructiunea identificata de noul continut al CS:EIP.

  • 19

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 37

    Invocarea directa a unui task

    Executia instructiunii return Back link selector al vechiului TSS este

    reincarcat automat in registrul TR. => se activeaza vechiul TSS si se reface vechiul context al programului.

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 38

    Invocarea indirecta a unui task

    JMP or CALL printr-o poarta a taskului asigura transferul controlului la un task cu RPL diferit de CPL (mai privilegiat).

    Formatul unei task gate Selectorul indica poarta taskului (task gate) care poate fi

    in LDT sau GDT, in locul unui selector TSS. Poarta contine TSS selector care este incarcat in registrul TR pentru a selecta TSS si a initia comutarea taskurilor.

  • 20

    Liliana Dobrica, Sisteme cu Microprocesoare2013-2014 39

    Comutarea taskurilor initiata prin task gate