Білім беру бағдарламасы Инновациялық технологиялар факультеті «Ақпараттық технологиялар және қауіпсіздік» кафедрасы 2023 Алғысөз


Синхронды және асинхронды енгізу-шығару



бет49/107
Дата19.12.2023
өлшемі0.83 Mb.
#487093
түріБілім беру бағдарламасы
1   ...   45   46   47   48   49   50   51   52   ...   107
сессия ответы

Синхронды және асинхронды енгізу-шығару

Синхронды және асинхронды енгізу / шығару


Синхронды енгізу / шығару-бұл схемада процессор енгізу / шығару орындалуын күтеді.
Асинхронды енгізу / шығару-енгізу / шығару процессордағы нұсқауларды орындаумен қатар жүреді.
Синхронды режимде орындалған кезде Win32 API енгізу/шығару функциялары (мысалы, ReadFile, WriteFile немесе DeviceloControl) операция аяқталғанға дейін бағдарламаның орындалуын блоктайды. Бұл модель өте ыңғайлы болғанымен, ол өте тиімді емес. Дәйекті енгізу / шығару сұрауларын орындау арасындағы уақыт аралығында құрылғы бос тұруы мүмкін, яғни толық пайдаланылмауы мүмкін.
Синхронды режимнің тағы бір проблемасы-орындау ағыны кез-келген бәсекелес енгізу/шығару операциясын орындау кезінде уақытты ысырап етеді. Мысалы, бір уақытта көптеген клиенттерге қызмет көрсететін серверлік қосымшада әр сеанс үшін бөлек орындалу ағынын құру қарастырылуы мүмкін. Көбінесе бос тұрған бұл ағындар жадты ысырап етеді және көптеген орындалу ағындары енгізу/шығару аяқталғаннан кейін бір уақытта жұмысын жалғастырып, процессор уақыты үшін күресе бастағанда, контексттің уақыт бірлігіне ауысуының жоғарылауына және масштабталудың төмендеуіне әкелетін ағынды сырғыту жағдайларын (thread thrashing) тудыруы мүмкін.
Windows енгізу / шығару ішкі жүйесі (құрылғы драйверлерін қоса) асинхронды режимде жұмыс істейді-бағдарлама енгізу/шығару операциясымен бір уақытта жұмысын жалғастыра алады. Іс жүзінде барлық заманауи аппараттық құрылғылар асинхронды сипатқа ие және деректерді беру немесе енгізу/шығару операциясының аяқталу сәтін анықтау үшін оларды үнемі сұрастыруды қажет етпейді.
Көптеген құрылғылар процессордың операцияға қатысуын қажет етпестен құрылғы мен компьютердің жедел жады арасында деректерді тасымалдау үшін жадқа тікелей қол жеткізу мүмкіндігін (direct Memory Access, DMA) қолдайды және деректер аяқталғаннан кейін үзіліс жасайды. Ішкі асинхронды синхронды енгізу/шығару режиміне тек Windows қосымшалары деңгейінде қолдау көрсетіледі.
Қолданба енгізу/шығару операциясын орындау үшін асинхронды сұрау жасаған кезде, Windows бұл әрекетті дереу орындайды немесе операцияның орындалуын күтіп тұрғанын көрсететін күй кодын қайтарады. Осыдан кейін орындалу ағыны басқа енгізу/шығару операцияларын бастауы немесе кейбір есептеулерді орындауы мүмкін. Бағдарламашыда енгізу / шығару операцияларының аяқталғаны туралы хабарламаларды қабылдауды ұйымдастырудың бірнеше әдісі бар:
Win32 оқиғасы: бұл оқиғаны күтіп тұрған операция енгізу/шығару аяқталғаннан кейін орындалады.
Асинхронды процедураны шақыру механизмі (Asynchronous Procedure Call, APC) арқылы пайдаланушы функциясын шақыру: орындалу ағыны хабарлауды күту күйінде болуы керек (alertable wait).
Кіріс/шығыс аяқтау порттары (I/O толық порттары, IOCP) арқылы хабарламаларды қабылдау: бұл әдетте ең тиімді механизм. Біз оны әрі қарай егжей-тегжейлі зерттейміз.
Кейбір енгізу/шығару құрылғылары (мысалы, буферленбеген режимде ашылған файл) қосымша кіріс/шығыс сұрауларының аз санының тұрақты болуын қамтамасыз ете алатын болса, қосымша пайда әкелуі мүмкін. Ол үшін Енгізу/шығару операцияларын орындау үшін алдын-ала бірнеше сұраныс жасау және әрбір орындалған сұраныс үшін жаңа сұраныс жасау ұсынылады. Бұл қолданбаның келесі сұрауды орындауын күтпестен, құрылғы драйверінің келесі әрекетті ең қысқа мерзімде инициализациялауын қамтамасыз етеді. Бірақ берілетін деректер көлемімен шектелмеңіз, себебі бұл ядро жадының шектеулі ресурстарын тұтынады.





  1. Достарыңызбен бөлісу:
1   ...   45   46   47   48   49   50   51   52   ...   107




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет