Кіріспе

Буфер бос болғанда оқылатын жағдай. Компьютерде буфердің жетіспеуі немесе буфердің ағып кетуі – екі құрылғы немесе процесс арасындағы байланыс үшін қолданылатын буферге, одан деректер оқылатын жылдамдықтан кем жылдамдықпен деректер жіберілген кезде туындайтын жағдай. Бұл термин буфердің толып кетуінен өзгеше, онда жадтың бір бөлігі белгілі бір көлемдегі буфер құрайды, бірақ одан артық дерекпен толтырылады. Бұл буферден дерек оқитын бағдарламаның немесе құрылғының, буфер қайта толтырылғанша өңдеуін тоқтатуын қажет етеді. Бұл жағымсыз және кейде ауыр салдарларға әкелуі мүмкін, себебі буфердегі деректер мұндай үзіліс-қайта бастау түріне көнбеуі мүмкін. Параллель бағдарламалау тұрғысынан, буфердің жетіспеуі – ресурстардың жетіспеулігінің бір түрі деп қарастырылуы мүмкін. Буфердің жетіспеуі және буфердің ағып кетуі терминдері буферге жазу қатесін білдіру үшін де қолданылады, бұл буфердің толып кетуіне ұқсас жағдай, бірақ бағдарлама буфердің басынан бұрын жазуға ие болып, ондағы рұқсат біттері сияқты маңызды деректерді жоюы мүмкін.

Жалпы себептері мен шешімдері

Буферлік жетіспеушілік көбінесе буферленген қосылысқа қатысты уақытша мәселелердің салдары болып табылады: екі процесс арасындағы байланыс, олар CPU уақыты үшін бәсекелес болуы мүмкін, немесе физикалық байланыс, құрылғылар өткізу қабілеті үшін бәсекелес болуы мүмкін. Мұндай проблемаларға қарсы ең оңай шара – буфердің мөлшерін арттыру. Егер кіріс дерек ағыны секундына 1 битпен оқылуы керек болса, 10 биттік буфер қосылысты сәтсіздікке ұшырағанша 10 секундқа дейін тоқтатуға мүмкіндік береді, ал 60 биттік буфер – 1 минутқа дейін. Дегенмен, бұл процесс немесе құрылғы үшін көбірек жад қолдануды талап етеді, бұл қымбатқа түсуі мүмкін. Бұл буфер толық күйінде басталады деп есептейді, оқу процесін бастамас бұрын елеулі кешігуді қажет етеді, және қосылыс қазіргі уақытта тоқтатылмаса, ол әрқашан толық болады. Егер деректер қажетті жылдамдықтан орташа есеппен жылдамрақ келмесе, қосылыстағы кез келген тоқтатулар жинақталады; 60 биттік буфері бар гипотетикалық қосылымда минутына бір биттің "жоғалуы" қосылыс бір сағат бойы белсенді болса, буферлік жетіспеушілікке алып келеді. Нақты уақыт қолданбаларында үлкен буфер мөлшері кіріс және шығыс арасындағы кідіріс уақытын ұлғайтады, бұл бейнеконференциялар сияқты төмен кідіріс талап ететін қолданбалар үшін қолайсыз.

CD және DVD жазу мәселесі

Буфердің толуы CD/DVD жазу кезінде ауыр проблемаларға алып келуі мүмкін, себебі жазу басталғаннан кейін тоқтауға және қатесіз қайта бастауға болмайды; осылайша, толу кезінде қажет болатын үзіліс дискідегі деректердің жарамсыз болуына себеп болуы мүмкін. Буфер көбінесе салыстырмалы түрде баяу көзден, мысалы, қатты дискіден немесе басқа CD/DVD-ден толтырылатындықтан, басқа іске қосылған тапсырмалардан туындаған процессор немесе жад жүктемесі шағын буфердің сыйымдылығын тез толықтырып жіберуі мүмкін. Сондықтан, әртүрлі CD/DVD жазу құрылғысы өндірушілері Plextor BurnProof, Nero UltraBuffer, Yamaha SafeBurn, JustLink және Seamless Link сияқты әртүрлі тауарлық белгілермен буфер толуын қорғау техникасын енгізді. Бұл техникамен лазер кез келген уақытқа жазуды тоқтатып, буфер қайта толғанда қайта бастай алады. Бір-бірінен кейінгі жазулар арасындағы үзіліс өте кішкентай. Қайта жазылатын медианы (CD RW, DVD RW, DVD RAM) пайдаланған кезде мәселеден қорғанудың тағы бір жолы – UDF файлдық жүйені пайдалану, ол деректерді кішірек "пакеттерге" ұйымдастырады, оларға жалғыз, жаңартылған мекенжай кестесі сілтеме жасайды, сондықтан оларды қысқа импульстармен жазуға болады.

Мультимедиялық ойнату

Егер графикалық контроллердің фрейм буфері жаңартылмаса, буфер жаңа деректерді алмайынша компьютер экранының суреті тоқтап қалады. Көптеген бейне ойнатқыш бағдарламалары (мысалы, MPlayer) жүйе артық жүктелгенде кадрларды түсіру мүмкіндігіне ие, бұл ырғақты сақтап тұру үшін буфердің толуын қасақана рұхсат етуге мүмкіндік береді. Аудио контроллердегі буфер – сақина тәрізді буфер. Егер аудио диспетчер тоқтатылмаса және буфер толып кетсе, ол буфердегі дыбысты қайталап шығарады немесе іске асылуына байланысты үнсіздік шығарады. Мұндай эффект көбінесе "пулемет" немесе Макс Хедрумның ұсыну әсері деп аталады. Бұл аудио ойнату кезінде операциялық жүйе тоқтағанда болады. Қателерді өңдеу процедурасы (мысалы, өлім экранының көк түсі) ақырында аудио контроллерді тоқтатуы мүмкін. Музыка немесе дыбыс өнерін жасау кезінде осы дыбыстық қателікті қасақана имитациялау, аудионы қолмен біріктіру немесе үлгілерді қайта іске қосу арқылы немесе плагиндерді пайдалану арқылы Stutter редактурасы деп аталады.