Бағдарламалық жасақтаманы жаңарту - Dynamic software updating

Жылы Информатика, бағдарламалық жасақтаманы жаңарту (ДМУ) қатысты зерттеу аймағы болып табылады жаңарту жұмыс істеп тұрған кезде бағдарламалар. DSU қазіргі уақытта өндірісте кең қолданылмайды. Дегенмен, зерттеушілер DSU-ді жүзеге асырудың әртүрлі жүйелері мен әдістерін әзірледі. Бұл жүйелер әдетте шынайы бағдарламаларда тексеріледі.

Ағымдағы операциялық жүйелер мен бағдарламалау тілдері әдетте DSU ескерілмеген. Осылайша, DSU бағдарламалары әдетте қолданыстағы құралдарды пайдаланады немесе мамандықты пайдаланады құрастырушылар. Бұл компиляторлар бастапқы бағдарламаның семантикасын сақтайды, бірақ динамикалық жаңартылатын бағдарламаны құру үшін бастапқы кодты немесе объект кодын пайдаланады. Зерттеушілер қауіпсіздік пен өнімділікті бағалау үшін DSU-ға сәйкес бағдарламалардың нұсқаларын бастапқы бағдарламамен салыстырады.

Кіріспе

Кез келген жұмыс істейтін бағдарламаны а кортеж , қайда - ағымдағы бағдарлама күйі және - ағымдағы бағдарлама коды. Бағдарламаны жаңартудың динамикалық жүйелері жұмыс істеп тұрған бағдарламаны түрлендіреді жаңа нұсқаға . Ол үшін мемлекет өкілдікке айналуы керек күтеді. Бұл а күй трансформаторы функциясы. Осылайша, DSU бағдарламаны түрлендіреді дейін . Жаңарту қарастырылады жарамды егер және жұмыс істеп тұрған бағдарлама болса ғана нүктелік кортежге дейін азайтылуы мүмкін бағдарламаның жаңа нұсқасының бастапқы нүктесінен қол жетімді, .[1]

Бағдарламадағы динамикалық жаңарту орын алатын орын an деп аталады жаңарту нүктесі. Қолданыстағы DSU енгізілімдері жаңарту нүктелерін өңдеуде әртүрлі. Сияқты кейбір жүйелерде UpStare және PoLUS, орындау кез келген уақытта жаңаруы мүмкін. Женьшень Компилятор жаңарту нүктелері үшін жақсы орындарды анықтауға тырысады, бірақ сонымен бірге бағдарламашымен көрсетілген жаңарту нүктелерін қолдана алады. Кицуне және Экиден барлық жаңарту нүктелерін қолмен көрсетіп, атауын әзірлеушілерден талап ету.

Жаңарту жүйелері қолдайтын бағдарламалық өзгерістердің түрлерімен ерекшеленеді. Мысалға, Ksplice функциялардағы кодтық өзгерістерді ғана қолдайды, және күйлердің өзгеруіне қолдау көрсетпейді. Себебі Ksplice бірінші кезекте жалпы жаңартуларға емес, қауіпсіздікті өзгертуге бағытталған. Қайта, Экиден бағдарламаны кез-келген басқа бағдарламаға, тіпті басқа бағдарламалау тілінде жазылған бағдарламаға да орындай алады. Жүйе дизайнерлері жаңартулар көлемін шектеу арқылы құнды өнімділікті немесе қауіпсіздік кепілдіктерін ала алады. Мысалы, кез келген қауіпсіздік тексерісін жаңарту қауіпсіздік тексеруден өткен жаңартуларға арналған жаңартулар көлемін шектейді. Код пен күйді түрлендіру үшін қолданылатын механизм жүйенің қандай жаңартуларды қолдайтындығына әсер етеді.

