1 Mekanizmat e komunikimit që përdorin sinkronizimin implicit janë Shared Memory dhe
Message Queues. Ky mekanizëm ndan një pjesë të memories dhe proceset mund të lexojnë dhe shkruajnë pa nevojën e thirrjeve të sistemit System Calls.Sinkronizimi ndodhe kur te te behen send te dhenat, me pas ne recive leshohen 4.2 Dallimet mes Pipes dhe MessageQueues jane: 1.Pipes jane unidirectional ndersa MQ jo. 2.Te dhenat nga Pipes mund te lexohen edhe vetem disa bytes te caktuara, ndersa te dhenat ne MQ lexohen ashtu siq jane te shkruara. 3. Pipes per te funksionuar, duhet qe edhe lexuesi edhe shkruesi te jete te hapura, MQ nuk ka nevoje. Pipes perdoren per kommunikim në mes të procesve „farefisnore“(procese qe jane brenda nje kompjuteri) ndersa Named Pipes pervec kesaj perdoret edhe per komunikim ne mes proceseve “jo farefisnore” (ne kompjutera te ndryshem ne rrjet). 4.3 Malloc eshte nje teknike qe perdoret per alokim dinamik te memories. Perdoret ne rastet kur shfrytezuesi nuk e din sa memorie nevoijtet per ate proces. Duhet pasur parasysh numrin e bajteve qe alokojne(si dhe mos te harrojme ta lirojme memorien pastaj). Memory leaks ndodh kur programuesit krijojnë një memorie në heap dhe harrojnë ta fshijnë atë. Pasojat e memory leaks janë se zvogëlon performancën e kompjuterit duke zvogëluar sasinë e memories së disponueshme. 4.4 Shared Memory ndahet me qëllim të komunikimit ndërmjet proceseve. Dhe problemet kryesore janë se dy procese mund të shkruajnë/lexojne në të njëjtin vend dhe të dhënat nuk do të jenë të besueshme, dhe kjo mund të shkaktojë humbje të të dhënave. Shared Memory përdor Mutex për sinkronizim. Shared Memory mbështet sinkronizimin implicit. 4.5 Deadlock eshte nje gjendje kur nje proces ose nje thread pret per nje resurs qe eshte duke u mbajtur nga nje proces/thread tjeter e i cili gjithashtu eshte duke pritur nje resurs qe eshte duke e mbajtur nga nje pale e trete. 4.5 Critical Section një proces gjendet në seksioni kritik kur ai i qaset resourseve (shenimeve) të perbashketa (shared memory). 4.5 Mutual Exclusion pengon qasjen e njekohësishme në resurse sepse në të njejten kohe vetem një proces guxon të gjindet në seksionin kritik dhe qasja në seksionin kritik duhet te behet në menyre të renditur. 1. Simoli & quhet operatori i adresës dhe përdorët për ta lexuar adresën memorike të një variable. Simboli * quhet operatori i dereferencimit dhe përdorët për ta deklaruar një variabël pointerike. Operatori i dereferencimit (*) përdorët për t’ju qasur vlerës së adresës kur tregon variabla pointerike. 2. Dallimi mes variablave pointerike dhe varialave te zakonshme eshte se variablat pointerike deklarohen njësoi si variablat normale, por para emrit vendoset operatori * dhe ruajnë si «vlerë» të tyre adresa memorike. Madhësia e variablave pointerike është e barabartë me numrin e bitave të address bus-it. Madhesia e variables pointerike e ruajtur ne makine 64-bit eshte 8 3. Sistem operativ preemptive eshte nje teknike e punes se procesorit ku procesori e ndane kohen ne intervale per secilin proces te caktuar. Kjo teknike perdoret kur procesi kalon nga running state ne ready state ose nga waiting state ne ready state. 4. Gjendjet e procesit ne sistemin e 5 niveleve jane: 1.New - eshte gjendja ku sistemi operativ e ka krijuar procesin. 2.Ready - procesi është i gatshem për ekzekutim dhe pret për tu ekzekutuar nga CPU. 3.Running - procesi është në posedim të CPU dhe është në ekzekutim. 4.Blocked - procesi pret për një event (ngjarje) (p.sh. perfundimi i një operacioni I/O) – procesi nuk është në gjendje për tu ekzekutuar. 5.Exit - kjo gjendje mbrihet gjatë terminimit të procesit.Procesi nuk ekzekutohet më tutje. Informatat e procesit ka gjasa të shfrytëzohen prej programeve tjera. Informatat e procesit fshihen atëherë kur ato nuk nevojiten më. 5. fork – perdoret per te krijuar një proces qe e ekzekuton të njejtin program sikurse edhe procesi i cili e ka krijuar ate. Procesi i ri i krijuar eshte procesi Child ndersa procesi i cili ekzekuton fork eshte procesi Parent. Procesi femij dhe prind i kane te njejtat variabla përveq variables pid. pid e dallon procesin prind prej atij femijë. pid i processit femij është 0, ndersa i procesit prind është numer i plote pozitiv jo-zero. Dallimi mes fork dhe wait eshte sepse fork - krijon një proces te ri ndersa wait- pret per perfundimin e procesit femije. 6. Shared memory nuk mund te perdoret pa ndonje mekanizem shtese sepse paraqiten problemet te sinkronizimit dhe te adresimit te memories. Nese ne shared memory nuk perdoren teknika te sinkronizimit te qasjes ne memorien e perbashket rrezikohet konsistenca dhe integriteti i te dhenave qe ruhen aty. Rrjedhimisht shfaqen edhe probleme te tjera perfshire: deadlock, race conditions, degradimi I kohes se qasjes, moskoherenca e te dhenave si shkas i ndryshimit te tyre dhe degaradimit gjate shkruarjes ne te njejtin lokacion memorik njekohesisht nga disa procese. 7. Mutex eshte nje menyre qe mundeson sinkronizimin ne mes te threads, pra ai mundeson “mbrojtjen” e resursit nga threads tjere perderisa eshte duke u perdorur nga nje thread aktual. 8. Free eshte nje funksion qe na ndihmon ta lirojme memorien nga alokimet e meparshme 9. Pipes jane kanale kommunikim në mes të procesve „farefisnore“ 10. Message queue eshte nje forme e komunikimit asinkron ne mes te proceseve qe i ruan mesazhet ne linked list. Eshte bidireksional qe dmth qe te dhenat levizin ne te dy drejtimet. 11. Mekanizmat per komunikim te proceseve perdoren ne menyre qe te mundesohet komunikimi midis dy ose me teper proceseve ne kryerjen e nje taske te caktuar me crast ato duhet te ndajne te dhenat e perbashketa (share). IPC jane: pipes, named pipes (FIFO), message queues, shared memory, sockets dhe semaphores (komunikim dhe sinkronizim) 12. Mekanizmat per sinkronizim: Sinkronizimi qofte eksplicit apo implicit eshte nje norme ose protokoll i cili percakton se si te behet shkembimi i infomacionit ne mes te proceseve komunikuese.-Barriers, -Mutex,-Semaphores,-Spinlock (si busy waiting),-Condition variables, - File locks. Call by value ndodh kur funksioni yne pranon parametra lokal te cileve nuk mund te ju nderroj vleren. Kurse Call by reference ndodh kur funksioni yne pranon parametra te cileve ju nderron vleren..psh parametra ka pointeret.