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

от Уикипедия, свободната енциклопедия

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

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

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

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

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

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

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