Ресурсен глад (компютърни науки)

B компютърните науки един от проблемите при многозадачните системи е ресурсният глад (на английски: starvation). Този проблем се появява когато на процес не му бъде доставен достъп до нужните ресурси, без които този процес никога няма да може да завърши своята работа.[1]

Обикновено гладът е причинен от прилагането на твърде опростен алгоритъм за съставяне на разписания по които процесите се изпълняват. Този алгоритъм, който е част от ядрото (kernel), би трябвало да предоставя еднакво ресурси за всеки един от процесите, тъй че нито един от процесите в разписанието или разписанията да не остава без нужните ресурси. Например ако многозадачна система, която не е добре построена, винаги сменя и допуска само първите два процеса да се изпълняват и има трети, който чака и никога не тръгва, то третият процес е оставен да гладува тъй като не му е предоставено CPU време.

В много от операционните системи за разписания е заложена концепцията за приоритизирането на процесите. Високо-приоритетен процес А се изпълнява преди ниско-приоритетния процес Б. Ако високо-приоритетния (процес А) не бъде блокиран никога, то ниско-приоритетния (процес Б) никога няма да тръгне. Ако се случи така че най-високоприоритетния процес Х е зависим от резултата произведен от процес Б, дори и да е най-важният процес в системата той също няма да завърши никога. Това състояние се нарича приоритетна инверсия.

Модерните алгоритми за разписания обикновено съдържат код който гарантира че всеки процес в системата ще получи поне минимално количество от всеки от всеки необходим ресурс, който най-често е CPUто, така че всеки процес да бъде предпазен от глад. В компютърните мрежи и по специално безжичните мрежи, може да се случи дори алгоритмите за разписания да страдат от гладуване.

Погледнато от друга страна, в компютърните науки глад и мъртва хватка(deadlock) са много сходни явления тъй като и двете водят до застиване на процеса. Два или повече процеса изпадат в мъртва хватка когато всеки един от тях не прави нищо докато чака за ресурси заети от друга програма в същия сет. От друга страна, един процес гладува, когато чака, за ресурс който постоянно бива предоставен на други процеси.

Източници редактиране

  1. Tanenbaum, Andrew. Modern Operating Systems. Prentice Hall, 2001. ISBN 0-13-092641-8. с. 184 – 185.