Referat, comentariu, eseu, proiect, lucrare bacalaureat, liceu si facultate
Top referateAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 

Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
SERVICII DE SINCRONIZARE
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 
j6n24nl

GENERALITATI DESPRE SERVICIILE DE SINCRONIZARE
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Serviciile de sincronizare ofera programelor de aplicatie posibilitatea coordonarii accesului la fisierele din retea si la alte resurse.

Fisiere antet necesare:

# include <nit.h>
# include <niterror.h>

ALOCAREA SI ELIBERAREA RESURSELOR
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Aplicatiile pot sa aloce fisiere intregi, inregistrari fizice
(zone contigue dintr-un fisier), respectiv resurse logice oarecare. Sint puse la dispozitia utilizatorului 4 feluri de functii:
1) Log... Inscrierea resursei intr-o tabela de resurse alocabile. Fiecare statie de lucru are aso ciata o astfel de tabela de resurse alocabile.
2) Lock... Aloca resursele inscrise in tabela de resurse alocabile.
3) Release... Elibereaza resursele alocate anterior.
4) Clear... Elibereaza resursele alocate anterior, si in plus le elimina din tabela de resurse alocabile.

La apelul functiilor de alocare, programul de aplicatie poate specifica un interval maxim de timp in care sa se efectueze alocarea (in unitati de aproximativ 1/18 sec). Apelul functiei de alocare esueaza numai daca resursele solicitate nu au putut fi alocate in acel interval de timp. Pentru ca aceasta facilitate sa poata fi folosita, trebuie ales modul de alocare 1.

Resursele logice sint simple nume. Alocarea unei resurse logice nu implica decit alocarea numelui respectiv, nu si a resurselor fizice desemnate de acest nume (care nici nu sint cunoscute de sistem). Un program concurent nepoliticos poate intotdeauna ignora faptul ca resursa logica a fost alocata altcuiva, si poate deci produce necazuri.

Stabilirea modului de alocare
IIIIIIIIIIIIIIIIIIIIIIIIIIIII

Sint doua moduri de alocare posibile: modul 0, compatibil cu toate versiunile Netware, si modul 1, valabil de la versiunea
4.61 in sus, si in Advanced Netware. Modul 1 permite specificarea unui interval maxim de timp admis pentru alocarea unei resurse
(sau a unei multimi de resurse). Modul de alocare implicit este
0. Daca un program stabileste modul 1 de alocare, acesta ramine in vigoare pina la terminarea programului respectiv. Se recomanda folosirea modului 1 daca acest lucru este posibil.




int GetLockMode (void)
IIIIIIIIIII
Intoarce modul de alocare curent (modul 0 - compatibil, sau modul 1 - extins).

void SetLockMode (BYTE lockMode)
IIIIIIIIIII
Stabileste modul de alocare (0 - compatibil sau 1 - extins).
Odata stabilit modul 1, acesta ramine in vigoare pina la apelul functiei EndOfJob sau pina la terminarea programului.

Inregistrarea resurselor alocabile
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Toate resursele care pot fi alocate unei aplicatii la un moment dat sint inregistrate intr-o tabela de resurse alocabile, tabela care este specifica statiei de lucru respective. O resursa poate fi intii inregistrata in tabela, urmind ca toate resursele de acelasi fel sa fie alocate deodata, sau inregistrarea resursei poate coincide cu alocarea ei.

int LogFile (char * fileName,
IIIIIII BYTE lockDirective,
WORD timeoutLimit)

fileName numele fisierului care trebuie inregistrat; poate fi un nume complet (VOL:ROOT\DIR\...\NAME.TYP) sau un nume relativ la discul implicit. Lungimea maxima este de 255 caractere, inclusiv NULul terminator. lockDirective 0x00 inregistreaza fisierul
0x01 inregistreaza si aloca
0x03 inregistreaza si aloca in regim partajat timeoutLimit interval maxim de timp in care se poate face alocarea (in unitati de 1/18 sec).

Rezultat:
0x00 SUCCESSFUL
0x96 SERVER_OUT_OF_MEMORY
0xFE TIMEOUT_FAILURE
0xFF FAILURE

