Кіріспе

"Нақты уақыт шектеулері" бар аппараттық және бағдарламалық жүйелерді зерттеу.

Нақты уақыт есептеу (RTC) – бұл компьютерлік ғылым термині, ол "нақты уақыт шектеулеріне" жататын аппараттық және бағдарламалық жүйелерді қамтиды, мысалы, оқиғадан бастап жүйе жауабына дейін. Нақты уақыт бағдарламалары "мерзімдер" деп аталатын белгіленген уақыт шектерінде жауап беруге кепілдік беруі керек. "Нақты уақыт" термині симуляцияда қолданылғанда, симуляция сағатының нақты сағатпен бірдей жылдамдықпен жұмыс істейтінін білдіреді. Нақты уақыт жауаптары көбінесе миллисекундтармен, кейде микросекундтармен өлшеніп, беріледі. Нақты уақытта жұмыс істейтін жүйе, әдетте, кез келген уақыт аралығында жауап беруге кепілдік бере алмайды, бірақ әдеттегі немесе күтілетін жауап беру уақыты көрсетілуі мүмкін. Нақты уақытты өңдеу, егер оқиғаға қатысты белгіленген мерзімде аяқталмаса, сәтсіз аяқталады; жүйе жүктемесіне қарамастан, мерзімдер әрқашан орындалуы тиіс. Нақты уақыт жүйесі – "деректерді қабылдап, өңдеп, нәтижелерді сол уақытта ортаға әсер ететіндей жылдамдықпен қайтара отырып, ортаны басқаратын" жүйе ретінде сипатталады. "Нақты уақыт" термині процестерді басқару және кәсіпорын жүйелерінде "айтарлықтай кешіктірусіз" деген мағынада қолданылады. Нақты уақыт бағдарламалық жасақтамасы синхронды бағдарламалау тілдері, нақты уақыт операциялық жүйелері (RTOS) және нақты уақыт желілері сияқты бір немесе бірнеше құралдарды пайдалана алады, олардың әрқайсысы нақты уақыт бағдарламалық жасақтамасын құру үшін қажетті базалық құрылымды ұсынады. Көптеген қауіпсіздікке маңызды қолданбаларда қолданылатын жүйелер нақты уақыт режимінде жұмыс істеуі керек, мысалы, ұшақтың сым арқылы басқарылуы немесе тежегіш жүйенің жұмысы, олардың екеуі де дереу және нақты механикалық жауапты талап етеді.

Тарих

