Кіріспе

Компьютерлік ресурстарды қауіпсіз бөлісу логикасы

Лампорттың нан пісіру алгоритмі – компьютерлік ғалым Лесли Лампорттың бір мезгілде орындалатын жүйелердің формалды дұрыстығын терең зерттеуінің бір бөлігі ретінде жасалған компьютерлік алгоритм. Ол өзара қол жеткізуді (mutual exclusion) пайдалану арқылы бірнеше жіптер арасында ортақ ресурстарды пайдалану қауіпсіздігін арттыруға бағытталған. Компьютер ғылымында бірнеше жіптердің бір уақытта бірдей ресурстарға қол жеткізуі жиі кездеседі. Егер екі немесе одан көп жіп бірдей жад орнына жазуға тырысса немесе бір жіп екіншісі жад орнына жазуды аяқтамас бұрын оқыса, деректердің бұзылуы мүмкін. Лампорттың нан пісіру алгоритмі – деректердің бұзылу қаупін болдырмау үшін кодтың маңызды бөлімдеріне бір мезгілде кіруді қамтамасыз ететін көптеген өзара қол жеткізу алгоритмдерінің бірі.

Салыстырмалылық

Лампорттың ойынша, нан пісіру орталығының кіреберісінде нөмір тағайындау машинасы орнатылған, осылайша әрбір клиентке бірегей нөмір беріледі. Клиенттер орталыққа келген сайын нөмірлер бірге өседі. Жалпы сандық көрсеткіш қазір қызмет көрсетіліп жатқан клиенттің нөмірін көрсетеді. Қалған барлық клиенттер нан пісіруші ағымдағы клиентке қызмет көрсетуді аяқтап, келесі нөмір көрсетілгенше кезекте күтуі керек. Клиент сатып алуын аяқтап, нөмірін қайтарғаннан кейін, кассир келесі клиентке қызмет көрсету үшін нөмірді арттырады. Сол клиент қайтадан сатып алу үшін нөмір тағайындау машинасынан жаңа нөмір алуы тиіс. Аналогия бойынша, "клиенттер" – бұл i әрпімен белгіленетін, жаһандық айнымалыдан алынған жіптер. Компьютерлік архитектураның шектеулеріне байланысты Лампорттың аналогиясының кейбір бөліктеріне шағын түзетулер енгізу қажет. Бірнеше жіп бірдей n нөмірін сұрағанда алуы мүмкін; мұны болдырмауға болмайды (алғашқыда өзара қатынастың мәселесін шешпей, бұл алгоритмнің мақсаты). Сондықтан жіп идентификаторы i де басымдыққа ие деп есептеледі. i-нің кіші мәні жоғары басымдықты білдіреді және жоғары басымдылыққа ие жіптер алдымен сындық бөлімге кіреді.

Критикалық емес бөлім

Критикалық емес бөлім – эксклюзивті қолжеткізуді қажет етпейтін кодтың бөлігі. Ол басқа жіптердің ресурстарына және орындалуына араласпайтын, жіпке тән есептеуді көрсетеді. Бұл бөлім сауда жасағаннан кейін ақшаны әмианға салу сияқты әрекеттерге ұқсас.