Documente Academic
Documente Profesional
Documente Cultură
o Acumulator (ACC) si B
- A: utilizat implicit de anumite instructiuni
- B: utilizat in inmultire si impartire
- Aceste registre sunt input/output ale ALU
o PSW – Program Status Word
- indica starea operatiilor aritmetico-logice folosind mai multi biti precum Carry
- selecteaza setul/bancul de registri (Bank 0 – Bank 3)
o Stack Pointer – SP
o Data Pointer – DPTR (DPH si DPL)
- registru de 16 biti folosit pt accesarea memoriei externa de program/date
o Timere – TH0, TL0, TH1, TL1, TMOD, TCON
o Porturi I/O Paralele – P0, P1, P2, P3
o Registre de comunicare seriala – SBUF si SCON
o Registre de administrare a intreruperilor – IP si IE
o Registrul de control al puterii – PCON
Curs 2 – Setul de instructiuni
- Format: Opcode si 0/1/2 octeti de operanzi
- Operanzi: valoare numerica, registru, locatie de memorie, port I/O
- Instructiune Destinatie, Sursa
Adresare in registru
- implica transferul de informatii intre registre
- trebuie specificat intai setul de registre (0-3)
Adresare directa
- Transfera date la/de la locatia indicata de nr. hexazecimal
Adresare indirecta
- acest mod foloseste un pointer pt. a stoca adresa efectiva a operandului
- doar R0, R1 si DPTR pot fi folosite ca registre pointer
- R0 si R1 pot retine adrese de 8b, iar DPTR de 16b
Adresare relativa
- folosita de salturi precum SJMP (short jump) si salturi conditionale (ex. JNZ)
- instructiunile transfera controlul dintr-o parte de program in alta
- adresa destinatie trebuie sa fie intre -128 si +127 octeti fata de adresa instructiunii curente, deoarece
se foloseste un offset de 8b
Adresare absoluta
- ACALL si AJMP
- instructiuni de 2 octeti unde adresa absoluta de 11b este specificata de operand
- Primii 5b din cei 16b ai adresei PC nu se modifica. Ultimii 11b sunt incarcati din aceasta instructiune,
deci adresa la care se realizeaza saltul trebuie sa fie in urmatorii 211 = 2048b = 2KB din memoria de
program
Adresare lunga
- LCALL si LJMP
- instructiuni de 3 octeti unde ultimii 2 octeti specifica adresa de 16b la care se face saltul
- permite utilizarea intregii memorii de cod de 64KB
Adresare indexata
- utila atunci cand vrem sa preluam date dintr-o tabela (look-up table)
- un registru de 16b (data pointer) pastreaza adresa bazei, iar acumulatorul retine un
deplasament/offset de 8b = valoarea indexului
- suma valorii din aceste doua registre formeaza adresa efectiva pentru JMP sau MOVC
Tipuri de instructiuni
Operatii aritmetice
- adunari, scaderi, incrementari, multiplicari, impartiri etc
- C8051 nu are cunostiinte speciale legate de formatul de date
- bitii de status din PSW sunt setati cand anumite conditii sunt indeplinite, permitand utilizatorului sa
administreze diferite formate de date (binar cu semn, binar fara semn, binar codat zecimal, ASCII etc.)
Operatii logice
- instructiuni logice si operatii booleane (AND, OR, XOR, NOT)
- comunicarea paralela implica transmiterea unui intreg octet de date printr-un grup de fire paralele
- comunicarea seriala implica transmiterea datelor bit cu bit pe un singur fir
- comunicarea seriala poate fi asincrona sau sincrona
Standarde de comunicare seriala
- RS-232 (cu UART)
- Serial peripheral interface (SPI)
- System management bus (SMBus)
- Serial ATA (SATA)
C8051 are 2 UART-uri, un SPI si un SMBus.
Comunicarea asincrona este usor de implementat, dar nu este eficienta deoarece necesita 2-3 biti de
control la fiecare 8b de date. Metoda este folosita in special pentru volume mici de date.
Transmitatorul
- shifteaza datele primite paralel printr-o linie seriala, folosind propriul clock
- fara biti de start/stop/paritate
- ofera semnalul de clock pentru receptor
Receptorul
- extrage datele folosind clock-ul oferit de catre transmitator
- converteste datele primite serial in date paralele
-
Blocul UART1
UART1 este accesat prin doua SFR-uri – SBUF1 si SCON1.
SBUF1 = Serial Port Buffer - este esential format din doua buffere:
- unul de scriere care incarca datele ce urmeaza a fi transmise
- unul de citire care acceseaza datele primite din buffer
- sunt doua registre separate (write-only si receive-only)
SCON1 = Serial Port Control Register – contine bitii de stare/status si control
- bitii de control seteaza modul de operare pt portul serial
- bitii de status indica finalul transmisiunii sau receptiei si sunt testati in software (polling) sau
programati sa execute o intrerupere
Moduri de operare
- 8-bit UART cu baud-rate variabil (modul 1) – utilizat cel mai des
- 9-bit UART cu baud-rate variabil (modul 3) – TB81 si RB81 stocheaza al 9lea bit
Modul de 9-bit suporta comunicarea multiprocesor – un procesor master selecteaza slave-ul folosind al
9lea bit.
Cerinte ale ceasului UART
- UART are nevoie de un clock pentru timing-ul bitilor
- baud-rate-urile UART sunt in general mult mai mici decat frecventa MCU (Master Clock Unit), deci
ceasul de sistem nu poate fi utilizat direct ca ceas UART
- Timerele sunt folosite pentru generarea baud-rate, prin dividerea frecventei ceasului sistemului
- O precizie de ±2% a timpului bitilor este necesara pt ca transmitatorul si receptorul sa poata comunica
fara erori (se utilizeaza si oscilatoare externe cu cristale, cu eroare de 0.1%)
Programarea UART-urilor
Secventa de programare a UART:
1. Se configureaza crossbar-ul digital XBR2 pt. a permite operatia UART (enable)
2. Se initializeaza Timer1 pentru a se genera baud-rate-ul dorit
3. Se selecteaza modul de operare al portului serial si se activeaza/dezactiveaza receptia UART
(enable/disable) – registrul SCON1
4. Se activeaza intreruperile UART si se seteaza prioritatile (optional)
UART Baud-Rate
Generat de Timer1 in modul 2 (auto-reload).
𝑇1𝐶𝐿𝐾
𝑈𝐴𝑅𝑇 𝐵𝑎𝑢𝑑 − 𝑅𝑎𝑡𝑒 =
2(256 − 𝑇𝐻1)
ISR-ul
- ISR-ul executa raspunsul la intrerupere (in general o operatie de input/output)
- Atunci cand apare o intrerupere, programul principal suspenda executia temporar si sare la ISR
- ISR-ul termina executia printr-o instructiune RETI = return from interrupt (diferita de RET)
Activarea/dezactivarea intreruperilor
Sursele de intreruperi sunt activate/dezactivate (enable/disable) individual prin SFR-urile IE, EIE1, EIE2.
Bitul EA (IE7) este bitul care activeaza/dezactiveaza toate intreruperile la nivel global.
Pentru a activa o intrerupere trebuie setati bitii de enable global si individual, insa exista intreruperi care
necesita mai mult de 2 biti.
Intreruperea RESET (intreruperea 0) nu poate fi dezactivata si are mereu cea mai mare prioritate.
daca un fanion ramane setat dupa instructiunea RETI, o noua cerere de intrerupere este generata
imediat si CPU va reintra in ISR dupa completarea urmatoarei instructiuni
daca o intrerupere este dezactivata, fanionul este ignorat de catre hardware, iar executia continua
normal
Nivelurile de prioritate = SFR-urile IP, EIP1 si EIP2
- resetate la fiecare system reset
Cele doua niveluri de prioritate permit ISR-ului sa fie intrerupt de un ISR cu prioritate mai mare. Acest lucru
este util deoarece sunt evenimente care necesita actiuni immediate, iar alte evenimente pot tolera o
intarziere.
daca doua intreruperi sunt recunoscute simultan, este executata cea cu prioritate mai mare.
daca ambele intreruperi au acelasi nivel de prioritate, se foloseste ordinea fixa de prioritate
Anumite fanioane de intrerupere sunt resetate automat de hardware atunci cand CPU trece la ISR.
Majoritatea fanioanelor nu sunt resetate de hardware si necesita resetarea in software (clr).
Caracteristici RISC
- arhitectura LOAD/STORE
- dimensiune fixa a instructiunilor – 32b
- nu are registru acumulator dedicat
- putine moduri de adresare
Caracteristici non-RISC
- numar mic de registre (<32)
- fara ferestre de registre
- unele instructiuni necesita mai multe cicluri de ceas pt executie (majoritatea necesita 1 ciclu)
- intarzierile (delayed branches) nu sunt utilizate pentru a preveni blocarea pipeline-ului
CPU ARM
- poate opera ca uP/uC de uz general, chiar si in timpul executiei aceluiasi program
o la un anumit moment de timp CPU-ul se poate afla intr-un singur mod
o CPU-ul poate sa schimbe modul de lucru la evenimente externe (intreruperi) sau prin cod
Moduri de operare
Ne-privilegiate:
- USR (user) – modul general al utilizatorului pt programe normale
Privilegiate:
- SYS (system) – pentru rularea unor sarcini privilegiate de sistem
- FIQ (fast interrupt request) – pentru raspunderea la FIQs
- IRQ (interrupt request) – pentru raspunderea la IRQs
- SVC (supervisor) – implicit la reset sau cand o instructiune SVC este executata
- ABT (abort) – pentru procesarea erorilor de memorie (exceptii)
- UND (undefined) – cand apare o instructiune nedefinita
Setul de registre
- registre multifunctionale, fara un rol implicit
- registre multifunctionale, cu rol implicit
- registre dedicate
Registre multifunctionale
- R0 - R7: registre fizice multifunctionale, fara rol implicit, disponibile in toate modurile de operare
- R8 – R12: registre logice multifunctionale, fara rol implicit, mapped in doua registre fizice fiecare
o un registru fizic este folosit in modul FIQ, celelalte in alte moduri
- R13, R14: registre logice multifunctionale, cu rol implicit, mapped in 6 reg. fizice
o R13 – implicit SP = stack pointer
o R14 – implicit LR = link register
o folosite pentru a stoca adrese de intoarcere
- R15: PC = program counter – reg. fizic, atribut de arhitectura, ultimii 2 biti mereu 0
o scrierea in registru = saltul la o instructiune
- CPSR (Current Program Status Register) – reg. fizic, retine fanioanele CPU
- SPSR (Saved Program Status Register) – reg. logic mapped in 5 reg. fizice (pt fiecare tip de intrerupere)
o stocheaza fanioanele CPU din apelarile programelor in modurile de manipulare a exceptiilor
CPSR
Memoria
Harta memoriei: 4GB = 2Gw = 1Gdw
Memory management
- implicit: adresare liniara (adrese fizice de 32b)
- MMU = Off-chip Memory Management Unit – coprocesor CP15
o poate executa paginare/mgmt. al memoriei virtuale
o 4 clase de pagini
sectiuni (1MB) – accesibile printr-un nivel de adresare indirecta
pagini mari/medii/mici (large/medium/tiny) – 16kB/4kB/1kB – acc. prin 2 niv. adr. ind.
- Memory-mapped I/O (fara instructiuni dedicate pt porturile de transfer)
Moduri de adresare
- putine moduri de adresare (caract. RISC)
Adresare implicita in registru: MOV R1, R2
Adresare imediata: MOV R1, #1234
Adresare indirecta in registru (multe tipuri)
- memoria poate fi accesata doar prin instructiuni LOAD/STORE
- memoria poate fi accesata doar pt. stocare de date (procesarea de date in lucru se stocheaza doar in
registre)
Consecinte dimensiune fixa 32b a instructiunilor:
- adresare directa cu adrese de dimensiune maxima (32b) nu este posibila
- adresele full-size pot ti folosite doar pt adresare indirecta
Adresare indirecta in registru
Adresa fizica FA a locatiei de memorie este accesata si pastrata intr-un registru de baza
FA <- (r)
STR r0, [r1] - stocheaza continutul r0 la adresa indicata de continutul r1
LDR r2, [r1] – incarca in r2 continutul de la adresa indicata de r1
Adresare indirecta cu offset
Adresa fizica FA - registru de baza (orice GPR R0-R15) si un offset nr. intreg (+/-)
FA <- (r) + offset
STR r0, [r1, #12] – stocheaza continutul r0 la adresa indicata de continutul r1 + offset
Adresare indirecta cu offset pre-indexata
Dupa adunarea r1 + offset, registrul de baza r1 se updateaza cu noua adresa ( r1 = r1 + #offset)
Adresare indirecta cu offset post-indexata
Continutul r0 se stocheaza la adresa indicata de r1, apoi r1 se incrementeaza cu offset.
Offsetul este accesat in cazul:
- adresarii immediate (constanta adaugata in registru de baza : STR ro, [r1, #12])
- adresarii in registru (continutul GPR adaugat in reg. baza : STR ro, [r1,r2])
- adresare shiftata in registru (continutul GPR este shiftat cu 0-31 pozitii,
apoi adaugat in reg. baza: STR ro, [r1, r2, LSL #2])
Curs 6 – Setul de instructiuni ARM
Pentru intoarcere:
- Se reface CPSR din SPSR
- Se reface PC din LR
Executie conditionala
Seturile de instructiuni permit, in general, executarea subrutinelor doar conditional.
Prin refolosirea conditiei de evaluare, ARM creste nr. de instructiuni
- Toate instructiunile contin un camp conditional care determina daca CPU le va executa
- Instructiunile ne-executate consuma 1 ciclu de timp (fetch & decode)
Acest lucru elimina nevoia de mai multe ramuri (branches), care opresc pipeline-ul (3 cicluri pt reumplere)
- permite cod in linie, foarte dens, fara ramuri
- timpul pierdut pt neexecutia unor instructiuni este in general mai mic decat apelul unei subrutine si
intoarcerea in program
Pentru a executa instructiunea conditional, sintaxa este:
ADD r0,r1,r2 ; r0 = r1 + r2 (ADDAL)
; ... and set flags
Implicit, operatiile de procesare de date nu afecteaza fanioanele de conditie (cu exceptia comparatiilor).
Pentru a actualiza fanioanele de conditie, bitul S al instructiunii trebuie setat ulterior.
Instructiuni cu ramuri (Branch)
Offset-ul pentru instructiunile cu ramuri este calculat de asamblor:
- facand diferenta dintre instructiunea ramurii si adresa tinta – 8 (pt. pipeline)
- Ofera un offset de 26-biti, shiftat la dreapta cu 2 biti (cei 2 biti din dreapta sunt mereu 0)
- range: +/- 32MB
Cand sunt executate instructiunile, procesorul shifteaza offset-ul cu 2 biti, il extinde pe 32b si il incarca in PC.
Executia continua de la noul PC, dupa ce pipeline-ul a fost umplut (refill).
Instructiunea de ramura cu legatura (branch with link) implementeaza apelul unei subrituine scriind PC-4 in
LR-ul setului curent.
Pentru intoarcerea din subrutina, in PC se stocheaza valoarea din LR.
Instructiunile cu ramuri nu afecteaza LR.
Arhitectura 4T ofera mai multe instructiuni ARM cu ramuri.
BARREL SHIFTER
- ARM nu are instructiuni de shiftare
- Foloseste acest circuit care shifteaza anumite operatii
shiftare la stanga cu o anumita valoare (*2) (LSL)
shiftare logica la dreapta (/2) (LSR)
shiftare aritmetica la dreapta (pastreaza semn) (ASR)
rotate right (ROR) – bitii shiftati se intorc la coada
rotate right extended (RRX) – foloseste CPSR C-flag ca al 33lea bit
Al doilea operand – registru shiftat
val. de shiftare este retinuta ori
intr-un camp de 5-bit imediat instructiunii (shiftarea se face intr-un singur ciclu,
fara overhead)
byte-ul de jos al unui registru (necesita un ciclu in plus, ARM nu are suficiente
porturi sa citeasca 3 registre simultan, identic cu shiftarea din alte procesoare)
- Daca nu se specifica shiftarea, se aplica implicit LSL #0 (nu afecteaza val. registru)
Folosirea unui registru shiftat:
- folosirea unei instr. de multiplicare cu o constanta necesita incarcarea constantei intr-un registru (si
asteptarea unui nr. de cicli pt ca aceasta sa fie completata)
- O solutie mai optima este combinarea MOV, ADD, SUB si RSB cu shiftari, pt a reduce nr. ciclilor necesari
Valoarea imediata
- Nu exista o instructiune care sa incarce direct o constanta imediata de 32b fara sa execute o incarcare
de date din memorie
- Instr. ARM nu folosesc fluxul de instructiuni ca date
- Instr. procesare de date au disponibili 12b pentru operandul 2 (max. 4096)
se fol. pt stocarea val. pe 8b (0-255), care sunt rotite la dreapta cu un nr. par de
pozitii, pt a obtine mai multe valori
Instructiuni de multiplicare
- 2 tipuri: MUL si MLA (multiply accumulate – aduna gratis, in acelasi ciclu)
MUL {<cond>}{S] Rd, Rm, Rs ; Rd = Rm * Rs
MLA {<cond>}{S] Rd, Rm, Rs, Rn ; Rd = Rm * Rs + Rn
Restrictii: Rm si Rd nu pot folosi acelasi registru se interschimba Rm si Rs (swap), deoarece
inmultirea este comutativa. De asemenea, PC nu se poate folosi.
ARM foloseste algoritmul lui Booth pentru inmultirea intregilor
Operatii cu stive:
Traditional, o stiva creste in jos in memorie, cu ultimul element impins la adresa cea mai mica.
ARM suporta si stive care cresc in sus.
Valoarea SP poate indica catre:
ultima adresa ocupata (full-stack) – necesita pre-decrementare
urmatoarea adresa ocupata (empty-stack) – necesita post-decrementare
Tipul stivei este dat prin postfix-ul instructiunilor:
STMFD / LDMFD : Full Descending stack
STMFA / LDMFA : Full Ascending stack
STMED / LDMED : Empty Descending stack
STMEA / LDMEA : Empty Ascending stack
NOTA: Compilatorul ARM suporta doar stive care cresc in jos (full descending stacks).
Stivele sunt utilizate pentru a crea un spatiu temporar de registre de lucru pentru subrutine. Orice
registru necesar este impins in stiva la inceputul subrutinei si extras la final, pentru a-l restabili.
Daca instructiunea POP are bitul S setat (cu ‘^’), transferul PC intr-un mod privilegiat va cauza ca SPSR
sa fie copiat in CPSR.
Instructiuni Swap/Swap Byte (interschimbare) --- SWP {cond} {B} Rd, Rm, [Rn]
Intreruperi Software (SWI)
SWI = instructiune definita de utilizator
Cauzeaza o exceptie pentru vectorul hardware SWI, cauzeaza trecerea in modul supervisor.
SWI exception handler – examineaza campul de comentariu al instructiunii (24b) si decide ce operatie este
necesara.
Coprocesoare
Arh. ARM suporta 16 coprocesoare.
Fiecare set de instructiuni al unui coprocesor ocupa o parte din setul de instructiuni ARM.
Instructiunile coprocesoarelor sunt de 3 tipuri
- Procesare de date
- Transfer de date in/din registre (to/from ARM)
- Transferuri de date in/din memorie (load/store to/from memory)
Un coprocesor poate fi implementat hardware, software (prin exceptii/instructiuni nedefinite) sau chiar in
ambele.
SUMAR ARM
- Instructiunile au 32 biti
- Majoritatea instructiunilor se executa intr-un singur ciclu
- Orice instructiune poate fi executata conditional
- Arhitectura load/store
instructiunile de procesare de date functioneaza doar cu registre
instructiuni specifice de acces in memorie cu auto-indexare
tipuri de date 32b, 8b sau 16b pt. ARM v4
- Set extins de instructiuni cu ajutorul coprocesoarelor
Curs 8 – Memory Management
Este procesul prin care microprocesorul organizeaza si structureaza memoria.
- pentru a furniza cai de alocare dinamica a unor portiuni din memorie si eliberarea lor atunci cand nu
mai sunt necesare
- pentru a proteja portiuni din memorie de un program/utilizator sau de intentiile rele alea altor
programe/utilizatori
Mem. Mgmt este folositor doar in cazul unui mediu multi-user, multi-tasking.
Poate fi facut doar in contextul unei memorii segmentate (memoria este impartita in sectiuni cu setari
specifice de protectie).
Organizarea liniara
- accest continuu in memorie
- spatiu de adrese: 0 – 2n-1 (pt. adrese de n-bit)
- adresa fizica este un atribut de arhitectura
Organizarea segmentata
- memoria este impartita in segmente (pagini)
- in segmente exista adresare liniara relativa la baza segmentului
- adresa fizica NU este un atribut de arhitectura
Principii de segmentare a VM
- Memoria este impartita disjunct, nu neaparat concatenat, in segmente de dimensiune variabila
- Segmentele au proprietati care permit personalizarea acestora si protectia informatiilor
- Segmetntele pot fi schimbate intre mem. fizica si mem. externa
Memoria virtuala VM – cuprinde toate resursele de memorie (interne si externe) ale microcomputerului.
Harta memoriei virtuale este obtinuta prin concatenarea nr. maxim de segmente, cu dimensiunea maxima a
fiecaruia.
Principii de paginare – LA FEL, doar ca segmentarea se face inaintea paginarii daca exista ambele. Paginarea se
va face in fiecare segment, ulterior.
Adresa virtuala
SELECTOR
- folosit pentru a identifica segmentul din memoria cirtuala
o INDEX – indexul segmentului
o TI (Table Indicator) – indica daca informatia este in spatiul de adrese global (0) sau local (1)
o RPL (Requested Privilege Level)
EA – Adresa efectiva
- folosita pt. identificarea informatiei in segment
Exemplu:
Descriptorii segmentelor
Fiecare segment este caracterizat de un descriptor de segment care stocheaza informatii precum:
- pozitia segmentului in memoria virtuala
- dimensiunea segmentului
- proprietatile segmentului (inclusiv cele de protectie)
Tipuri de descriptori
Tabele descriptori
Segmente cu utilizare speciala, folosite pentru a stoca descriptorii de segmente.
- se gasesc in memorie
- sunt segmente
- stocate in spatiul global de adrese
Ex. GDT (Global Descriptor Table), LDT (Local Descriptor Table)
Translatia adreselor virtuale VA
1. Este selectat tabelul de descriptori corespunzator
2. Este selectat un descriptor specific din tabel, folosint campul INDEX al VA
3. Este citita toata informatia legata de segmentul tinta (pozitie, marime, propr.)
4. Se executa verificari:
a. este locatia de memorie tinta in segmentul tinta?
b. am dreptul sa ccesez acest segment?
5. Daca verificarile sunt ok, FA-ul locatiei de memorie este calculat prin insumarea campului BASE din
descriptor cu EA-ul din VA.
SUMAR
Descriptorii de tip A si B1 stocheaza info. precum:
- locatia sgmt. in memorie (BASE)
- dimensiunea sgmt. (FIELD)
- tipul sgmt (S)
- accesul la informatie (R si W)
- memory swapping (P si A)
- privilegii multi-nivel (DPL si C)
Registre Cache
- Translatia VA-FA consuma foarte mult timp pentru fiecare acces de memorie
- Segmentul poate fi refolosit pentru a face translatia mai rapid
- Toate registrele care stocheaza un selector (CS, DS, ES, SS, FS, GS, LDTR) au registre cache
corespunzatoare care stocheaza BASE, LIMIT, ACCESS din ultimul descriptor
- sunt registre fizice, nu sunt atribute de arhitectura
- resetate cand registrul de baza se schimba
Paginarea memoriei virtuale
Principii:
- memoria este impartita in sectiuni cu dimensiune FIXA, disjuncte, concatenate – PAGINI
- paginile au proprietati care permit protectia informatiei
- paginile pot trece intre mem. fizica si mem. externa identiFICAT
Harta memoriei virtuala = concatenarea tuturor paginilor
Fundamentele paginarii
- Memoria este accesata direct prin unul sau mai multe tabele de descriptori
- Designul oricarui mecanism de paginare incepe cu
o harta memoriei
o dimensiunea paginii
o numarul de niveluri de adresare indirecta
- VA este compusa din mai multe campuri (in fct. de nr. niveluri adr. indirecta)
o INDEX lvl. 1 - pt descriptori din tabelul Lvl. 1
o INDEX lvl. 2 – pt descriptori din tabelul Lvl.2
o EA sau OFFSET – indexul memoriei in interiorul paginii
- Dimensiunile campurilor
o dimensiunea EA depinde de dimensiunea paginii
o dimensiunile campurilor INDEX depind de dimensiunile tabelelor de descriptori
- Pagina/tabelul de descriptori stocheaza
o FA a urmatorului element (pagina/tabel)
o proprietatile (incl. protectie) pt urm. element
- Dimensiunea paginii/tabelei de descriptori este cea mai mica putere a lui 2 care ofera suficient spatiu
pentru informatia stocata in descriptor
CURS 11 MECANISME DE PROTECTIE
Ce trebuie sa protejam?
Mecanisme de protectie
Entitati protejate:
1. MEMORIA DE SEGMENT (cel mai mic segment care are nevoie de protectie, e accesat de catre
SELECTOR-atribut de arhitectura; selectorul duce la descriptorul de segment care permite designerului
sa defineasca pozitia, size-ul si accesibilitatea segmetului din memorie)
2. TASK-UL (reprezinta o colectie de programe familiare; protejat prin mecanismul multi-level; privilegiu
dinamic care depinde de programul care ruleaza)
Global address space (TI=1) (folosit de sis de operiare, userul are acces limitat)
Local address space (TI=0) (general folosit de user)
Accesul la informatia din memorie se face indirect prin DESCRIPTORII SEGMENT
Tabele de descriptori :GTD si LDTs sunt localizati in global address space, sunt accesibili doar de catre sistemul
de operare si de administratorul sistemului; au dimensiune fixa
Verificari “on-chip”
2. Verificarea 2: Este programul curent lasat sa acceseze segmentul de date? Regula cu maximul
3. Verificarea 3: Este informatia in ,imitele segmentului
Apeluri intre programe cu acelasi nivel d eprivilegiu este permis fara GATE
Apelul catre un program cu nivel de prioritate mai mare se poate doar cu GATE
Apeluri care un programe cu nivel mai mic de privilegiu NU e permis
Jump-uri intre programe cu acelasi privilegiu sunt permise si cu si fata GATE
Jumpu-uri intre nivelele de prioritate NU sunt permise
PROTECTIA PAGINILOR
Descriptorii in Table Directory si Page Table au 32bit si contin capurile de protectie:
1. U/S 0:supervisor, 1:user obisnuit ; paginile pot fi folosite de orice program
2. R/W =1 supervisorul poate scrie in pagina
CURS 13 MULTITASKING
Este o metoda prin care un computer pare ca face mai multe taskuri in acelasi timp
Task-urile sunt excluse concomitent in loc sa fie excluse secvential
Poate fi realizat de single-CPU sau multi-CPU calculatoare, cele multi pot executa mai multe taskuri in
paralel decat cele single
Multitaskingul presupune programarea momentului cand un task se intrerupe si altul isi poate continua
rularea
Cand se schimba continutul la o anumita frecventa se creeaza iluzia de rulare in paralel
Task switching:
Unele microprocesoare nu au o instructiune speciala pentru schimbarea taskului, asa ca se folosec
jumpuri
Etapelee task switching:
1. Verificari a multilevel privilegiilor
2. Alte verificari : a TSS pentru taskul curent si pentru cel care urmeaza sa fie rulat
3. Salvarea continutului taskului vechi in al sau TSS
4. Restaurarea continutului noului task