Нақты уақыт термині алғашқы симуляцияларда қолданылуынан туындады, онда нақты әлемдегі процесс нақты процестің жылдамдығымен сәйкес келетін жылдамдықпен симуляцияланды (қазір түсініксіздікті болдырмау үшін нақты уақыт симуляциясы деп аталады). Аналогтық компьютерлер көбінесе нақты уақыттан әлдеқайда жылдам симуляциялауға қабілетті болды, егер оны тани алмай және есепке алмаса, баяу симуляция сияқты қауіпті жағдай тууы мүмкін. 1970-жылдардан бастап, әсіресе, DOG (экрандағы цифрлік графика) сканерлері сияқты арнайы кіріктірілген жүйелерге енгізілген миникомпьютерлер кіріс деректерімен маңызды өзара әрекеттесулерге төмен жалағумен жауап беру қажеттілігін арттырды. Осыдан кейін Data General-дің RDOS (нақты уақыт дискілік операциялық жүйесі) және RTOS, сондай-ақ Digital Equipment Corporation-ның RT 11 сияқты операциялық жүйелер пайда болды. Алдыңғы және артқы жоспарлау төмен басымдылықтағы тапсырмаларға CPU уақытын, ал алдыңғы жоспарды орындау қажет болмағанда берді, ал алдыңғы жоспардағы ең жоғары басымдылықтағы жіптерге/тапсырмаларға абсолютті басымдық берді. Нақты уақыт операциялық жүйелері көп пайдаланушылық міндеттерді уақыт бөлісу арқылы да орындай алатын. Мысалы, Data General Business Basic RDOS-тің алдыңғы немесе артқы жағында жұмыс істей алатын және "ақымақ терминалдар" арқылы өзара әрекеттесетін пайдаланушылар үшін оны ыңғайлы ету үшін жоспарлау алгоритміне қосымша элементтер енгізе алатын. MOS Technology 6502 (Commodore 64 және Apple II-де қолданылған), кейін Motorola 68000 (Macintosh, Atari ST және Amiga-да қолданылған) танымал болған кезде кез келген адам өз үй компьютерін нақты уақыт жүйесі ретінде пайдалана алатын. Басқа үзілістерді өшіру мүмкіндігі белгілі уақытпен қатты кодталған циклдарды іске асыруға мүмкіндік берді, ал үзілістің төмен жалағу уақыты пайдаланушы интерфейсіне және дискілерге нақты уақыт жіптеріне қарағанда төмен басымдық беруге мүмкіндік бере отырып, нақты уақыт операциялық жүйесін іске асыруға мүмкіндік берді. Intel процессорларының бағдарламаланатын үзіліс басқарушысы (8086, 80586) бұлармен салыстырғанда өте үлкен жалағуды тудырады, ал Windows операциялық жүйесі нақты уақыт операциялық жүйесі емес, сонымен қатар бағдарламаға CPU-ны толықтай басып алуға және өзінің жеке жоспарлаушысын пайдалануға мүмкіндік бермейді, жергілікті машина тілін пайдаланбастан және осылайша барлық Windows кодын айналып өтеді. Дегенмен, әртүрлі операциялық жүйелерде жоғары деңгейдегі тілде нақты уақыт мүмкіндіктерін ұсынатын бірнеше кодтау кітапханалары бар, мысалы Java Real Time. Motorola 68000 және одан кейінгі отбасы мүшелері (68010, 68020 және т.б.) өнеркәсіптік басқару жүйелерін өндірушілер арасында да танымал болды. Бұл қолдану саласы нақты уақыт бақылауы процестердің өнімділігі мен қауіпсіздігі жағынан нақты артықшылықтар ұсынатын сала.

Нақты уақыт режиміндегі есептеу критерийлері

Жүйе нақты уақыт деп аталады, егер операцияның толық дұрыстығы оның логикалық дұрыстығына ғана емес, сонымен қатар орындалған уақытына да байланысты болса. Нақты уақыт жүйелері, сондай-ақ олардың мерзімдері, мерзімді өткізіп алудың салдары бойынша жіктеледі: Қатаң мерзімді өткізіп алу – жүйелік толық істен шығу. Жиі емес мерзімдерді өткізіп алулар қабылданады, бірақ жүйенің қызмет көрсету сапасын төмендетеді. Нәтиженің пайдалылығы мерзімі өткеннен кейін нөлге тең. Жұмсақ мерзімді өткізіп алу нәтиженің пайдалылығын төмендетеді, осылайша жүйенің қызмет көрсету сапасын төмендетеді. Осылайша, қатаң нақты уақыт жүйесінің мақсаты – барлық мерзімдердің орындалуын қамтамасыз ету, ал жұмсақ нақты уақыт жүйелері үшін мақсат – белгілі бір қосымшаға тән критерийлерді оңтайландыру үшін мерзімдердің белгілі бір жиынтығын орындау. Оптимизацияланатын нақты критерийлер қосымшаға байланысты, бірақ кейбір үлгілік мысалдарға орындалған мерзімдердің санын көбейту, тапсырмалардың кешігуін азайту және олардың мерзімдерін орындайтын жоғары басымдылыққа ие тапсырмалардың санын көбейту жатады. Қатаң нақты уақыт жүйелері оқиғаға қатаң мерзімде жауап беру қажет болған кезде қолданылады. Мұндай берік кепілдіктер белгілі бір уақыт аралығында әрекет етпеу қандай да бір жолмен үлкен шығынға әкелетін, әсіресе қоршаған ортаға физикалық зақым келтіретін немесе адам өміріне қауіп төндіретін жүйелерге қажет (бірақ қатаң анықтама бойынша мерзімді өткізіп алу жүйенің сәтсіздікке ұшырауы болып табылады). Қатаң нақты уақыт жүйелерінің мысалдары: Автомобильдің қозғалтқышын басқару жүйесі – бұл нақты уақыт жүйесі, өйткені кешіктірілген сигнал қозғалтқыштың істен шығуына немесе зақымдануына әкелуі мүмкін. Жүрек сергіткіштері сияқты медициналық жүйелер. Кардиостимулятордың жұмысы қарапайым болса да, адам өміріне қауіп төндіретіндіктен, мұндай медициналық жүйелерді мұқият тексеру мен сертификаттау қажет, бұл өз кезегінде қиын нақты уақыт есептеуін талап етеді, бұл сәтсіздіктің мүмкін еместігіне дәлелденетін кепілдіктер беру үшін. Өндірістік процестерді басқарушылар, мысалы, құрастыру желісіндегі машина. Егер машина кідірілсе, құрастыру желісіндегі бұйым машинаның қолынан тыс (өнімге тиіспей) өтуі мүмкін немесе роботты дұрыс емес уақытта іске қосу машинаға немесе өнімге зақым келтіруі мүмкін. Егер ақау анықталса, екі жағдайда да құрастыру желісі тоқтап, өндіріс баяулайды. Егер ақау анықталмаса, ақаулы өнім өндіріске жетуі мүмкін немесе өндірістің кейінгі кезеңдерінде зақымдануға әкелуі мүмкін. Қатаң нақты уақыт жүйелері әдетте физикалық аппараттық жабдықпен төмен деңгейде, кіріктірілген жүйелерде өзара әрекеттеседі. Алғашқы видео ойындар жүйелері, мысалы, Atari 2600 және Cinematronics векторлық графикасы графикалық және уақыттық аппараттық сипаттамалары болғандықтан нақты уақыт талаптарына ие болды. Softmodem компьютердің CPU-да жұмыс істейтін бағдарламалық қамтамасыз етумен аппараттық модемді алмастырады. Бағдарлама келесі шығарылатын дыбыс деректерін жасау үшін бірнеше миллисекунд сайын іске қосылуы керек. Егер бұл деректер кешіктірілсе, қабылдаушы модем синхрондауды жоғалтады, бұл синхрондау қалпына келтірілгенде ұзақ үзіліске әкеледі немесе байланысты толығымен жоғалтады. Принтерлердің көптеген түрлері нақты уақыт талаптарына ие, мысалы, сияды (сия бас бет арқылы өткен кезде дұрыс уақытта салынуы керек), лазерлік принтерлер (лазерлік сәуле айналатын барабан арқылы сканерленген кезде лазер дұрыс уақытта іске қосылуы керек), нүктелік матрица және сызықтық принтерлердің әртүрлі түрлері (тақсыма механизмі қажетті шығысқа сәйкестенген кезде әсер ету механизмі дұрыс уақытта іске қосылуы керек). Осылардың кез келгенінің ақаулығы шығыстың жоғалуына немесе дұрыс емес шығысқа әкеледі. Көп тапсырмалы жүйелер жағдайында жоспарлау саясаты әдетте басымдыққа негізделген (алдын ала жоспарлаушылар). Кейбір жағдайларда олар нақты уақыт режимінде жұмыс істеуді қамтамасыз етеді (мысалы, егер тапсырмалар жиынтығы мен олардың басымдықтары алдын ала белгілі болса). Басқа да күрделі нақты уақыт кестелері бар, мысалы, жылдамдық монотонды, бұл жалпы мақсаттағы жүйелерде жиі кездеспейді, өйткені тапсырманы жоспарлау үшін қосымша ақпарат қажет: атап айтқанда, тапсырманың орындалуы қанша уақытқа созылатындығы туралы шектелген немесе ең нашар жағдайды бағалау. Мұндай күрделі нақты уақыт тапсырмаларын жоспарлауға арналған нақты алгоритмдер бар, мысалы, ең жақын мерзімді бірінші, ол контекстік ауысудың шығындарын ескермегенде, жүйе жүктемесі 100%-дан аз болған жағдайларда жеткілікті. Жаңа қабаттасқан жоспарлау жүйелері, мысалы, бейімделмелі бөлу жоспарлаушысы, нақты уақыт және нақты уақыт емес қосымшалардың қоспасы бар үлкен жүйелерді басқаруға көмектеседі. Жұмсақ нақты уақыт жүйелері көбінесе анықталмайды, кейбір жіктемелерде олар қамтылмайды, тек қатаң және жұмсақ нақты уақыт жүйелерін ажыратады. Жұмсақ нақты уақыт жүйелерінің мысалдары: Бұрын сипатталған құрастыру желісіндегі машинаның жұмысы жұмсақ нақты уақыт ретінде қарастырылуы мүмкін. Мерзімді өткізіп алу әлі де қатеге әкеледі, оны шешу қажет: бұйымды жаман деп белгілеуге немесе құрастыру желісінен шығаруға арналған механизм болуы мүмкін немесе құрастыру желісі тоқтатылып, оператор мәселені түзетуі мүмкін. Бірақ, егер мұндай қателер сирек болса, олар қабылданады. Жұмсақ нақты уақыт жүйелері әдетте бірнеше қосылған жүйелердің жағдайды өзгерту арқылы жаңартылып тұру қажеттілігі және бірдей қол жеткізілім мәселелерін шешу үшін қолданылады. Жұмсақ нақты уақыт жүйелерінің мысалдары: Әуе лайнерлері үшін ұшу жоспарларын сақтау және жаңарту бағдарламалық қамтамасыз етілуі. Ұшу жоспарларының жағдайына қарай жақын уақытта жаңартылып тұруы керек, бірақ олар бірнеше секундтық кешігумен жұмыс істей алады. Тікелей аудио-бейне жүйелері де әдетте жұмсақ нақты уақытқа ие. Кейінірек дыбыс кешіктірілсе, қысқа дыбыстық бұзылыс пайда болуы мүмкін (содан кейін барлық дыбыс сәйкесінше кешіктірілуі мүмкін, бұл дыбыс қалыптыдан баяу ойнатылып жатқандай сезім тудырады), бірақ бұл үнсіздікті, статикалық дыбысты, бұрынғы дыбыс кадрын немесе шамаланған деректерді ойнатудан жақсы болуы мүмкін. Видео кадры кешіктірілсе, көрермендер үшін тіпті аз бұзылыс тудырады. Жүйе болашақта жүктемені болжау және қайта конфигурациялау әдістемелерін пайдаланып жұмыс істеуін жалғастыра алады және жаңаруға болады. Сол сияқты, видео ойындар көбінесе жұмсақ нақты уақытқа ие, әсіресе олар кадр жиілігін сақтауға тырысқанда. Келесі сурет алдын ала есептелмейді, өйткені ол ойыншының енгізгендеріне байланысты, сондықтан видео кадрын көрсету керек болғанға дейін барлық есептеулерді орындау үшін қысқа уақыт бар. Егер мерзімді өткізіп алса, ойын төмендетілген кадр жиілігімен жалғастырылуы мүмкін; ойынға байланысты, бұл графикасын ғана әсер етуі мүмкін (ал ойын қалыпты жылдамдықпен жалғасады), немесе ойынның өзі баяулауы мүмкін (бұл ескі үшінші және төртінші буын консольдерінде кең таралған).

