Documente Academic
Documente Profesional
Documente Cultură
7. Sisteme tranzacţionale
Caracteristicile principale:
• sistemul gestionează un set de informaţii sau baze de date, care pot atinge volume
importante de informaţie;
• asupra acestor informaţii pot fi executate un anumit număr de operaţii predefinite sau
tranzacţii, adesea interactive;
• sistemul este dotat cu un mare număr de puncte de acces şi un mare număr de tranzacţii se
pot derula simultan. Caracteristicile obligatorii ale unui astfel de sistem tranzacţional sunt
disponibilitatea şi fiabilitatea; pentru unele sisteme poate fi importantă şi toleranţa la defecţiuni.
O caracteristică importantă ale sistemelor tranzacţionale este multitudinea activităţilor paralele,
iar în multe cazuri şi repartizarea geografică a componentelor.
Abordare funcţională
Abordare funcţională-Pentru un utilizator obişnuit, convins că un calculator este doar un
instrument care îl ajută în soluţionarea unor probleme din domeniul său de activitate, noţiunile,
cum ar fi administrarea memoriei cu paginaţie sau driverele dispozitivelor, nu semnifică prea
multe. Destinaţia principală a unui sistem de operare pentru această categorie de utilizatori este
punerea la dispoziţie a unui set de programe care l-ar ajuta în formularea şi soluţionare
problemelor concrete ce ţin de domeniul său de activitate.
15. Multiprogramarea
Multiprogramarea este un termen utilizat în cazul unui sistem în care pot exista simultan câteva
procese în stare de execuţie. Un proces se consideră în stare de execuţie, dacă calculele au
început, dar la momentul considerat nu au fost terminate sau întrerupte. Multiprogramarea
permite menţinerea unităţii centrale în stare activă pentru perioada încărcării programelor sau
operaţiilor de intrare-ieşire. Acest mod de funcţionare este adaptat tratării pe loturi pe un
calculator, care nu dispune de un mecanism de reamplasare dinamică.
top
q
top
baz
a
p
p
baz
a Mediul
Stivă procedurii
Stivă
Înainte de apelarea
procedurii q de către După apelarea
procedura p procedurii q
Fig.2.1. Stiva de execuţie
26. Întreruperi
Întreruperea este un mecanism care impune procesorul să observe anumite evenimente. Pot
exista mecanisme care permit să nu se acorde atenţie unei anume întreruperi – întrerupere
mascată. Resursele hardware de întrerupere permit sistemului de operare să coordoneze
operaţiile simultane; pot fi utilizate şi pentru a schimba ordinea de execuţie a programelor.
(2) p q p q p
q
(3) p q
Fig. 3.2. Executarea unei
schema 3 are loc un paralelism real, iar în schema 2 – un pseudo-paralelism. Paralelismul real
necesită două procesoare distincte. Două observaţii importante sunt necesare:
Diferenţa acestor scheme de execuţie este legată de alegerea nivelului de observare. Astfel, la
nivelul de bază, diferenţa dintre schemele 1 şi 2 dispare: ambele sunt secvenţiale.
41.Sincronizarea proceselor
Exprimarea şi implementarea restricţiilor de succesiune
Introducem două exemple, care ne vor ajuta la formularea restricţiilor logice impuse de
cooperare.
Exemplul 3.4. Procesul p transmite informaţii procesului q scriind într-un segment a,
consultat de q (se presupune că această transmitere are loc o singură dată). Este necesar să se
verifice condiţia:
sfârşit(scriere(a)) < început(citire(a))
Această relaţie exprimă restricţia, că citirea lui a de către q nu poate începe înainte de
terminarea scrierii lui a de către p. ◄
Exemplul 3.5. Rendez-vous. Fie N procese p1,..., pN. Definim în programul fiecărui
proces un punct, numit rendez-vous, pe care procesul nu-l poate trece înainte ca alte procese
să ajungă la punctul lor propriu de rendez-vous. Dacă programul procesului pi are forma
<debut_i>;
<rendez-vous>
<continuare_i>;
atunci restricţiile de sincronizare se vor exprima după cum urmează:
63. Evenimentele
Obiectele-evenimente sunt utilizate pentru a informa firele, care sunt în aşteptare, despre
producerea unui eveniment. În Windows există două tipuri de evenimente – cu resetare
manuală şi automată. Resetarea manuală se execută cu funcţia ResetEvent. Aceste
evenimente sunt folosite pentru informarea mai multor fire, iar evenimentele cu resetare
automată sunt utilizate pentru informarea unui anumit fir, celelalte rămânând în aşteptare.
Funcţia CreateEvent crează un obiect-eveniment, funcţia SetEvent setează evenimentul în
starea set, iar funcţia ResetEvent resetează evenimentul. Funcţia PulseEvent setează
evenimentul, iar după semnalizarea firelor, care erau în aşteptare
resetează obiectul
64. Semafoarele
Un obiect-semafor este în ultimă instanţă un mutex cu contor. Acest obiect permite să fie
„ocupat” de un număr anume de fire, după care „ocuparea” va fi posibilă numai dacă unul din
fire va „elibera” semaforul. Semafoarele sunt utilizate pentru a limita numărul de fire, care
lucrează simultan cu resursa.
void main()
{
DWORD res;
HANDLE mutex = CreateMutex(NULL, FALSE, "NUME_APLICATIE-
MUTEX01");
cout<<"Încerc să ocup obiectul...\n"; cout.flush();
res = WaitForSingleObject(mutex,20000);
if (res == WAIT_OBJECT_0)
{
cout<<"L-am prins! Aşteptare 10 secunde...\n"; cout.flush();
Sleep(10000);
cout<<"Acum eliberăm obiectul\n"; cout.flush();
ReleaseMutex(mutex);
}
CloseHandle(mutex);
}