Үрдістің біресепті және көпесепті орындалуы. Есепті көппроцессорлы шешуді басқару тәсілдері. Көпесептілік. Санашық бір уақытта тек бір ағынды орындайды. Бірақ көпесептілік операциялық жүйеде пайдаланушыға бірнеше программаларды пайдалануға мүмкіндік береді:
бір қордың босағанын немесе ағынның орындалуы үзілгенше ағын қолданылады;
ағынның мәнмәтіні сақталады;
ағынның мәнмәтіні жүктеледі;
орындалуды күткен ағындар бар болғанша бұл қайталау қайталанады.
Санашықтың бір ағынды орындау кезінде басқа ағынның орындалуын
қайта қосылуын мәнмәтінің қайта қосылуы дейміз. Көпесептілік жүйе орындайтын жұмыстың мөлшерін көбейтеді, өйткені көп ағындар үзілмей орындалмайды. Ағындар орындалуын тоқтатып, мысалы енгізу-шығару құрылғысының босауын күтуі мүмкін. Көпесептіліктің арқасында бір ағын күтуде болса, басқа ағын орындалуы мүмкін, соның арқасында санашықтың уақыты босқа кетпейді.
Ығыстыратын көпесептілік – көпесептіліктің түрі, бұнда ағынның басқа ағындардың орындалуына өзбетінше санашықтың босатуын операциялық жүйе күтпейді. Оның орнына алдын ала берілген уақытта немесе пұрсаттылығы жоғары ағын орындалуынға дайын болса операциялық жүйе ағынды үзеді. Ығыстыру бір ағынның санашықты толық алуынан сақтайды және басқа ағындарға санашықтың уақытын қолдануға мүмкіндік береді.
NT орындалу жүйесі – ығыстыратын көпесептілік жүйесі және Windows негізгі ортасы мен Win32 бағыныңқы жүйесі болып табылады. Ығыстырмайтын Windows версиясында MS DOS-қа көпесептілікке жету үшін, ағын өз бетінше санашықтың басқаруын беру қажет. Нашар программалар басқа қолданбаларға немесе жүйе кедергі жасап санашықты жаулап алуы мүмкін еді.
Кейбір кезде екі ағынға жалпы бір мақсатқа жету үшін бір-бірімен әрекеттесуі қажет. Мысалы, С компиляторында бір ағын С тілінде программаның өңдеуін орындаса, ал екінші ағын – бірінші ағынның жұмысының нәтижесін қабылдап және оны объективті кодқа компилляциялауы мүмкін. Бұл екі ағынға бір бірінің деректерінің алмасу тәсіліне қажет.
Санашықтың өңдеуі эәне программаның компилляциясы екі үрдіспен (әр қайсысының бір ағыны бар), бір үрдістің орындалуына қарағанда тез болуы керек, өйткені көпесептілік операциялық жүйеде санашықтың ағынын немесе компиллятордың ағынын кезек-кезек орындауы мүмкін. Санашық бірігіп қолданатын буферге бір нәрсе орналастырса, компилятор өзінің жұмысые бастауы мүмкін. Осыған ұқсас екі немесе бірнеше орында бір уақытта орындалатын қолданбаларды, параллельді қолданбалар дейміз. Бір санашықты компьютерде параллельді қолданбалар пайдалы, ал көпсанашылықтарда ол өте пайдалы.
Көпағындық. Параллельдікке жету үшін екі үрдісті қолдану барлық жағдайда тиімді емес. WinNT бұл проблеманы шешу үшін ыңғайлы жадыны бірігіп қолданатын механизмдерден құрады. Бұл механизмдерді қолданған жағдайларда да басқа проблемалар болуы мүмкін, сол жағдайда параллельдікке жету үшін көпағынды үрдіс қолданылады.
Көпағынды үрдістің екі немесе бірнеше ағындары болады олар бірігіп бір адрестік кеңістікті және қорды қолданады.
NT-ң әр үрдісі бір ағынмен құрылады. Қажет болса программа үрдіс ішінде қосымша ағындарды құруы мүмкін. Олар көбінесе программада асинхронды операциялаоды орындау үшін қолданылады (операциялар кез келген уақытта орындалады). Бұл категорияға енгізу-шығару операциялары кіреді. Бір ағынды негізгі программаның орындалуына қолданып, және екінші ағынды еңгізіу-шығару құрылғысының сұранысына құрып, сонда жүйе бір санашықта бөлек екі операция орындауына болады, бұл жағдайда көпесептілік орын табады. Көпсанашықты компьютерде бұл екі ағын бірге орындалуы мүмкін және басқа үрдіс құруына қажеті жоқ.
Ағындарды қолданып параллелизмге жету үшін программа бір үрдісте екі немесе бірнеше ағын құрады. Көпағындық үрдістер параллельдікке жетеді және екі үрдісті қолдануымен байланысты кемшіліктері жоқ. Ағындар үрдіске қарағанда тез құрылады. Одан бөлек үрдістің ағындары бір жадыны қолданады, өздерінің стегі және регистр мәндерін алып тастағанда. Ерекше деректер алмасу механизмін керек етпейді. Бір ағын өзінің нәтижесін жадыға жазады, ал екінші ағын оларды оқиды. Сонымен бірге үрдістің барлық қорлары оның барлық ағындарымен бірдей қолданылады. Ағындардың орындалу кезегін анықтау үшін ядро пұрсаттылыққа негізделген сұлбасын қолданады. Пұрсаттылығы жоғары ағын пұрсаттылығы төмен ағыннан бұрын орындалады, ядро ағындардың пұрсаттылығын өзгертіп тұрады, сол арқылы олардың бәрінің орындалуына кепілдік береді.
Көпағынды үрдісті қолдану – серверлі қолданбаларға тиімді шешім, ол клиенттерден сұраныс қабылдайды және әр сұраныс бойынша бір кодты орындайды. Мысалы, файл-сервер файлдармен жұмыс жасайтын операцияла, бірақ әр сұраныс серверден өзінің файлымен жұмыс істеуді сұраса да, сервер программасы жадыға тек бір рет жүктеледі. Әр келетін сұраныс қажет функциясын орындайтын сервердің бөлек ағындарымен қабылданады және өңделеді.
WinNT –де параллельдікке жету үшін екі үрдісті қолданады олар арнайы арналар арқылы әрекеттеседі. Сондықтан WinNT бағыныңқы жүйелері бөлек серверлі үрдістер ретінде жүзеге асырылған және қорғалған деп аталады.