Кіріспе

Компьютерлік бағдарламаның нақты орындалуы. Есептеуде процесс – бір немесе бірнеше жіптер арқылы орындалатын компьютерлік бағдарламаның бір данасы. Процестердің көптеген түрлі модельдері бар, олардың кейбіреулері жеңіл салмақты, бірақ барлық процестер (тіпті толыққанды виртуалды машиналар да) операциялық жүйенің (ОЖ) процесіне негізделген. ОЖ процесі бағдарламалық кодты, тағайындалған жүйелік ресурстарды, физикалық және логикалық қол жеткізу рұқсаттарын, сондай-ақ орындау қызметін бастау, басқару және үйлестіру үшін қажетті дерек құрылымдарын қамтиды. ОЖ-ге байланысты, процесс бір мезгілде нұсқауларды орындайтын бірнеше орындау жіптерінен тұруы мүмкін. Компьютерлік бағдарлама – дискідегі файлда сақталатын нұсқаулардың пассивті жиынтығы, ал процесс – бұл нұсқаулардың дискіден жадқа жүктелгеннен кейін орындалуы. Бірнеше процесс бір бағдарламамен байланысты болуы мүмкін; мысалы, бір бағдарламаның бірнеше данасын ашу көбінесе бірден көп процестің орындалуына әкеледі. Көп тапсырмалылық – бірнеше процеске процессорларды (CPU) және басқа жүйелік ресурстарды бөлісуге мүмкіндік беретін әдіс. Әрбір CPU (ядро) бір мезгілде бір ғана процесті орындайды. Дегенмен, көп тапсырмалылық әрбір процессорға әр тапсырманың аяқталуын күтудің қажеті болмай, орындалып жатқан тапсырмалар арасында ауысуға мүмкіндік береді (үзіліс). Операциялық жүйенің іске асылуына байланысты, ауысулар тапсырмалар басталғанда және кіріс/шығыс операцияларының аяқталуын күту кезінде, тапсырма өз еркімен CPU-ны босатқанда, аппараттық үзілістерде және операциялық жүйенің жоспарлаушысы процесске берілген CPU уақытының үлесі таусылған деп шешкенде (мысалы, Linux ядросының Толық әділ жоспарлаушысы) жүзеге асырылуы мүмкін. Көп тапсырмалылықтың кең таралған түрі – CPU уақытын бөлісу, ол пайдаланушы процестері мен жіптерінің орындалуын, тіпті тәуелсіз ядро тапсырмаларының орындалуын кезекті түрде жүзеге асыру әдісі, бірақ соңғы мүмкіндік тек Linux сияқты үзіліспен жұмыс істейтін ядроларда ғана мүмкін. Үзіліс интерактивті процестер үшін маңызды қосымша әсерге ие, олар CPU-ға байланысты процестерге қарағанда жоғары басымдыққа ие, сондықтан пайдаланушылар пернеге басу арқылы немесе тышқанды жылжыту арқылы дереу есептеу ресурстарын алады. Сонымен қатар, бейне және музыка ойнату сияқты қолданбаларға басқа төмен басымдықты процестерден бұрын нақты уақыт басымдығы беріледі. Уақытты бөлісу жүйелерінде контексттік ауысулар жылдам орындалады, бұл бір процессорда бірнеше процесс бір мезгілде орындалып жатқандай сезім тудырады. Бірнеше процестің бір мезгілде орындалуы – бірқатарлылық деп аталады. Қауіпсіздік пен сенімділік үшін қазіргі заманғы операциялық жүйелердің көпшілігі тәуелсіз процестер арасында тікелей байланысты болдырмайды, олардың арасындағы байланыс қатаң түрде бақыланады және реттеледі.

Процестер арасындағы байланыс

Процестер бір-бірімен байланыс орнату қажет болғанда, олар өздерінің адрестік кеңістіктерінің бөліктерін бөліседі немесе процестер аралық байланыс (IPC) ның басқа түрлерін пайдаланады. Мысалы, қабықша құбыржолында бірінші процестің нәтижесі екінші процеске берілуі керек, және т.с.с. Тағы бір мысал – бір уақытта орындала алатын, өзара әрекеттесетін, бірақ ішінара тәуелсіз процестерге бөлінген тапсырма (яғни, бір мезгілде орындалу немесе нағыз параллелизмді пайдалану). Соңғы модель – бір мезгілде орындалудың ерекше жағдайы болып табылады және егер процестерді орындауға дайын күйде болғанда бірнеше процессорлық ядро қолжетімді болса, орындалуы мүмкін. Тіпті екі немесе одан көп процестер әртүрлі операциялық жүйелерді (ОЖ) қолданатын әртүрлі машиналарда жұмыс істеуі мүмкін, сондықтан байланыс және синхрондау үшін кейбір механизмдер қажет (бұл таратылған есептеулер үшін коммуникациялық протоколдар деп аталады), мысалы, хабар алмасу интерфейсі {MPI}.

Тарих

1960-шы жылдардың басында компьютерлік басқару бағдарламалық жасақтамасы, мысалы IBSYS, мониторды басқару бағдарламалық жасақтамасынан атқарушы басқару бағдарламалық жасақтамасына дамыды. Уақыт өте келе компьютерлер жылдамдықтарын арттырды, бірақ компьютерлік уақыт әлі де арзан емес және толыққанды пайдаланылмады; мұндай жағдай мультипрограммалауды мүмкін және қажетті етті. Мультипрограммалау – бірнеше бағдарламаның бір уақытта орындалуы дегенді білдіреді. Алғашқыда бір процессорда бірнеше бағдарлама жұмыс істеді, себебі негізге бірпроцессорлық компьютерлік архитектура жатты, және олар аз және шектеулі аппараттық ресурстарды бөлісті; нәтижесінде, бір мезгілде орындалу тізбекті сипатта болды. Кейінгі көппроцессорлық жүйелерде бірнеше бағдарлама бір уақытта параллель түрде орындалуы мүмкін. Бағдарламалар процессорлар үшін арналған нұсқаулар тізбектерінен тұрады. Бір процессор бір уақытта тек бір ғана нұсқауды орындай алады: бір уақытта бірнеше бағдарламаны орындау мүмкін емес. Бағдарламаға үлкен кешігуі бар кіріс құрылғысы сияқты кейбір ресурстар қажет болуы мүмкін, немесе бағдарлама принтерге шығыс жіберу сияқты баяу операцияны бастауы мүмкін. Бұл процессордың "босқа тұруына” (пайдаланылмауына) әкеледі. Процессорды үнемі жұмыс істеу үшін, мұндай бағдарламаның орындалуы тоқтатылады және операциялық жүйе процессорды басқа бағдарламаны орындау үшін ауыстырады. Пайдаланушыға бағдарламалар бір уақытта орындалып жатқандай көрінеді (осыдан “параллель” термині пайда болды). Көп ұзамай “бағдарлама” түсінігі “орындалып жатқан бағдарлама және оның контексті” түсінігіне дейін кеңейтілді. Процесс түсінігі туды, ол қайта кіретін кодты жасаумен бірге қажет болды. Желдер кейінірек пайда болды. Дегенмен, уақытты бөлісу, компьютерлік желілер және бірнеше CPU ортақ жады компьютерлері сияқты ұғымдардың пайда болуымен ескі “мультипрограммалау” нақты көпміндеттілікке, көппроцессорлық өңдеуге және кейінірек көпжіптілікке жол берді.