Principala diferență dintre blocaj și înfometare este relația cauză-efect dintre acestea; este un impas care provoacă foamete. O altă diferență interesantă între blocaj și înfometare este faptul că blocajul este o problemă, în timp ce foametea poate uneori să ajute să ieșiți dintr-un impas. În lumea calculatoarelor, atunci când se scrie un program de calculator, vor exista mai multe procese / fire care se vor executa simultan unul după altul pentru a îndeplini serviciul necesar programului. Prin urmare, pentru a avea un sistem echitabil, programatorul ar trebui să se asigure că toate procesele / firele vor primi sau vor avea acces suficient la resursele de care au nevoie. Dacă nu, va exista un impas și va duce mai târziu la o foame. În general, un sistem echitabil nu conține blocări sau înfometări. Blocajele și foametele vor avea loc în special atunci când multe fire sunt în competiție pentru resurse limitate.
Un blocaj este o condiție care apare atunci când două fire sau procese se așteaptă unul pe altul pentru a finaliza sarcina. Ei vor închide, dar nu se vor opri sau nu vor termina sarcina. În știința calculatoarelor, se pot vedea impasuri peste tot. Într-o bază de date de tranzacții, când două procese fiecare în cadrul propriei tranzacții actualizează aceleași două rânduri de informații, dar în ordine inversă, va cauza un blocaj. În programarea concurentă, poate apărea un impas atunci când două acțiuni concurente se vor aștepta unul pe altul pentru a continua. În sistemele de telecomunicații, se poate produce un impas datorită pierderii sau corupției semnalelor.
În prezent, blocajul este una dintre principalele probleme ale sistemelor de multiprocesare și calculului paralel. Ca o soluție, un sistem de blocare numit proces de sincronizare este implementat atât pentru software, cât și pentru hardware.
Din dicționarul științelor medicale, înfometarea este rezultatul unei lipse grave sau totale a nutrienților care sunt necesare pentru menținerea vieții. În mod similar, în știința informaticii, foametea este o problemă întâlnită când mai multe fire sau procese așteaptă aceeași resursă, care se numește blocare.
Pentru a ieși dintr-un impas, unul dintre procese sau fire ar trebui să renunțe sau să revină, astfel încât celălalt fir sau proces să poată utiliza resursa. Dacă acest lucru se întâmplă în mod continuu și același proces sau același fir trebuie să renunțe sau să se întoarcă de fiecare dată, permițând altor procese sau fire să utilizeze resursa, atunci procesul sau firul selectat, care s-au întors, vor suferi o situație numită înfometare. Prin urmare, pentru a ieși dintr-un impas, înfometarea este una dintre soluții. De aceea, uneori este numit foame un fel de viata. Când există multe procese sau fire cu prioritate ridicată, un proces sau un fir de prioritate mai joasă va pieri întotdeauna într-un blocaj.
Pot fi multe foamete, cum ar fi înfometând resursele și decedat de CPU. Există multe exemple comune despre foamete. Acestea sunt problema cititorilor-scriitori și problema filosofilor de mese, care este mai faimoasă. Există cinci filozofi tăcuți care stau la o masă rotundă cu boluri de spaghete. Furcile sunt plasate între fiecare pereche de filosofi adiacenți. Fiecare filozof trebuie să gândească și să mănânce alternativ. Cu toate acestea, un filozof poate manca doar spaghete atunci cand are ambele furci stanga si dreapta.
"Filozofii meselor"
• În blocaj, cele două fire sau procese se vor aștepta una pe alta și ambele nu vor continua.
• În condiții de foame, atunci când două sau mai multe fire sau procese așteaptă aceeași resursă, unul se va întoarce și îi va permite celorlalți să utilizeze resursa prima dată, iar după aceea firul sau procesul înfometat va încerca din nou. Prin urmare, toate firele sau procesele vor continua oricum.
• Într-un impas, atât firele / procesele cu prioritate ridicată, cât și firele / procesele cu prioritate scăzută se vor aștepta unul pe celălalt infinit. Nu se termină niciodată.
• Dar, într-o stare de înfometare, cele cu prioritate scăzută vor aștepta sau se vor răsturna, dar vor continua cele cu prioritate înaltă.
• Un blocaj este o așteptare circulară.
• Înfometarea este un fel de viață și uneori ajută să ieșiți dintr-un impas.
• Un blocaj cauzează foamete, dar foametea nu cauzează un blocaj.
• Un blocaj va avea loc din cauza excluziunii reciproce, a țineți și așteptați, fără preemțiune sau circulară de așteptare.
• Înmormântarea apare din cauza lipsei de resurse, a gestionării necontrolate a resurselor și a priorităților proceselor.
Rezumat:
Deadlock și starvation sunt unele dintre problemele care apar datorită curse de date și condițiile de rasă care apar în timpul programării, precum și implementarea de hardware. Într-un impas, două fire vor aștepta infinit unii pe ceilalți fără a se executa în timp ce, într-o stare de înfometare, un fir va reveni și lasă celălalt fir să utilizeze resursele. Un blocaj va provoca foametea, în timp ce foametea va ajuta un fir să iasă dintr-un impas.
Imagini Amabilitate: