26
Кейбір кезде екі ағынға жалпы бір мақсатқа жету үшін бір бірімен әрекеттесуі қажет. Мысалы, С
компиляторында бір ағын С тілінде программаның өндеуін орындаса, ал екінші ағын – бірінші
ағынның жұмысының нәтижесін қабылдап және оны объективті кодқа компилляциялауы мүмкін. Бұл
екі ағынға бір бірінің деректерінің алмасу тәсіліне қажет.
Санашықтың өндеуі және программаның компилляциясы екі үрдіспен (әр қайыссының бір ағыны
бар), бір үрдістің орындалуына қарағанда тез болуы керек, өйткені көпесептілік операциялық жүйеде
санашықтың ағынын немесе компиллятордың ағынын кезек кезек орындауы мүмкін. Санашық бірігіп
қолданатын буферге бір нәрсе орналастырса, компилятор өзінің жұмысын бастауы мүмкін. Осыған
ұқсас екі немесе бірнеше орында бір уақытта орындалатын қолданбаларды,
паралельді қолданбалар
дейміз. Бір санашықты компьютерде паралельді қолданбалар пайдалы, ал көпсанашықтыларда ол өте
пайдалы.
Көпағындық. Паралельдікке жету үшін екі үрдісті қолдану барлық жағдайда тиімді емес. WinNT
бұл проблеманы шешу үшін ыңғайлы жадыны бірігіп қолданатын механизмдердін құрады. Бұл
механизмдерді қолданған жағдайларда да басқа проблемалар болуы мүмкін, сол жағдайда
паралельдікке жету үшін көпағынды үрдіс қолданылады.
Көпағынды үрдістің екі немесе бірнеше ағындары болады олар бірігіп бір адрестік кеңістікті
және қорды қолданады.
NT-ң әр үрдісі бір ағынмен құрылады. Қажет болса программа үрдіс ішінде қосымша ағындарды
құруы мүмкін. Олар көбінесе программада асинхронды операцияларды орындау үшін қолданылады
(операциялар кез келген уақытта орындалады). Бұл категорияға енгізу-шығару операциялары кіреді.
Бір ағынды негізгі программаның орындалуына қолданып, және екінші ағынды енгізу-шығару
құрылғысының сұранысына құрып, сонда жүйе бір санашықта бөлек екі операция орындауына
болады, бұл жағдайда көпесептілік орын табады. Көпсанашықты компьютерде бұл екі ағын бірге
орындалуы мүмкін, және басқа үрдіс құруына қажеті жоқ.
Ағындарды қолданып параллелизмге жету үшін программа бір үрдісте екі немесе бірнеше ағын
құрады. Көпағындық үрдістер паралельдікке жетеді және екі үрдісті қолдануымен байланысты
кемшіліктері жоқ. Ағындар үрдіске қарағанда тез құрылады. Одан бөлек үрдістің ағындары бір
жадыны қолданады, өздерінің стегі және регистр мәндерін алып тастағанда. Ерекше деректер алмасу
механизмін керек етпейді. Бір ағын өзінің нәтижесін жадыға жазады, ал екінші ағын оларды оқиды.
Сонымен бірге үрдістің барлық қорлары оның барлық ағындарымен бірдей қолданылады. Ағындардың
орындалу кезегін анықтау үшін ядро пұрсаттылыққа негізделген сұлбасын қолданады. Пұрсаттылығы
жоғары ағын пұрсаттылығы төмен ағыннан бұрын орындалады, ядро ағындардың пұрсаттылығын
өзгертіп тұрады, сол арқылы олардың бәрінің орындалуына кепілдік береді.
Көпағынды үрдісті қолдану – серверлі қолданбаларға тиімді шешім, ол клиенттерден сұраныс
қабылдайды және әр сұраныс бойынша бір кодты орындайды. Мысалы, файл-сервер файлдармен
жұмыс жасайтын операциялар, бірақ әр сұраныс серверден өзінің файлымен жұмыс істеуді сұрасада,
сервер программасы жадыға тек бір рет жүктеледі. Әр келетін сұраныс қажет функциясын
орындайтын сервердің бөлек ағындарымен қабылданады және өңделеді.
WinNT – де паралельдікке жету үшін екі үрдісті қолданады олар арнайы арналар арқылы
әрекеттеседі. Сондықтан WinNT бағыныңқы жүйелері бөлек серверлі үрдістер ретінде жүзеге
асырылған және
қорғалған деп аталады.
Негізгі әдебиеттер 9[102–113], 3 [85-91]
Қосымша әдебиеттер 18 [69-87], 19 [104-126]
Достарыңызбен бөлісу: