Sunteți pe pagina 1din 20

Agenda

Protectie si multitasking
Modelul de protectie
Multitasking Comutarea taskurilor si Tabela TSS (Task
State Segment)

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

Modelul de protectie
Contine elemente de siguranta care pot fi realizate in modul
protejat al unui sistem software pentru a interzice accesul
neautorizat la resursele de memorie ale unui task.
Microprocesorul include unitati hardware care implementeaza
un mecanism de protectie. Acest mecanism:
Restrictioneaza accesul la resursele sistem si locale ale
unui task;
Izoleaza taskurile intre ele intr-un mediu multitasking.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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 Microprocesoare


2013-2014

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).

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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 un
descriptor care defineste un segment de date.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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 Microprocesoare


2013-2014

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

Accesul la cod si date prin modelul de


protectie
Pe masura ce se executa un task intr-o aplicatie, acesta
poate sa aiba nevoie de accesul la rutine program, care se
afla in segmente cu diverse niveluri de privilegii. Astfel, nivelul
de privilegii curent al unui task se poate modifica dinamic pe
masura ce se executa, pentru ca CPL al unui task comuta pe
DPL al segmentului de cod accesat.
Regulile de protectie stabilesc care cod sau date pot fi
accesate de un program.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

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

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

10

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 Microprocesoare


2013-2014

11

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

Liliana Dobrica, Sisteme cu Microprocesoare


2013-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?
Verificari de privilegii

Liliana Dobrica, Sisteme cu Microprocesoare


2013-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?
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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

14

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 Microprocesoare


2013-2014

15

Formatul unui descriptor de poarta

where

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

16

Poarta de apel
Implementeaza un transfer indirect al transferului
controlului dintr-un task de la un cod cu nivelul CPL la un
cod mai privilegiat. Defineste un punct de intrare valid intrun segment mai privilegiat. Adresa virtuala a acestui punct
de intrare este:
destination selector + destination offset
unde:
=>destination selector identifica segmentul de cod
caruia i se re-directioneaza controlul.
=>destination offset indica instructiunea din acest
segment de unde se reia executia.
Se poate afla fie in GDT or LDT.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

17

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

18

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 Microprocesoare


2013-2014

19

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<=CPL)

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

20

10

Example de schimbari de segment valide si


invalide

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

21

Example de schimbari de segmente


valide si invalide

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

22

11

Example de schimbari de segment valide si


invalide

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

23

Example de schimbari de segment valide si


invalide

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

24

12

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 Microprocesoare
2013-2014

25

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 dintrun task in altul.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

26

13

Multitasking Comutarea taskurilor si Tabela


Task State Segment (TSS)
Structura unui task este definita prin spatiul de executie al taskului
si 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 Microprocesoare


2013-2014

27

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

28

14

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 Microprocesoare


2013-2014

29

Noi termeni asociati unui task segmentul de


stare a taskului si descriptorul acestui segment

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

30

15

Formatul descriptorului unui TSS segment de


stare a taskului

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

31

TSS pentru 80386 DX

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

32

16

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 Microprocesoare


2013-2014

33

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).

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

34

17

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-ul
registrului TR.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

35

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.
Liliana Dobrica, Sisteme cu Microprocesoare
2013-2014

36

18

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 Microprocesoare


2013-2014

37

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.

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

38

19

Comutarea taskurilor initiata prin task gate

Liliana Dobrica, Sisteme cu Microprocesoare


2013-2014

39

20

S-ar putea să vă placă și