Кіріспе

Басқа процесс құратын есептеу процесі. Компьютердегі таңғы процесі – басқа процесс (аналық процесс) құратын процесс. Бұл техника көп тапсырмалы операциялық жүйелерге қатысты, және кейде кіші процесс немесе дәстүрлі түрде кіші тапсырма деп аталады. Таңғы процесті құрудың екі негізгі тәсілі бар: fork жүйелік шақыру (Unix сияқты жүйелерде және POSIX стандартында басымдық беріледі) және spawn (Microsoft Windows-тың қазіргі заманғы (NT) ядросында, сондай-ақ кейбір тарихи операциялық жүйелерде басымдық беріледі).

Тарих

Бала процестер 1960 жылдардың соңына дейін жетеді, ал оның алғашқы нысаны IBM OS/360 операциялық жүйесінің Multiprogramming with a Fixed number of Tasks Version II (MFT II) түрінің кейінгі өңдеулерінде пайда болды, ол ішкі тапсырмаларды (таск қараңыз) енгізді. Unix-тің қазіргі түрі Multics (1969) жүйесінен, ал Windows NT түрі OpenVMS (1978) және RSX 11 (1972) жүйелерінен әсер алды.

Шешкеніктен туған балалар

Бала процесі ата-анасынан файл дескрипторлары сияқты көптеген атрибуттарын мұралайды. Unix жүйесінде бала процесі, әдетте, fork жүйелік шақыруын пайдалана отырып, ата-анасының көшірмесі ретінде жасалады. Бала процесі қажет болған жағдайда өзін басқа бағдарламамен (қажет болса) алмастыра алады. Әрбір процесс көптеген бала процестерін жасай алады, бірақ ең көп дегенде бір ата-ана процесі болады; егер процестің ата-анасы болмаса, бұл әдетте оның ядромен тікелей құрылғандығын көрсетеді. Кейбір жүйелерде, соның ішінде Linux негізделген жүйелерде, ең алғашқы процесс (init деп аталады) ядро жүктелу кезінде іске қосылады және ешқашан аяқталмайды (Linux жүктелу процесін қараңыз); басқа ата-анасыз процестер пайдаланушы кеңістігінде әртүрлі демондық тапсырмаларды орындау үшін іске қосылуы мүмкін. Процестің ата-анасының жоқ болуының тағы бір себебі – ата-анасының өлімі, нәтижесінде жетім процесс пайда болады; бірақ мұндай жағдайда ол көп ұзамай init процесімен қабылданады. SIGCHLD сигналы бала процесі шығып кеткен, тоқтатылған немесе тоқтатылғаннан кейін қайта іске қосылған кезде оның ата-анасына жіберіледі. Дәстүрлі түрде бұл сигнал назарда ұсталмайды.

Өмірінің соңы

Бала процесс аяқталғанда, кейбір ақпарат аталық процесске қайтарылады. Егер бала процесс ата-анасы күту функциясын шақырудан бұрын аяқталса, ядро процесс туралы, мысалы, оның шығу статусын сақтап, ата-анасына кейін күту функциясын шақыруға мүмкіндік береді. Бала әлі де жүйе ресурстарын пайдаланып тұрса да, орындалмайтындықтан, ол зомби процесс деп аталады. Күту жүйелік шақырылымы SIGCHLD сигналдық басқарушысында жиі қолданылады. POSIX.1 2001 аталық процеске ядроға SIGCHLD сигналының жолына SIGIGN орнату арқылы (елемеу әдепкі бойынша болса да, автоматты түрде жинау тек жол нақты түрде елемеуге қойылған жағдайда ғана болады) немесе SIGCHLD сигналы үшін SA_NOCLDWAIT туын орнату арқылы аяқталған бала процестерін автоматты түрде жинауға рұқсат береді. Linux 2.6 ядролары осы мінез-құлықты сақтайды, ал FreeBSD 5.0 нұсқасынан бастап осы екі әдісті де қолдайды. Дегенмен, System V және BSD арасындағы SIGCHLD сигналын елемеуге қатысты тарихи айырмашылықтарға байланысты, күту функциясын шақыру, бұтақтанған бала процестерінен кейін тазалаудың ең сенімді тәсілі болып қала береді.