Цифрлық сигналдарды өңдеуде нақты уақыт

Нақты уақытты цифрлық сигналдарды өңдеу (DSP) процесінде талданған (кіріс) және жасалған (шығыс) үлгілерді, өңдеу кешігуіне қарамастан, бір үлгілер жиынтығын енгізу және шығару үшін қажетті уақыт ішінде үздіксіз өңдеуге (немесе жасауға) болады. Бұл өңдеу кешігуі шектелген болуы керек дегенді білдіреді, тіпті өңдеу шексіз уақытқа созылса да. Яғни, жалпы шығындарды қоса алғанда, орташа өңдеу уақыты үлгі алу периодынан артық болмауы керек, ал үлгі алу периоды – үлгі алу жиілігінің кері шамасы. Бұл критерий үлгілердің үлкен сегменттерге біріктіріліп, блоктар түрінде өңделіп, немесе жеке-жеке өңделіп, сондай-ақ кіріс және шығыс буферлерінің ұзындығына қарай анықталады. Мысалы, аудио DSP процесін қарастырайық; егер 2.00 секунд дыбысты талдауға, синтездеуге немесе өңдеуге 2.01 секунд кетсе, онда бұл нақты уақыт емес. Бірақ, егер 1.99 секунд кетсе, онда бұл нақты уақыт DSP процесі болып табылады немесе оған айналдырылуы мүмкін. Күнделікті өмірден қарапайым мысал – дүкенде кассаға тұру. Егер кезек асимптотикалық түрде ұзара берсе және шегі болмаса, онда касса процесі нақты уақыт емес. Егер кезек ұзындығы шектелген болса, яғни клиенттер енгізілгеннен кейін орташа есеппен соғұрлым жылдам "өңделіп" және шығарылса, онда бұл процесс нақты уақыт болып саналады. Дүкен иесі төлем процесін нақты уақытқа жеткізе алмаса, бизнесінен айырылуы мүмкін немесе кем дегенде табысын жоғалтуы мүмкін; сондықтан бұл процесс нақты уақыт болуы өте маңызды. Кіріс деректерінің ағынымен бірге жүре алмайтын және шығысы кірістен артта қалатын сигналды өңдеу алгоритмі нақты уақыт емес. Бірақ, егер шығыс кешігуі (кіріске қатысты) шексіз уақыт ішінде жұмыс істейтін процесс үшін шектелген болса, онда бұл сигналды өңдеу алгоритмі нақты уақыт болып саналады, тіпті өткізу кешігуі өте ұзақ болса да.