DSU жүйелері, құрал ретінде, оларды қолданудың қарапайымдылығы мен әзірлеушілерге түсініктігі бойынша бағалануы мүмкін. Сияқты көптеген DSU жүйелері Женьшень, әртүрлі статикалық талдаулардан өту үшін бағдарламаларды қажет етеді. Бұл талдаулар DSU үшін құнды бағдарламалардың қасиеттерін дәлелдегенімен, олар табиғаты жағынан күрделі және оларды түсіну қиын. Статикалық талдауды қолданбайтын DSU жүйелері мамандандырылған компиляторды қолдануды қажет етуі мүмкін. Кейбір DSU жүйелері статикалық талдауды да, арнайы компиляторларды да қажет етпейді.

DSU жүйесімен жаңартылатын бағдарламалар деп аталады мақсатты бағдарламалар. DSU жүйелерінің академиялық басылымдары кейс-стади ретінде бірнеше мақсатты бағдарламаларды қамтиды. vsftpd, OpenSSH, PostgreSQL, Тор, Apache, GNU Zebra, жадта сақталған, және Редис барлығы әр түрлі жүйелер үшін динамикалық жаңарту мақсаттары болып табылады. Динамикалық жаңартуды қолдайтын бірнеше бағдарлама жазылғандықтан, қолданыстағы бағдарламаларды толықтыру DSU жүйесін практикалық пайдалану үшін бағалаудың құнды құралы болып табылады.

Ұқсас өрістер

Динамикалық жаңарту арқылы шешілетін проблемалық кеңістікті басқалардың қиылысы ретінде қарастыруға болады. Мысалдарға мыналар жатады бақылау пункті, динамикалық байланыстыру, және табандылық. Мысал ретінде мәліметтер базасы болуы керек артқа үйлесімді оның дискідегі файл пішімінің алдыңғы нұсқаларымен динамикалық жаңарту жүйесінен күтілетін күй түрлендіруінің дәл осындай түрін орындау қажет. Сол сияқты, плагин архитектурасы бар бағдарлама жұмыс кезінде жаңа кодты жүктеп, орындай алуы керек.

Ұқсас тәсілдер кейде мақсатта қолданылады динамикалық өлі кодты жою шартты түрде жою өлі немесе қол жетпейтін код жадтағы ізді азайту немесе жылдамдықты жақсарту үшін қалған кодты қайта қосыңыз.[2][3]

Тарих

Бағдарламалық жасақтаманы динамикалық жаңартудың ең алғашқы ізбасары артық жүйелер. Артық ортада қосалқы жүйелер негізгі жүйе істен шыққан жағдайда белсенді есептеулерді бақылауға алуға дайын. Бұл жүйелер негізгі машинаны және а ыстық қосалқы. Ыстық қосалқы бөлшектер мезгіл-мезгіл а бақылау пункті бастапқы жүйенің Егер істен шыққан жағдайда, ыстық қосалқы бөлшек өз орнына өтіп, негізгі машина жаңа ыстық қосалқы құралға айналады. Бұл үлгіні жаңартуға дейін жалпылауға болады. Жаңартылған жағдайда ыстық қосалқы құрал іске қосылып, негізгі жүйе жаңарып, содан кейін жаңартылған жүйе басқаруды қалпына келтіреді.

Бағдарламалық жасақтаманы жаңартудың ең алғашқы шынайы жүйесі DYMOS (Dyатаулы Модификация Sжүйе).[4] 1983 жылы Инсуп Лидің кандидаттық диссертациясында ұсынылған DYMOS интерактивті қолданушы интерфейсіне, компиляторға және жұмыс уақытына қол жеткізе алатын толық интеграцияланған жүйе болды. Модула нұсқа және бастапқы код. Бұл DYMOS-қа жаңартуларды қолданыстағы бағдарламамен тексеруге мүмкіндік берді.

Іске асыру

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

Бұл мәселелердің ешқайсысында канондық шешім жоқ. Әдетте, бір проблемалық аймақта жақсы жұмыс істейтін DSU жүйесі оны басқалармен келісу кезінде жасайды. Мысалы, динамикалық жаңартулардың эмпирикалық тестілеуі жаңарту нүктелерінің санын көбейту қауіпті жаңартулардың көбеюіне әкелетіндігін көрсетеді.[5]