int LogLogicalRecord (char * logicalRecordName,
IIIIIIIIIIIIIIII BYTE lockDirective,
WORD timeoutLimit)

logicalRecordName numele resursei logice (max. 100 caractere, inclusiv NULul terminator). lockDirective 0x00 inregistreaza resursa logica
0x01 inregistreaza si aloca
0x03 inregistreaza si aloca in regim partajat timeoutLimit interval maxim de timp in care se poate face alocarea (in unitati de 1/18 sec).

Rezultat:
0x00 SUCCESSFUL
0x96 SERVER_OUT_OF_MEMORY
0xFE TIMEOUT_FAILURE
0xFF FAILURE

int LogPhysicalRecord (int fileHandle,
IIIIIIIIIIIIIIIII long recordStart, long recordLength,
BYTE lockDirective,
WORD timeoutLimit)

fileHandle numarul de fisier intors de apelul functiilor DOS
CreateFileHandle (0x3C) sau OpenFile (0x3D) recordStart pozitia in fisier a primului octet din inregistrare recordLength lungimea inregistrarii (octeti) lockDirective 0x00 inregistreaza resursa logica
0x01 inregistreaza si aloca
0x03 inregistreaza si aloca in regim partajat timeoutLimit interval maxim de timp in care se poate face alocarea (in unitati de 1/18 sec).

Rezultat:
0x00 SUCCESSFUL
0x96 SERVER_OUT_OF_MEMORY
0xFE TIMEOUT_FAILURE
0xFF FAILURE

Alocarea resurselor inregistrate
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

int LockFileSet (WORD timeoutLimit) int LockLogicalRecordSet (WORD timeoutLimit) int LockPhysicalRecordSet (WORD timeoutLimit)
IIIIIIIIIIIIIIIIIIIII timeoutLimit interval maxim de timp in care se poate face alocarea (in unitati de 1/18 sec).

Alocarea esueaza daca cel putin una dintre resursele solicitate este deja alocata exclusiv unei alte aplicatii.

Rezultat:
0x00 SUCCESSFUL
0x96 SERVER_OUT_OF_MEMORY
0xFE TIMEOUT_FAILURE
0xFF FAILURE

Eliberarea resurselor alocate
IIIIIIIIIIIIIIIIIIIIIIIIIIIII

Se poate elibera fiecare resursa alocata in parte, sau toate resursele de acelasi fel deodata. Functiile care elibereaza toate resursele de un anume fel au numele terminat cu ...Set. Resursele eliberate de aceste functii nu sint eliminate din tabela de resurse alocabile a statiei de lucru.

int ReleaseFile (char * fileName)
IIIIIIIIIII
Rezultat:
0x00 SUCCESSFUL
0xFF NO_FILES_FOUND

int ReleaseLogicalRecord (char * logicalRecordName)
IIIIIIIIIIIIIIIIIIII
Rezultat:
0x00 SUCCESSFUL
0xFF NO_RECORD_FOUND

int ReleasePhysicalRecord (int fileHandle,
IIIIIIIIIIIIIIIIIIIII long recordStart, long recordLength)
Rezultat:
0x00 SUCCESSFUL
0xFF NO_RECORD_FOUND

void ReleaseFileSet (void) void ReleaseLogicalRecordSet (void) void ReleasePhysicalRecordSet (void)
IIIIIIIIIIIIIIIIIIIIIIII

Eliminarea resurselor din tabela de resurse alocabile
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

Functiile urmatoare elimina o resursa (sau toate resursele de acelasi fel) din tabela de resurse alocabile unei statii de lucru, nu inainte de a le elibera. Fisierele care in momentul eliminarii din tabela de alocare erau deschise sint automat inchise.

int ClearFile (char * fileName)
IIIIIIIII
Rezultat:
0x00 SUCCESSFUL
0xFF NO_FILES_FOUND

int ClearLogicalRecord (char * logicalRecordName)
IIIIIIIIIIIIIIIIII
Rezultat:
0x00 SUCCESSFUL
0xFF NO_RECORD_FOUND