Тірі және нақты уақыт

Нақты уақыт сигналды өңдеу тікелей эфирдегі іс-шараларды қолдау сияқты тікелей сигнал өңдеу үшін қажет, бірақ ол өзіндік құнды емес. Тікелей аудионың цифрлық сигналды өңдеуі нақты уақыт режимінде жұмыс ілуді және өткізу кешігуінің жеткілікті шегін қажет етеді, осылайша сахналық мониторларды немесе құлаққа салынатын мониторларды пайдаланатын орындаушылар үшін ол қабылданатын болады, ал орындаушыларды тікелей көретін көрермендер үшін еріннің синхрондылығындағы қате ретінде байқалмайды. Тікелей, нақты уақыт өңдеудегі кешігуге төзімді шектер зерттеу және пікірталас тақырыбы болып табылады, бірақ шамамен 6 мен 20 миллисекунд аралығында деп есептеледі. Екі бағытты телекоммуникациялардағы нақты уақыт кешігуі 300 мс-тен кем болса ("қайта оралу" немесе бір бағытты кешігудің екі есесі) әңгіме барысындағы немесе сөйлесу кезіндегі немесе тілдесу кезіндегі жағымсыз "үстінен сөйлеуді" болдырмау үшін "қабылданады".

Нақты уақыт пен жоғары өнімділік