Кодты түрлендіру

DSU жүйелерінің көпшілігі қолданылады ішкі бағдарламалар жаңартудың код бірлігі ретінде; дегенмен, жаңа DSU жүйелері бүкіл бағдарламалық жаңартуларды жүзеге асырады.[6][7]

Егер мақсатты бағдарлама a виртуалды машина тілде VM жаңа кодты жүктеу үшін қолданыстағы инфрақұрылымды қолдана алады, өйткені қазіргі виртуалды машиналар DSU-дан басқа басқа пайдалану жағдайлары үшін жұмыс уақытын жүктеуді қолдайды (негізінен түзету ). The HotSpot JVM жұмыс уақыты кодын және DSU жүйелерін бағыттауды қолдайды Java (бағдарламалау тілі) осы мүмкіндікті қолдана алады.

Сияқты ана тілдерінде C немесе C ++, DSU жүйелері бағдарламаға жанама енгізетін арнайы компиляторларды қолдана алады. Жаңарту кезінде бұл жанама ең жаңа нұсқаны көрсету үшін жаңартылады. Егер DSU жүйесі бұл жанама деректерді статикалық түрде енгізу үшін компиляторды пайдаланбаса, онда оларды орындау кезінде бірге қосады екілік қайта жазу. Екілік қайта жазу - бұл функцияларды қайта бағыттау үшін жұмыс істеп тұрған жергілікті бағдарламаның жадының кескініне төменгі деңгейлі кодты жазу процесі. Бұл бағдарламаның статикалық талдауын қажет етпесе де, ол платформаға өте тәуелді.

Экиден және Кицуне бағдарламаның жаңа кодын толығымен жаңа бағдарламаны іске қосу арқылы жүктеңіз fork-exec немесе динамикалық жүктеу. Содан кейін бар бағдарлама күйі жаңа бағдарламалық кеңістікке ауыстырылады.[6][7]

Мемлекеттік трансформация

Жаңарту кезінде бағдарламаның күйі бастапқы көріністен жаңа нұсқаға ауысуы керек. Бұл деп аталады күйді өзгерту. Мемлекеттік объектіні немесе объектілер тобын түрлендіретін функция а деп аталады трансформатор функциясы немесе күй трансформаторы.

DSU жүйелері трансформатор функцияларын синтездеуге тырысуы мүмкін немесе жасаушыдан оларды қолмен беруін талап ете алады. Кейбір жүйелер трансформаторлардың кейбір элементтерін шығарып, басқаларына әзірлеушілердің кіруін талап етіп, осы тәсілдерді араластырады.

Бұл трансформатор функцияларын бағдарламаның күйіне қолдануға болады, өйткені ескі нұсқа күйінің әрбір бөлігіне қол жеткізуге болады, немесе барлық күйлерді жаңарту уақытында түрлендіреді. Жалқау трансформация жаңартудың тұрақты уақытта аяқталуын қамтамасыз етеді, сонымен қатар объектіге қол жетімділіктің тұрақты күйінде болады. Ашық трансформация жүйені қажет ететін жаңарту кезінде көп шығындарға әкеледі әлемді тоқтату барлық трансформаторлар жұмыс істеп тұрғанда. Алайда, асығыс трансформация компиляторларға жалқау трансформациямен байланысты тұрақты күйдегі шығындардан аулақ бола отырып, мемлекеттік қол жетімділікті толығымен оңтайландыруға мүмкіндік береді.

Қауіпсіздікті жаңартыңыз

DSU жүйелерінің көпшілігі жаңартулар үшін кейбір қауіпсіздік қасиеттерін көрсетуге тырысады. Қауіпсіздікті тексерудің ең кең таралған нұсқасы - қауіпсіздік типі, мұнда жаңарту қауіпсіз деп саналады, егер ол ескі күйде жұмыс жасайтын жаңа код әкелмесе немесе керісінше.

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

