Кіріспе
Компьютерлік бағдарламаның жұмысы I/O күтуге кеткен уақытқа күрт тәуелді. Компьютер ғылымында, I/O-ға тәуелділік – есептеуді аяқтауға кеткен уақыттың басты себебі кіріс/шығыс операцияларының аяқталуын күту екенін білдіретін жағдай. Бұл жағдай, процессорға (CPU) тәуелділікпен салыстырылады. Мұндай жағдай деректерді сұрау жылдамдығы, оларды пайдалану жылдамдығынан төмен болғанда, яғни деректерді өңдеуге қарағанда сұрауға көбірек уақыт жұмсалғанда туындайды.
In computer science, I/O bound refers to a condition in which the time it takes to complete a computation is determined principally by the period spent waiting for input/output operations to be completed, which can be juxtaposed with being CPU bound. This circumstance arises when the rate at which data is requested is slower than the rate it is consumed or, in other words, more time is spent requesting data than processing it.
I/O байланысы есептеу жүйесінің негізгі проблемасы
I/O байланысты күй есептеудің басынан бері проблема ретінде анықталды. Көптеген есептеу құрылғыларында қолданылатын фон Нейман архитектурасы, логикалық жағынан бөлек орталық процессорды іске асыру сияқты бірнеше мүмкін шешімдерді қамтиды, ол бағдарламаның нұсқауларын сақтаумен қатар, әдетте негізгі жадтан деректерді алады және жұмыс үшін осы деректерді пайдаланады. Процесс аяқталған кезде нәтижелер бастапқы жадқа (әдетте негізгі жадқа) қайта жазылады. Деректер CPU мен жад арасында шектеулі деректерді беру жылдамдығы бар шина арқылы жылжытылуы керек болғандықтан, фон Нейман тұйыққа тірелуі (bottleneck) деп аталатын жағдай туындайды. Қарапайым тілмен айтқанда, бұл CPU мен жад арасындағы деректер өткізу қабілетінің жалпы есептеу жылдамдығын шектеуі мүмкін. Компьютерді құрайтын нақты технология тұрғысынан алғанда, фон Нейман тұйыққа тірелуі, CPU-ға есептеулерді жылдам орындауға мүмкіндік беру үшін қажетті жылдамдықпен деректерді жеткізуге қарағанда, оны жылдам орындаудың оңайырақ екенін болжайды. Соңғы кезде фон Нейман тұйыққа тірелуі көріне бастады. Қазіргі заманғы компьютерлердің дизайн философиясы физикалық жағынан бөлек CPU және негізгі жадқа негізделген. CPU деректерді өте кішкентай арақашықтықта жылжыту арқасында жоғары жылдамдықпен жұмыс істей алады. Алайда, CPU мен негізгі жад арасындағы физикалық бөліну деректерді сантиметр немесе одан да ұзақ қашықтыққа жылжытуды талап етеді. Жүйенің осы бөлігін процессормен синхронды жұмыс істеу үшін жеткілікті жылдамдықпен іске қосу дизайнерлер үшін үлкен қиындық тудырды.
comparatively long distances of centimetres or more. The problem of making this part of the system operate sufficiently fast to keep up with the CPU has been a great challenge to designers.
CPU-мен салыстыру
Бір CPU-ға тәуелді процесс және көптеген I/O-ға тәуелді процесс бар деп есептейік. Процестер жүйеде орындалғанда, келесі сценарий туындауы мүмкін. CPU-ға тәуелді процесс CPU-ны иеленеді және ұстап тұрады. Осы уақыт аралығында, қалған барлық процестер I/O операцияларын аяқтап, CPU күту үшін дайын кезекке өтеді. Процестер дайын кезекте күтіп тұрғанда, I/O құрылғылары бос тұрады. Соңында, CPU-ға тәуелді процесс CPU жұмысын аяқтап, I/O құрылғысына көшеді. I/O-ға тәуелді барлық процестер, олардың CPU-ға қажет уақыты аз болғандықтан, жылдам орындалып, I/O кезектеріне қайта оралады. Осы кезде процессор бос тұрады. CPU-ға тәуелді процесс дайын кезекке оралып, CPU-ға тағайындалады. Қайтадан, барлық I/O процестері CPU-ға тәуелді процесс аяқталғанша дайын кезекте күтеді. Бұл – процестердің тізімі бойынша күту эффектісі, себебі барлық басқа процестер бір үлкен процестің CPU-дан босауына күтеді. Бұл эффектінің салдарынан CPU және құрылғылардың тиімділігі төмендейді, егер қысқа процестерге бірінші болып орындалуға рұқсат берілгенде, жағдай басқаша болар еді.