Кіріспе

Компьютерлерде ресурстардың жетіспеуі

Компьютерлік ғылымда ресурстардың жетіспеуі – бір процеске жұмысын істеу үшін қажетті ресурстар үнемі берілмейтін, бірдей уақытта орындалатын есептемелерде кездесетін мәселе. Бұл жағдайды жоспарлау немесе өзара қолдану алгоритміндегі қателер тудыруы мүмкін, сонымен қатар ресурстардың жоғалуынан немесе қызметтен бас тарту сияқты шабуылдардан, мысалы, «бұрандалы бомбадан» да туындауы мүмкін. Егер бірдей уақытта орындалатын алгоритмде ресурстардың жетіспеуі мүмкін болмаса, онда ол алгоритм ресурстар жетіспеуінен қорғалған, тоқтатылмайтын немесе шекті айналымды деп аталады. Бұл қасиет – тіршілікке қатысты ұғым және кез келген өзара қолдану алгоритмі үшін қойылатын екі талаптың бірі; екіншісі – дұрықтық. «Шекті айналым» дегеніміз – алгоритмнің кез келген процесі (параллель бөлігі) ортақ ресурсқа қол жеткізуге рұқсат алғанға дейін шекті ретте ғана айналып өтіледі.

Жоспарлау

Аштық әдетте тым қарапайым жоспарлау алгоритмінен туындайды. Мысалы, егер (дұрыс емес құрылған) көп тапсырмалы жүйе әрқашан бірінші екі тапсырманы алмастырып, үшінші тапсырманы іске қоспаса, онда үшінші тапсырма CPU уақытынан аштыққа ұшырайды. Ядроның бір бөлігі болып табылатын жоспарлау алгоритмі ресурстарды тең бөлуге тиіс; яғни, алгоритм ресурстарды осылай бөлуі керек, ешбір процесске қажетті ресурстар үнемі жетіспеуі керек. Көптеген операциялық жүйелердің жоспарлаушылары процесс басымдылығы тұжырымын қолданады. Жоғары басымдылыққа ие А процесі, төмен басымдылыққа ие В процесінен бұрын іске қосылады. Егер жоғары басымдылыққа ие процесс (А процесі) тоқталып, ешқашан бас тартпаса, төмен басымдылыққа ие процесс (В) (кейбір жүйелерде) ешқашан жоспарланбайды – ол аштыққа ұшырайды. Егер тіпті жоғары басымдылыққа ие X процесі болса, және ол В процесінен нәтиже күтсе, онда X процесі жүйедегі ең маңызды процесс болғанымен де аяқталмауы мүмкін. Бұл жағдай басымдылықтың инверсиясы деп аталады. Қазіргі заманғы жоспарлау алгоритмдері әдетте барлық процестерге әрбір маңызды ресурстың (көбінесе CPU уақыты) ең аз мөлшерін алуын қамтамасыз ететін кодты қамтиды, осылайша кез келген процесті аштыққа ұшыратудан сақтайды. Компьютерлік желілерде, әсіресе сымсыз желілерде, жоспарлау алгоритмдері жоспарлау аштығынан зардап шегуі мүмкін. Мысалы, максималды өнімділік жоспарлау. Аштық әдетте өлі тұрудан (deadlock) туындайды, себебі ол процесс тоқтауына себеп болады. Екі немесе одан көп процесс, егер олардың әрқайсысы бір жиынтықтағы басқа бағдарламамен иеленген ресурсты күтіп, ештеңе жасамаса, өлі тұрып қалады. Ал, процесс аштықта болады, егер ол басқа процестерге үнемі беріліп жатқан ресурсты күтіп отырса. Аштықтан құтылу, өлі тұрудың болмауынан күшті кепілдік: екі процесс арасынан біреуін маңызды бөлімге кіргізуді таңдауға тиіс және біреуін кездейсоқ таңдайтын өзара құлыптау алгоритмі өлі тұрудан құтылуға мүмкіндік береді, бірақ аштықтан емес. Аштықты шешудің бір жолы – қартаю (aging) техникасын қолданатын басымдық кезегі бар жоспарлау алгоритмін пайдалану. Қартаю – жүйеде ұзақ уақыт күтіп тұрған процестердің басымдылығын біртіндеп арттыру әдісі.