Etapele procesului de complare-in faza de compilare
codul sursa al programuluieste transf. in cod ob.Dupa
compilare se creaza un fisier cu acelasi nume,dar cu extensia .obj.Analiza lexicala se realizeaza la nivelul fiecarei linii prog. si consta in: -elim. caracterelor nesemnificative -identif. unitatilor logice ale limbajului de prog.,de tipul operatorilor,cuv. rezervate,identificatorilor si inserarea acestora in struct. tabelare numite tabele de simboluri. Analiza sintactica-indentif. constructiilor sintactice de baza.Interpretarea continutului lor,generarea unor struct. proprii de descriere a fiecarei constructii,prin inter. unei struct. arborescente,numita arbore de derivare. Analiza semantica-interpreteaza fiecare constructie sintactica pe baza arborelui de derivare definit si folosind tabela de simboluri.Se genereaza seturi de instr. elementare care coresp. fiecarei constr. sintactice identif.Instr. sunt formulate intr-un format de trecere catre codul masina,numit cod intermediar.Optimizarea codului intermediar se face prin inlaturarea var. neutilizate,a instr. redundante,etc. Adresarea indexata-val. din instr. se aduna algebric cu val. registrului de index ptr. a det. adresa operantului. Adresarea indexata permite regasirea elem. unei struct. de tip vect.,prin incrementarea sau decrementarea unui registru denumit registru index.O singura instr. poate prelucra toate elem. unui vector.In arhitectura ISA x86 sunt 2 registre index:Si si DI.Adr. unui elem. din vect. se precizeaza prin continutul unui registru index sau ca o suma dintre continutul registrului index si un deplasament.Deplasamentul indica adr. de inceput a vect.,iar registrul index poz. rel. a elem. fata de adr. de inceput. Trecerea la elem. urm. din vect. se face prin incrementarea sau decrementarea explicita a registrului index.Daca elem. vect. sunt octeti at. factorul de incrementare este 1 iar daca sunt cuv. este 2.Acest mod de adresare este mai putin eficient d.p.d.v al vitezei de executie deoarece implica un calcul matematic si o adresare suplimentara a mem.In schimb este o met. flexibila de adresare a struct. de tip vect. sau tablou. Adresarea indirecta-info. din instr. reprez. adresa adr. operantului.Adresarea indir. este o tehnica de adresare moderna care permite scurtarea lungimii progr. si introduce o flexibilitate in scrierea progr. complexe.La adresarea indirecta adresa logica din instr. nu reprez. adr. efectiva a operandului ci a unei noi instr.Deci,se va citi locatia din mem. de la adr. specificata in instr.,iar data citita va fi interpretata ca o noua instr.In cazul microcalc. adresarea indirecta este aplicata frecvent sub forma adresarii implicite prin interm. unor registre generale din CPU. Adresarea directa-info. din instr. reprez. chiar locatia unde se mem. operandul.Adresarea indir. presupune prezenta adr. operandului in codul instr.Operandul este o locatie de mem. sau cu alte cuv. o var.Adresa operan-
dului se poate exprima printr-o val. sau printr-un nume
simbolic dat var.Ptr. a evita confuzia sau adresarea imediata,val. adr. se plaseaza intre paranteze drepte.De fiecare data cand se folosesc paranteze drepte,continutul lor trebuie interpretat ca si o adr. si nu ca o const. Adresarea indir. permite accesarea unei singure locatii de mem.;o alta locatie necesita o alta instr. Adresarea imediata-at. cand in instr. se specifica val. operandului si nu adr. lui.Adresarea imediata este cea mai simpla forma de adresare.Acest mecanism de adresare incalca principiul gen. de adresare;operandul nu se mem. separat de instr.,ci se face parte integrata chiar din instr.Operandul este o constanta,care se pastreaza in codul instr.Odata cu citirea instr. are loc si citirea operandului.Constanta se poate exprima in zecimal,hexazecimal,binar sau sub forma de coduri ASCII.Constanta este intotdeauna al 2-lea operand al unei instr.Acest mode de adresare este relativ rapid deoarece nu necesita transf. suplimentar ptr. aducerea operandului,dar flexibilitatea este limitata,in sensul ca o instr. opereaza cu o singura val. Adresarea prin registri-at. cand in zona de adr. se specifica un registru al UCP.La aceasta adresare operandul se afla intr-un registru al procesorului.Acest mod este de fapt o forma mai eficienta de adresare directa.Eficienta se dat. mai multor fact: -registrele sunt in int. procesorului ceea ce elim. necesitatea unui transf. suplimentar cu mem; -adr. unui registru se exprima pe un nr. redus de biti(3-4 biti), ceea ce contribuie la reducerea dim. instr. si implicit la o executie mai rapida a acestora; -transf. intre registre se face la o vit. mult mai mare deoarece se utiliz. magistralele int. ale procesorului. Nu sunt permise transferuri directe intre registrele seg. ale procesorului,sau intre un registru seg. si o const.Incarcarea unui registru seg. se face indir. prin intermedierea unui registru gen.Dezavantajul acestui mod consta in faptul ca nr. de registre int. este elim. si din aceasta cauza nu toate var. unui progr. pot fi pastrate in registre. Tehnica Spooling-reprez. un mod eficient de exploatare a sist. de calcul seriale,bazat pe principiul separarii op. de intrare de op. de iesire si de restul prelucrarilor si pe executarea lor in paralel.Sunt parcurse circular terminalele si prin interm. unei instr. de test,este verif. starea fiecarui terminal.Daca este identif. aparitia unei cereri la un terminal,at. aceasta este tratata.Consultarea starii terminalelor este facuta in paralel cu executarea proceselor.Alte mecanisme folosite: -adressing-se emite adr. terminalului -intrerupere-terminalul genereaza o intrerupere. Executarea lucrarilor se face in multiprogramare,cu respectarea unor reg.Ptr. utiliz. tehnicii Spooling este nevoie de o mem. ext. de cap. mare,direct adresabila,unde sa fie org. perifericele virtuale.Efectele itiliz. tehnicii Spooling sunt: -cresterea randamentului de exploatare a unui sist. serial cu 40-50%,dat. scaderii timpilor de asteptare ai UCP -cresterea randamentului de utiliz. a echipamentelor de I/O, acestea fiind utiliz. in reprize dar intr-o repriza sunt utiliz. la cap. max.
Fir de executie-un prog. aflat in executie se numeste proces.
Un proces poate avea mai multe fire de executie.Un fir partajeaza struct. de date si spatiul de mem. al procesului.Un fir de executie este o succesiune secventiala de instr. care se executa in cadrul uni proces.Firul are si propriile sale struct. de date.Firele de executie fac trecerea de la progr. secventiala la progr. concurenta.Comutarea intre procese necesita salvarea starii procesului si a struct. de date.Comutarea intre firele unui proces este mult mai simpla deoarece trebuie salvate mult mai putine date.Fiecare fir are asignat un ob.ce contine info. despre fir,care este gestionat de managerul de ob. Firul de executie nu are sens decat in cadrul unu sist. de op. multitasking.Dif. dintre un fir de executie si un proces consta in faptul ca un fir de executie nu poate rula independent ci treb. sa lucreze in cadrul unui proces. Proces-set de activit. din program ce nu se pot suprapune.Este det. de o secventa de instr. din progr. care se executa.Un proces se desfasoara in timp,intre generarea si incheierea sa.Este descris de catre un ob. ce este gestionat de managerul de ob.,in gen. vect. de stare al procesului.Un proces este initiat de un alt proces.Termenul de proces este folosit ptr. a desemna ob. activitatii procesorului,in timpul executiei unui program.Se caract. prin: -prelucrarile care se realiz.,det. de secventa de instr. care controleaza procesul -contextul de lucru asupra caruia actioneaza procesul,prin interm. prelucrarilor,si care include resursele alocate procesului. Sectiunea critica-in cazul programarii executiei preceselor concurente trebuie avute in vedere urm. reguli ptr. tratarea sectiunii critice: Regula1-un singur proces trebuie sa poata executa o sectiune critica,la un mom. dat.Orice alt proces care solicita executarea sectiunii critice va primi permisiunea de a o executa numai dupa incheierea executiei ei de catre procesul in curs.Chiar daca durata executiei sectiunii critice este necunoscuta aprioric niciun proces nu trebuie sa astepte nedef. de mult ptr. a intra in sect. critica. Regula2-oprirea unui proces,prin dezactivare sau blocare,poate avea loc numai in afara sectiunii critice,adica sect. critica este neintreruptibila.