Компьютерде ресурстардың жетіспеуі – процестердің жұмыс істеуі үшін қажетті ресурстардан ұзақ уақытқа дейін айырылуы. Себептері, шешімдері мен алдын алу жолдары.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Компьютерлерде ресурстардың жетіспеуі
Resource shortage in computers
Компьютерлік ғылымда ресурстардың жетіспеуі – бір процеске жұмысын істеу үшін қажетті ресурстар үнемі берілмейтін, бірдей уақытта орындалатын есептемелерде кездесетін мәселе. Бұл жағдайды жоспарлау немесе өзара қолдану алгоритміндегі қателер тудыруы мүмкін, сонымен қатар ресурстардың жоғалуынан немесе қызметтен бас тарту сияқты шабуылдардан, мысалы, «бұрандалы бомбадан» да туындауы мүмкін. Егер бірдей уақытта орындалатын алгоритмде ресурстардың жетіспеуі мүмкін болмаса, онда ол алгоритм ресурстар жетіспеуінен қорғалған, тоқтатылмайтын немесе шекті айналымды деп аталады. Бұл қасиет – тіршілікке қатысты ұғым және кез келген өзара қолдану алгоритмі үшін қойылатын екі талаптың бірі; екіншісі – дұрықтық. «Шекті айналым» дегеніміз – алгоритмнің кез келген процесі (параллель бөлігі) ортақ ресурсқа қол жеткізуге рұқсат алғанға дейін шекті ретте ғана айналып өтіледі.
In computer science, resource starvation is a problem encountered in concurrent computing where a process is perpetually denied necessary resources to process its work. Starvation may be caused by errors in a scheduling or mutual exclusion algorithm, but can also be caused by resource leaks, and can be intentionally caused via a denial of service attack such as a fork bomb. When starvation is impossible in a concurrent algorithm, the algorithm is called starvation free, lockout freed or said to have finite bypass. This property is an instance of liveness, and is one of the two requirements for any mutual exclusion algorithm; the other being correctness. The name "finite bypass" means that any process (concurrent part) of the algorithm is bypassed at most a finite number times before being allowed access to the shared resource.
Жоспарлау
Аштық әдетте тым қарапайым жоспарлау алгоритмінен туындайды. Мысалы, егер (дұрыс емес құрылған) көп тапсырмалы жүйе әрқашан бірінші екі тапсырманы алмастырып, үшінші тапсырманы іске қоспаса, онда үшінші тапсырма CPU уақытынан аштыққа ұшырайды. Ядроның бір бөлігі болып табылатын жоспарлау алгоритмі ресурстарды тең бөлуге тиіс; яғни, алгоритм ресурстарды осылай бөлуі керек, ешбір процесске қажетті ресурстар үнемі жетіспеуі керек. Көптеген операциялық жүйелердің жоспарлаушылары процесс басымдылығы тұжырымын қолданады. Жоғары басымдылыққа ие А процесі, төмен басымдылыққа ие В процесінен бұрын іске қосылады. Егер жоғары басымдылыққа ие процесс (А процесі) тоқталып, ешқашан бас тартпаса, төмен басымдылыққа ие процесс (В) (кейбір жүйелерде) ешқашан жоспарланбайды – ол аштыққа ұшырайды. Егер тіпті жоғары басымдылыққа ие X процесі болса, және ол В процесінен нәтиже күтсе, онда X процесі жүйедегі ең маңызды процесс болғанымен де аяқталмауы мүмкін. Бұл жағдай басымдылықтың инверсиясы деп аталады. Қазіргі заманғы жоспарлау алгоритмдері әдетте барлық процестерге әрбір маңызды ресурстың (көбінесе CPU уақыты) ең аз мөлшерін алуын қамтамасыз ететін кодты қамтиды, осылайша кез келген процесті аштыққа ұшыратудан сақтайды. Компьютерлік желілерде, әсіресе сымсыз желілерде, жоспарлау алгоритмдері жоспарлау аштығынан зардап шегуі мүмкін. Мысалы, максималды өнімділік жоспарлау. Аштық әдетте өлі тұрудан (deadlock) туындайды, себебі ол процесс тоқтауына себеп болады. Екі немесе одан көп процесс, егер олардың әрқайсысы бір жиынтықтағы басқа бағдарламамен иеленген ресурсты күтіп, ештеңе жасамаса, өлі тұрып қалады. Ал, процесс аштықта болады, егер ол басқа процестерге үнемі беріліп жатқан ресурсты күтіп отырса. Аштықтан құтылу, өлі тұрудың болмауынан күшті кепілдік: екі процесс арасынан біреуін маңызды бөлімге кіргізуді таңдауға тиіс және біреуін кездейсоқ таңдайтын өзара құлыптау алгоритмі өлі тұрудан құтылуға мүмкіндік береді, бірақ аштықтан емес. Аштықты шешудің бір жолы – қартаю (aging) техникасын қолданатын басымдық кезегі бар жоспарлау алгоритмін пайдалану. Қартаю – жүйеде ұзақ уақыт күтіп тұрған процестердің басымдылығын біртіндеп арттыру әдісі.
Starvation is usually caused by an overly simplistic scheduling algorithm. For example, if a (poorly designed) multi tasking system always switches between the first two tasks while a third never gets to run, then the third task is being starved of CPU time. The scheduling algorithm, which is part of the kernel, is supposed to allocate resources equitably; that is, the algorithm should allocate resources so that no process perpetually lacks necessary resources. Many operating system schedulers employ the concept of process priority. A high priority process A will run before a low priority process B. If the high priority process (process A) blocks and never yields, the low priority process (B) will (in some systems) never be scheduled—it will experience starvation. If there is an even higher priority process X, which is dependent on a result from process B, then process X might never finish, even though it is the most important process in the system. This condition is called a priority inversion. Modern scheduling algorithms normally contain code to guarantee that all processes will receive a minimum amount of each important resource (most often CPU time) in order to prevent any process from being subjected to starvation. In computer networks, especially wireless networks, scheduling algorithms may suffer from scheduling starvation. An example is maximum throughput scheduling. Starvation is normally caused by deadlock in that it causes a process to freeze. Two or more processes become deadlocked when each of them is doing nothing while waiting for a resource occupied by another program in the same set. On the other hand, a process is in starvation when it is waiting for a resource that is continuously given to other processes. Starvation freedom is a stronger guarantee than the absence of deadlock: a mutual exclusion algorithm that must choose to allow one of two processes into a critical section and picks one arbitrarily is deadlock free, but not starvation free. A possible solution to starvation is to use a scheduling algorithm with priority queue that also uses the aging technique. Aging is a technique of gradually increasing the priority of processes that wait in the system for a long time.