int ClearPhysicalRecord (int fileHandle,
IIIIIIIIIIIIIIIIIII long recordStart, long recordLength)
Rezultat:
0x00 SUCCESSFUL
0xFF NO_RECORD_FOUND

void ClearFileSet (void) void ClearLogicalRecordSet (void) void ClearPhysicalRecordSet (void)
IIIIIIIIIIIIIIIIIIIIII

SEMAFOARE
IIIIIIIII

Sistemul Netware pune la dispozitia utilizatorilor posibilitatea de a defini si folosi semafoare; acestea pot fi folosite pentru a implementa cele mai diferite protocoale de sincronizare.
Fiecarui semafor ii sint asociate doua contoare: un contor de procese care au 'deschis' semaforul (care au acces la semafor), si un contor care este decrementat la fiecare apel
WaitOnSemaphore si incrementat la SignalSemaphore (contorul tipic pentru semafoare).

Etapele lucrului cu un semafor:
1) deschiderea semaforului (Open)
2) exploatarea semaforului (Wait si Signal)
3) inchiderea semaforului (Close).

int OpenSemaphore (char * semaphoreName,
IIIIIIIIIIIII int initialValue, long * semaphoreHandle,
WORD * openCount)

semaphoreName numele semaforului (max. 127 de caractere, inclusiv NULul terminator) initialValue valoarea initiala a semaforului; acest parametru nu se ia in considerare decit daca semaforul nu exista si este creat. Sint permise valori intre 1 si 127.
* semaphoreHandle primeste ca valoare un descriptor de semafor, care va fi utilizat in celelalte functii
* openCount primeste numarul de procese care au 'deschis' acest semafor.

Rezultat:
0x00 SUCCESSFUL
0xFE INVALID_SEMAPHORE_NAME_LENGTH
0xFF INVALID_SEMAPHORE_INITIAL_VALUE

int ExamineSemaphore (long semaphoreHandle,
IIIIIIIIIIIIIIII int * semaphoreValue,
WORD * openCount)

Examineaza un semafor deschis; depune in semaphoreValue, respectiv openCount, valoarea contorului de semafor, respectiv numarul de procese care au deschis semaforul.

Rezultat:
0x00 SUCCESSFUL
0xFF INVALID_SEMAPHORE_HANDLE

int WaitOnSemaphore (long semaphoreHandle,
IIIIIIIIIIIIIII WORD timeoutLimit)

Incearca sa decrementeze contorul asociat unui semafor; daca dupa decrementare acesta este mai mare sau egal cu zero, atunci procesul care a apelat Wait continua. In caz contrar, procesul este depus intr-o coada de asteptare asociata semaforului; coada avanseaza la fiecare apel Signal pentru acelasi semafor. Daca procesul petrece la coada mai mult de timeoutLimit unitati de
1/18 sec, atunci el este scos din coada, si functia intoarce un cod de eroare.

Rezultat:
0x00 SUCCESSFUL
0xFE TIMEOUT_FAILURE
0xFF INVALID_SEMAPHORE_HANDLE

int SignalSemaphore (long semaphoreHandle)
IIIIIIIIIIIIIII

Incrementeaza contorul asociat semaforului; daca in coada de asteptare se afla vreun proces, primul proces din coada este deblocat.

Rezultat:
0x00 SUCCESSFUL
0x01 SEMAPHORE_OVERFLOW (contorul a depasit 127)
0xFF INVALID_SEMAPHORE_HANDLE

int CloseSemaphore (long semaphoreHandle)
IIIIIIIIIIIIII

Inchide un semafor; pentru ca programul sa recistige accesul la acel semafor, trebuie sa apeleze iarasi la OpenSemaphore. Daca acest proces era ultimul care folosea semaforul, atunci semaforul este distrus.

Rezultat:
0x00 SUCCESSFUL
0xFF INVALID_SEMAPHORE_HANDLE


Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui referat, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza referatul:
In prezent referatul este notat cu: ? (media unui numar de ? de note primite).

2345678910

 
Copyright© 2005 - 2024 | Trimite referat | Harta site | Adauga in favorite
Colt dreapta