Еркіндік типтің қауіпсіздігін дәлелдеудің тағы бір тәсілі, егер кодтың бір бөлігі берілген типтің күйін типті көрсетуді білуді қажет етпесе, қауіпсіз деп саналады. Бұл код мемлекетке кірмейді деп айтуға болады нақты, ол күйге қол жеткізуі мүмкін абстрактілі. Дәлелдеуге немесе жоққа шығаруға болады еркіндік кодтың кез-келген бөліміндегі барлық типтер үшін және DSU жүйесі Ginseng мұны типтің қауіпсіздігін дәлелдеу үшін қолданады.[8][9] Егер функция дәлелденсе қолайсыз, егер ол стекте болса да, оны жаңартуға болады, өйткені ол ескі көріністі пайдаланып күйге кіру арқылы типтік қателік тудырмайды.

Эмпирикалық талдау еркіндік Хайден және басқалардың белсенділігі қауіпсіздігі, бұл екі әдіс те дұрыс жаңартуға мүмкіндік беретінін және қате жаңартуларды жоққа шығаратынын көрсетеді. Алайда жаңарту нүктелерін қолмен таңдау жаңартудың нөлдік қателеріне әкеліп соғады және жаңартудың жиі қол жетімділігіне мүмкіндік береді.[5]

Қолданыстағы жүйелер

DYMOS

DYMOS - бұл ең ерте ұсынылған DSU жүйесі болуымен ерекшеленеді. DYMOS туынды түрінде жазылған бағдарламалар үшін толық интеграцияланған ортадан тұрады Модула, жүйеге а-ға ұқсас командалық интерпретаторға, бастапқы кодқа, компиляторға және жұмыс уақыты ортасына рұқсат беру REPL. DYMOS-та жаңартуларды интерактивті ортада команданы орындайтын қолданушы бастамашылық етеді. Бұл командаға жаңартудың қашан болатынын көрсететін директивалар кіреді шарттар. DYMOS-қа қол жетімді ақпарат іске қосылған мақсатты бағдарламаға қатысты жаңартулардың қауіпсіздігін қамтамасыз етуге мүмкіндік береді.[4]

Ksplice, kpatch және kGraft

Ksplice тек қана бағытталған DSU жүйесі болып табылады Linux ядросы, өзін мамандандырылған DSU жүйелерінің бірі ете отырып, оны қолдайды операциялық жүйенің ядросы мақсатты бағдарлама ретінде. Ksplice бастапқы деңгей пайдаланады айырмашылықтар Linux ядросының ағымдағы және жаңартылған нұсқалары арасындағы өзгерістерді анықтау үшін, содан кейін жұмыс істеп тұрған ядроға өзгерістер енгізу үшін екілік қайта жазуды қолданады.[10] Ksplice-ті оның түпнұсқа авторлары құрған Ksplice Inc сатып алған коммерциялық кәсіпорын ұстады Oracle корпорациясы 2011 жылдың шілдесінде.[11] Ksplice коммерциялық негізде қолданылады және тек Oracle Linux тарату.[12]

SUSE дамыған kGraft тірі ядроны патчтаудың бастапқы көзі ретінде балама ретінде және Қызыл қалпақ сол сияқты жасады kpatch. Олардың екеуі де жұмыс істеп тұрған Linux ядросына функционалды деңгейдегі өзгерістерді қолдануға мүмкіндік береді, бұл ретте орнатылған тірі патчинг механизмдеріне сүйенеді ftrace. KGraft пен kpatch арасындағы негізгі айырмашылық - олардың жаңартылған код бөлімдерінің жұмыс уақытының дәйектілігін қамтамасыз етуі ыстық дақтар қолданылады. kGraft және kpatch қосылуға ұсынылды Linux ядросының негізгі сызығы сәйкесінше 2014 жылдың сәуірінде және 2014 жылдың мамырында,[13][14] және тірі патчингтің минималистік негіздері Linux ядросының магистраліне 4.0 ядролық нұсқасында біріктірілді, ол 2015 жылдың 12 сәуірінде шығарылды.[15]