Шынайы уақыт есептеулері кейде жоғары өнімділік есептеулер деп қате түсініледі, бірақ бұл дұрыс жіктеме емес. Мысалы, ғылыми симуляцияны орындайтын үлкен суперкомпьютер әсерлі өнімділік көрсетуі мүмкін, бірақ ол шынайы уақыт есептеуді орындамайды. Керісінше, құрылғылық және бағдарламалық жасақтама антиблокировкалық тежегіш жүйесі үшін қажетті мерзімдерге сай келу үшін жасалғаннан кейін, өнімділікті одан әрі арттыру міндетті немесе тіпті пайдалы емес. Сонымен қатар, егер желілік сервер желілік трафикпен күшті жүктелген болса, оның жауап беру уақыты баяулау болуы мүмкін, бірақ (көбінесе) мерзімі біткенше (уақыты таусылғанша) сәтті аяқталады. Сондықтан, мұндай желілік серверді шынайы уақыт жүйесі деп санауға болмайды: уақытша қателер (кешігулер, мерзімнің өтуі және т.б.) әдетте шағын және локализацияланған (әсері шектеулі), бірақ катастрофалық қателер емес. FTSE 100 индексі сияқты шынайы уақыт жүйесінде, белгілі бір шектен тыс баяулау қолданылу контекстінде катастрофалық деп есептелуі мүмкін. Шынайы уақыт жүйесінің ең маңызды талабы – жоғары өнімділік емес, тұрақты нәтиже беру. Шахмат ойынатын бағдарламалар сияқты кейбір бағдарламалық құралдар екі санатқа да жатуы мүмкін. Мысалы, таймері бар турнирде ойнауға арналған шахмат бағдарламасы белгілі бір мерзімге дейін қозғалысты анықтауы керек немесе ойынды ұтылуы мүмкін, сондықтан бұл шынайы уақыт есептеу болып табылады, бірақ қозғалыс жасамас бұрын шексіз уақытқа дейін жұмыс істеуге рұқсат етілген шахмат бағдарламасы емес. Алайда, екі жағдайда да жоғары өнімділік қажет: турнирлік шахмат бағдарламасы белгіленген уақытта қаншалықты көп жұмыс жасаса, оның қозғалыстары соншалықты жақсы болады, ал шектеусіз шахмат бағдарламасы қаншалықты жылдам жұмыс істейтін болса, ол соншалықты тез қозғала алады. Бұл мысал шынайы уақыт есептеулері мен басқа есептеулер арасындағы маңызды айырмашылықты көрсетеді: егер турнирлік шахмат бағдарламасы берілген уақытта келесі қадамын анықтамаса, ол ойынды ұтырады, яғни шынайы уақыт есептеу ретінде сәтсіздікке ұшырайды, ал екінші жағдайда мерзімге сәйкес келу қажет емес деп есептеледі. Жоғары өнімділік – белгілі бір уақыт ішінде орындалатын өңдеу көлемін көрсетеді, ал шынайы уақыт – қолданыстағы уақытта пайдалы нәтиже алу үшін өңдеуді аяқтау қабілеті.

Реалдық уақытқа жақын

"Нақты уақытқа жақын" немесе "шамалы нақты уақыт" (NRT) термині телекоммуникация және есептеу техникасында оқиғаның орын алуы мен өңделген деректерді пайдалану арасындағы, автоматтандырылған деректерді өңдеу немесе желілік тарату арқылы туындаған уақыт кешіктірілуін білдіреді. Мәселен, деректерді көрсету, кері байланыс беру немесе басқару мақсатында қолдануға болады. Мысалы, нақты уақытқа жақын дисплей ағымдағы уақыттан өңдеу уақытын алып тастағандағы оқиғаның немесе жағдайдың бейнесін, тікелей оқиғаның уақытына мүмкіндігінше жақын көрсетеді. "Нақты уақытқа жақын" және "нақты уақыт" терминдерінің арасындағы шекара шамалы бұлыңғыр және қолданылатын жағдайға қарай анықталуы керек. Бұл термин маңызды кешіктірулердің жоқтығын білдіреді. Көптеген жағдайларда "нақты уақыт" деп сипатталатын өңдеу, шындығында "нақты уақытқа жақын" деп сипаттауға дәлірек болар еді. Нақты уақытқа жақын термині дауыс және бейне хабарларын кейінгі уақытта, нақты уақытқа жуық беруді де білдіреді. Бұл үлкен бейнефайлының толық жүктелуін күтпестен, бейнелерді дерлік нақты уақыт режимінде ойнатуға мүмкіндік береді. Бір-бірімен үйлесімсіз деректер базалары, ортақ деректерді "нақты уақытқа жақын" синхрондау/бөлісу үшін, басқа деректер базасы жоспарлы түрде импорттайтын/экспорттайтын ортақ, жазық файлдарға экспорттау/импорттау мүмкіндігіне ие.

Құрылыс әдістері

Нақты уақыт жүйелерін жобалауға көмектесетін бірнеше әдістер бар, мысалы MASCOT – жүйенің бір мезгілде орындалатын құрылымын бейнелейтін, ескі болғанымен өте тиімді әдіс. Басқа мысалдар: HOOD, Real Time UML, AADL, Ravenscar профилі және Real Time Java.