2015 жылдың сәуір айынан бастап Linux ядросының магистралі ұсынатын kpatch және kGraft-ты жалпы тірі патчтау ядросына көшіру бойынша жұмыс жүргізілуде. Алайда, функциялардың бастапқы және патчталған нұсқалары арасындағы қауіпсіз ауысулар үшін қажет болатын функционалдық деңгей консистенциясы тетіктерін іске асыру кейінге қалдырылды, себебі стектерді шақыру Linux ядросымен қамтамасыз етілген жағдайлар сенімсіз болуы мүмкін құрастыру коды тиісті емес стек жақтаулары; Нәтижесінде, тасымалдау жұмыстары 2015 жылдың қыркүйегіне дейін жалғасуда. Ядролардың шақыру стектерінің сенімділігін арттыру үшін мамандандырылған ақыл-ой тексеруі stacktool Userspace утилитасы сонымен бірге ядроның компиляция уақытын тексеру мақсатында жасалған нысан файлдары және қоңыраулар стегінің әрдайым сақталуын қамтамасыз ету; сонымен қатар қоңырау шоғырларының бір бөлігі ретінде неғұрлым сенімді болуға мүмкіндік ашады ядро уф хабарламалар.[16][17]

Женьшень

Ginseng - бұл жалпы мақсаттағы DSU жүйесі. Бұл тек DSU жүйесі еркіндік қауіпсіздік техникасы, егер олар жаңартылған типтерге нақты қол жеткізе алмаса, стекте болатын функцияларды жаңартуға мүмкіндік береді.

Ginseng а ретінде жүзеге асырылады қайнар көзден компилятор көмегімен жазылған C аралық тіл жақтау OCaml. Бұл компилятор барлық функционалды қоңырауларға және типтегі қол жетімділіктерге жанама енгізеді, бұл Ginseng-ке бағдарламаның толығымен орындалуына тұрақты уақыт үстеме ақысын төлеу арқылы күйді түрлендіруге мүмкіндік береді.[9] Женьшеньнің құрастырушысы дәлелдейді еркіндік барлық бастапқы бағдарламаның және динамикалық патчтардың қасиеттері.

Ginseng-тің кейінгі нұсқалары транзакциялық қауіпсіздік ұғымын қолдайды. Бұл әзірлеушілерге функционалды қоңыраулар тізбегін логикалық бірлік ретінде түсіндіруге мүмкіндік береді, жаңартулардың бағдарламалық семантиканы белсенділіктің қауіпсіздігімен анықталмайтын тәсілдермен бұзуына жол бермейді. еркіндік қауіпсіздік. Мысалы, екі нұсқасында OpenSSH Ginseng авторлары зерттеген кезде пайдаланушыны тексерудің маңызды коды бірізділікпен шақырылған екі функция арасында ауыстырылды. Егер бірінші функцияның бірінші нұсқасы орындалса, жаңарту орын алса және екінші функцияның жаңа нұсқасы орындалса, онда тексеру ешқашан орындалмас еді. Бұл бөлімді транзакция ретінде белгілеу жаңартудың тексерудің орын алмауына кепілдік береді.[18]

UpStare

UpStare - бұл бірегей жаңарту механизмін қолданатын DSU жүйесі, стек қайта құру. Бағдарламаны UpStare көмегімен жаңарту үшін әзірлеуші ​​кез-келген ықтимал стек фреймдерінің арасындағы картаны анықтайды. UpStare бұл картаны кез-келген сәтте кез-келген уақытта, кез-келген ағындармен және кез-келген функциялармен стакта тұрған бағдарламаны жедел жаңарту үшін қолдана алады.[19]

PoLUS

PoLUS - бұл екілік-қайта жазылатын DSU жүйесі C. Ол модификацияланбаған бағдарламаларды орындаудың кез келген нүктесінде жаңарта алады. Функцияларды жаңарту үшін ол жаңа бағытқа қайта бағыттау үшін мақсатты функцияның алғы сөзін қайта жазады, бұл қайта бағыттауды бірнеше нұсқада тізбектейді. Бұл жаңартылмаған функциялардың тұрақты күйін болдырмайды.[20]

Катана

Катана - қолданушы режимі үшін шектеулі динамикалық жаңартуды (Ksplice және оның айырларына ұқсас) қамтамасыз ететін зерттеу жүйесі ELF екілік файлдар. «Катана» патч-моделі ELF объектілері деңгейінде жұмыс істейді және компиляция мақсаты ELF болған кезде тілдік-агностикалық қабілетке ие.

Кицуне және Экиден

Экиден және Кицуне - бұл DSU жүйесінің екі нұсқасы, ол бағдарламалық жасақтамаға арналған DSU-тің мемлекеттік аударым стилін жүзеге асырады. C. Экиден мен Китсуне бір бағдарламаның функцияларын жаңартудың орнына, екі орындаудың арасында қажетті күйді ауыстыра отырып, бүкіл бағдарламалар бойынша жаңартуларды орындайды. Экиден мұны жаңа бағдарламаны іске қосу арқылы жүзеге асырады UNIX идиома fork-exec, мақсатты бағдарламаның күйін сериялау және оны беру үшін Kitsune пайдаланады динамикалық байланыстыру «орнында» мемлекеттік трансфертті жүзеге асыруға. Kitsune Экиденнің кодтық базасынан алынған және оны Экиденнің кейінгі нұсқасы деп санауға болады.

Экиден мен Кицуне сонымен бірге олардың мамандандырылған жұмыс уақыттары немесе компиляторлар емес, бірінші кезекте қолданбалы деңгейдегі кітапханалар ретінде іске асырылуымен ерекшеленеді. Осылайша, Ekiden немесе Kitsune-ді қолдану үшін қосымшаны жасаушы тасымалданатын күйді қолмен белгілеп, бағдарламада жаңартулар орын алуы мүмкін нүктелерді қолмен таңдауы керек. Бұл процесті жеңілдету үшін Kitsune-ге а. Іске асыратын мамандандырылған компилятор кіреді доменге арналған тіл күй трансформаторларын жазуға арналған.[6][7]

Эрланг

Эрланг бағдарламалық жасақтаманың динамикалық жаңартылуын қолдайды, дегенмен бұл әдетте «ыстық код жүктеу «. Erlang жаңартуда қауіпсіздік кепілдігін талап етпейді, бірақ Erlang мәдениеті жасаушыларға қорғаныс стилінде жазуды ұсынады, ол жаңарту кезінде пайда болған қателіктерді керемет өңдейді.[дәйексөз қажет ]

Pymoult

Pymoult - бұл Python-да жазылған динамикалық жаңартудың прототиптік платформасы. Ол басқа жүйелерден көптеген әдістерді жинақтап, олардың үйлесуіне және конфигурациясына мүмкіндік береді. Бұл платформаның мақсаты - әзірлеушілерге өз қажеттіліктеріне сәйкес келетін жаңарту әдістерін таңдауға мүмкіндік беру. Мысалы, Kinsune немесе Ekiden-дегідей қосымшаның барлық кодын өзгерте отырып, Ginseng-тегідей күйді жаңартуды біріктіруге болады.[21][22]

Microsoft Visual C ++

Microsoft корпорациясы Microsoft Visual C ++ үшін патчтардың функционалдық дұрыстығын сақтай отырып, жекелеген C ++ функцияларын түзетуді қолдайтын ішкі патч-технологиясын қолданады. Қазіргі уақытта Azure SQL мәліметтер қорындағы SQL Server қосымшалары белгілі.[23]

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Гупта, Дипак; Джалоте, Панкай; Баруа, Гаутам (1996). «Онлайн бағдарламалық жасақтама нұсқасын өзгертуге арналған ресми негіз» (PDF). Бағдарламалық жасақтама бойынша IEEE транзакциялары. 22 (2): 120–131. дои:10.1109/32.485222. Архивтелген түпнұсқа (PDF) 2014-04-07.
  2. ^ Пол, Матиас Р.; Фринке, Аксель С. (1997-10-13) [алғашқы жарияланған 1991], FreeKEYB - жақсартылған DOS пернетақтасы және консоль драйвері (Пайдаланушы нұсқаулығы) (v6.5 редакция). [1] (Ескерту. K3PLUS ізбасары FreeKEYB - бұл динамикалық жүктелетін көптеген ерекшеліктері бар, толығымен қайта жасақталатын драйвер. Ол байт деңгейіндегі түйіршіктің ерекше формасын жүзеге асырады. динамикалық өлі кодты жою және қоныс аудару техникасы жүктеме уақыты Сонымен қатар өзін-өзі өзгертетін код және қайта конфигурациялау жұмыс уақыты оның жадының ізін минимумға дейін азайту үшін канондық форма аппараттық құралға, амалдық жүйеге, басқа ортаға және драйвердің конфигурациясына, сондай-ақ таңдалған функциялар жиынтығы мен тіліне байланысты (ықтимал тіркесімдердің шектеусіз саны үшін жүздеген опциялары бар алпысқа жуық конфигурация қосқыштары). Құру процесі а макро ассемблер тәуелділікті және туындату үшін уақытша екілік файлдарды талдайтын өңдеуге дейінгі және кейінгі автоматты құралдардың құрылымы кодтың өзгеруі мета деректер нәтижеге енуі керек орындалатын файл бірге екілік код және өздігінен бас тарту, демалу және қондырғы тиеу драйвердің жұмыс уақытының кескінін (коды мен деректерін) сұраныс бойынша динамикалық түрде (қайта) біріктіру, қайта жүктеу, өзгерту, жаңарту немесе түсіру. Күрделілігі пайдаланушы үшін өңдеу қалыпты (жартылай) монолитті драйвермен бірдей болатындай етіп жеке дербес файлда жасырылады /TSR.
  3. ^ Пол, Матиас Р.; Фринке, Аксель С. (2006-01-16), FreeKEYB - жетілдірілген халықаралық DOS пернетақтасы және консоль драйвері (Пайдаланушы нұсқаулығы) (v7 алдын-ала басылым).
  4. ^ а б Ли, Инсуп (1983). Dymos: динамикалық түрлендіру жүйесі (Философия докторы (информатика) тезисі). Висконсин университеті - Мэдисон. Мұрағатталды түпнұсқасынан 2003-09-16 жж.
  5. ^ а б Хейден, Крис; Смит, Эдвард К .; Хардисти, Эрик; Хикс, Майкл; Фостер, Джефери (2011). «Жүйелі тестілеудің көмегімен динамикалық бағдарламалық жасақтаманың қауіпсіздігін бағалау» (PDF). Бағдарламалық жасақтама бойынша IEEE транзакциялары. IEEE (99).[тұрақты өлі сілтеме ]
  6. ^ а б c Хейден, Крис; Смит, Эдвард К .; Хикс, Майкл; Фостер, Джефери (2011). «Жұмыс уақытын нақты және тиімді жаңартуға арналған мемлекеттік аударым» (PDF). Data Engineering Workshops (ICDEW), 2011 IEEE 27-ші Халықаралық конференциясы. IEEE: 179–184.
  7. ^ а б c Хейден, Крис; Смит, Эдвард К .; Денчев, Михаил; Хикс, Майкл; Фостер, Джефери (2011). «Kitsune: тиімді, жалпы мақсаттағы бағдарламалық жасақтаманы C-ға жаңарту» (PDF). Журналға сілтеме жасау қажет | журнал = (Көмектесіңдер)
  8. ^ Стойл, Гарет; Хикс, Майкл; Биерман, Гэвин; Севолл, Петр; Неамтиу, Юлиан (2005). «Mutatis mutandis: қауіпсіз және болжамды динамикалық бағдарламалық жасақтаманы жаңарту» (PDF). Бағдарламалау тілдерінің принциптері бойынша ACM конференциясының материалдары.
  9. ^ а б Неамтиу, Юлиан; Хикс, Майкл; Стойл, Гарет; Ориол, Мануэль (2006). «Практикалық бағдарламалық жасақтаманы C үшін жаңарту» (PDF). ACM SIGPLAN ескертулері. 41 (6): 72–83. CiteSeerX  10.1.1.625.4663. дои:10.1145/1133255.1133991.
  10. ^ Арнольд, Джефф; Кашоук, М.Франс (2009). Ksplice: автоматты түрде қайта жүктелмейтін ядроны жаңарту (PDF). Компьютерлік жүйелер бойынша 4-ші ACM Еуропалық конференциясының материалдары. б. 187. дои:10.1145/1519065.1519085. ISBN  9781605584829.
  11. ^ «Oracle және Ksplice». Алынған 2011-07-21.
  12. ^ «Oracle Ksplice жұмысына кірісу». oracle.com. Алынған 2014-08-02.
  13. ^ Поймбуф, Джош (2014-05-01). «kpatch: динамикалық ядроны патчтау». LWN.net. Алынған 2014-07-23.
  14. ^ Корбет, Джонатан (2014-04-30). «KGraft алғашқы ұсынысы». LWN.net. Алынған 2014-11-07.
  15. ^ «Linux ядросы 4.0, 1.2 бөлім. Тікелей түзету». kernelnewbies.org. 2015-04-26. Алынған 2015-05-14.
  16. ^ Корбет, Джонатан (2015-09-30). «Жинақ уақытының стегін тексеру». LWN.net. Алынған 2015-10-02.
  17. ^ Поймбуф, Джош (2015-09-24). «Linux ядросының құжаттамасы: Documentation / stack-validation.txt (v13 патчынан)». LWN.net. Алынған 2015-10-02.
  18. ^ Неамтиу, Юлиан; Хикс, Майкл; Фостер, Джеффри; Пратикакис, Поливиос (2008). «Бағдарламалық жасақтаманы динамикалық тұрғыдан жаңартуға және қауіпсіз параллельді бағдарламалауға арналған мәтінмәндік әсерлер». Бағдарламалау тілдерінің принциптері бойынша {ACM} конференциясының материалдары (POPL): 37–58.
  19. ^ Макрис, Кристис; Баззи, Рида А. (2009). «Стек реконструкциясын қолдана отырып, тез арада көп ағынды динамикалық бағдарламалық жаңартулар» (PDF). USENIX жыл сайынғы техникалық конференциясының 2009 конференциясының материалдары.
  20. ^ Чен, Хайбо; Ю, Джи; Чен, Ронг; Цанг, Бинью; Yew, Pen-Chung (2007). «ПОЛУС: тікелей эфирді жаңарту жүйесі» (PDF). Бағдарламалық жасақтама жасау бойынша 29-шы Халықаралық конференция: 271–281. Архивтелген түпнұсқа (PDF) 2012-04-26. Алынған 2011-12-18.
  21. ^ Себастиан Мартинес; Фабиен Дагнат; Джереми Буиссон (2013). «Python қолдану арқылы DSU әдістерін прототиптеу». Бағдарламалық жасақтаманы жаңартудағы ыстық тақырыптар бойынша 5-ші семинардың материалдары (HotSWUp'13).
  22. ^ Мартинес, Себастиан (2013-03-06). «Pymoult». Битбелек. Алынған 2014-11-27.
  23. ^ «Azure SQL дерекқорындағы SQL Server қозғалтқышын ыстық түзету». TECHCOMMUNITY.MICROSOFT.COM. 2019-09-11. Алынған 2019-09-15.

Сыртқы сілтемелер