Dinamik dasturiy ta'minotni yangilash - Dynamic software updating

Yilda Kompyuter fanlari, dasturiy ta'minotni dinamik ravishda yangilash (DSU) tegishli tadqiqot sohasidir yangilash ular ishlayotgan vaqtda dasturlar. DSU hozirda sanoatda keng qo'llanilmaydi. Biroq, tadqiqotchilar DSUni amalga oshirish uchun turli xil tizimlar va texnikalarni ishlab chiqdilar. Ushbu tizimlar odatda real dasturlarda sinovdan o'tkaziladi.

Amaldagi operatsion tizimlar va dasturlash tillari odatda DSU ni hisobga olgan holda ishlab chiqilmagan. Shunday qilib, DSU dasturlari odatda mavjud vositalardan foydalanadi yoki ixtisoslikni amalga oshiradi kompilyatorlar. Ushbu kompilyatorlar asl dasturning semantikasini saqlaydi, lekin dinamik ravishda yangilanadigan dastur ishlab chiqarish uchun manba kodini yoki ob'ekt kodini ishlatadi. Tadqiqotchilar xavfsizlik va ishlashga sarflanadigan xarajatlarni baholash uchun DSU-ga mos dasturlarning variantlarini dastlabki dastur bilan taqqoslashadi.

Kirish

Har qanday ishlaydigan dastur haqida o'ylash mumkin panjara , qayerda joriy dastur holati va joriy dastur kodi. Dinamik dasturiy ta'minotni yangilash tizimlari ishlaydigan dasturni o'zgartiradi yangi versiyasiga . Buning uchun davlatni vakolatxonaga aylantirish kerak kutmoqda. Buning uchun a holat transformatori funktsiya. Shunday qilib, DSU dasturni o'zgartiradi ga . Yangilanish ko'rib chiqiladi yaroqli agar va faqat ishlaydigan dastur bo'lsa nuqta katakchasiga qisqartirilishi mumkin dasturning yangi versiyasining boshlang'ich nuqtasidan boshlab, .[1]

Dinamik yangilanish sodir bo'ladigan dasturdagi joy an yangilash nuqtasi. Mavjud DSU dasturlari yangilanish nuqtalarini davolashda juda farq qiladi. Kabi ba'zi tizimlarda UpStare va PoLUS, yangilanish bajarish paytida istalgan vaqtda yuz berishi mumkin. Ginseng Kompilyator yangilanish nuqtalari uchun yaxshi joylarni aniqlashga harakat qiladi, lekin dasturchilar tomonidan belgilangan yangilanish nuqtalaridan ham foydalanishi mumkin. Kitsune va Ekiden barcha yangilanish nuqtalarini qo'lda belgilashni va nomlashni ishlab chiquvchilardan talab qilish.

Yangilash tizimlari qo'llab-quvvatlanadigan dasturlarni o'zgartirish turlari bilan farq qiladi. Masalan, Ksplice faqat funktsiyalardagi kod o'zgarishini qo'llab-quvvatlaydi va davlat vakolatxonasidagi o'zgarishlarni qo'llab-quvvatlamaydi. Buning sababi shundaki, Ksplice birinchi navbatda umumiy yangilanishlarni emas, balki xavfsizlikni o'zgartirishni maqsad qiladi. Farqli o'laroq, Ekiden dasturni bajarilishi mumkin bo'lgan boshqa har qanday dasturga, hatto boshqa dasturlash tilida yozilgan dasturga yangilashi mumkin. Tizim dizaynerlari yangilanishlar doirasini cheklash orqali qimmatli ishlash yoki xavfsizlik kafolatlarini olishlari mumkin. Masalan, har qanday xavfsizlik tekshiruvini yangilang ushbu xavfsizlik tekshiruvidan o'tgan yangilanishlarni yangilash doirasini cheklaydi. Kodni va holatni o'zgartirishda ishlatiladigan mexanizm tizimning qanday yangilanishlarni qo'llab-quvvatlashiga ta'sir qiladi.

DSU tizimlari, vosita sifatida, ulardan foydalanish qulayligi va ishlab chiquvchilarga aniqligi bilan ham baholanishi mumkin. Kabi ko'plab DSU tizimlari Ginseng, turli xil statik tahlillarni o'tkazish uchun dasturlarni talab qiladi. Ushbu tahlillar DSU uchun qimmatli dasturlarning xususiyatlarini isbotlasa-da, ular tabiatan murakkab va ularni tushunish qiyin. Statik tahlilni ishlatmaydigan DSU tizimlari maxsus kompilyatordan foydalanishni talab qilishi mumkin. Ba'zi DSU tizimlari na statik tahlilni, na maxsus kompilyatorlarni talab qiladi.

DSU tizimi tomonidan yangilanadigan dasturlar deb nomlanadi maqsadli dasturlar. DSU tizimlarining akademik nashrlari odatda amaliy tadqiqotlar uchun bir nechta maqsadli dasturlarni o'z ichiga oladi. vsftpd, OpenSSH, PostgreSQL, Tor, Apache, GNU Zebra, yodlangan va Redis barchasi turli xil tizimlar uchun dinamik yangilanadigan maqsadlardir. Bir nechta dastur dinamik yangilanishni qo'llab-quvvatlagan holda yozilganligi sababli, mavjud dasturlarni jihozlash DSU tizimini amaliy foydalanish uchun baholashning qimmatli vositasidir.

Tegishli maydonlar

Dinamik yangilash orqali hal qilinadigan muammoli maydonni boshqalarning kesishishi deb hisoblash mumkin. Bunga misollar kiradi nazorat punkti, dinamik bog'lanish va qat'iyat. Masalan, bo'lishi kerak bo'lgan ma'lumotlar bazasi orqaga qarab mos keladi diskdagi fayl formatining oldingi versiyalari bilan, dinamik yangilanish tizimidan kutilgan bir xil holat o'zgarishini amalga oshirishi kerak. Xuddi shu tarzda, plagin arxitekturasiga ega bo'lgan dastur ish vaqtida yangi kodni yuklashi va bajarishi kerak.

Shunga o'xshash usullar ba'zida ushbu maqsadlarda ham qo'llaniladi o'lik kodni dinamik ravishda yo'q qilish shartli ravishda olib tashlash o'lik yoki ulanib bo'lmaydigan kod yuk paytida yoki ish vaqtida va xotiraning izini minimallashtirish yoki tezlikni yaxshilash uchun qolgan kodni qayta biriktiring.[2][3]

Tarix

Dasturiy ta'minotni dinamik ravishda yangilashning eng dastlabki kashfiyotchisi ortiqcha tizimlar. Ortiqcha sharoitda, zaxira tizimlar asosiy tizim ishlamay qolganda, faol hisoblashni boshqarish uchun tayyor bo'ladi. Ushbu tizimlarda asosiy mashina va a mavjud issiq zaxira. Issiq zaxira vaqti-vaqti bilan nazorat punkti asosiy tizim. Agar ishlamay qolsa, issiq zaxira o'z zimmasiga olinadi va asosiy mashina yangi issiq zaxira qismiga aylanadi. Ushbu naqshni yangilash uchun umumlashtirish mumkin. Yangilangan taqdirda, issiq zaxira faollashadi, asosiy tizim yangilanadi va keyin yangilangan tizim boshqaruvni davom ettiradi.

Dastlabki haqiqiy dasturiy ta'minotni yangilash tizimi DYMOS (Dyism Mofarqlanish Stizim).[4] 1983 yilda Insup Lining nomzodlik dissertatsiyasida taqdim etilgan DYMOS to'liq integratsiyalashgan tizim bo'lib, u interfaol foydalanuvchi interfeysi, kompilyator va ish vaqti uchun kirish huquqiga ega edi. Modula variant va manba kodi. Bu DYMOS-ga yangilanishlarni mavjud dasturga qarab tekshirishga imkon berdi.

Amalga oshirish

DSU tizimlari yangi kodni ishlaydigan dasturga yuklashi va mavjud holatni yangi kod tushunadigan formatga o'zgartirishi kerak. DSU-ning ko'plab motivatsion foydalanish holatlari vaqt uchun juda muhim bo'lganligi sababli (masalan, jonli va himoyasiz tizimda xavfsizlik tuzatishini o'rnatish), DSU tizimlari etarli darajada ta'minlanishi kerak mavjudligini yangilash. Ba'zi DSU tizimlari yangilanishlarni qo'llashdan oldin ularning xavfsizligini ta'minlashga harakat qilishadi.

Ushbu muammolarning hech biriga kanonik echim yo'q. Odatda, bitta muammoli sohada yaxshi ishlaydigan DSU tizimi buni boshqalar bilan savdo qilishda amalga oshiradi. Masalan, dinamik yangilanishlarning empirik sinovlari shuni ko'rsatadiki, yangilanish punktlari sonining ko'payishi xavfli yangilanishlar sonining ko'payishiga olib keladi.[5]

Kodni o'zgartirish

Ko'pgina DSU tizimlari foydalanadi subroutines yangilanishlar uchun kod birligi sifatida; ammo, yangi DSU tizimlari butun dastur yangilanishlarini amalga oshiradi.[6][7]

Agar maqsadli dastur a virtual mashina til, VM yangi kodni yuklash uchun mavjud infratuzilmani ishlatishi mumkin, chunki zamonaviy virtual mashinalar DSUdan tashqari boshqa foydalanish holatlarida ish vaqtini yuklashni qo'llab-quvvatlaydi (asosan disk raskadrovka ). The HotSpot JVM ish vaqti kodini yuklashni va DSU tizimlarini yo'naltirishni qo'llab-quvvatlaydi Java (dasturlash tili) ushbu xususiyatdan foydalanishi mumkin.

Kabi ona tillarida C yoki C ++, DSU tizimlari dasturga bilvosita qo'shadigan maxsus kompilyatorlardan foydalanishi mumkin. Yangilanish vaqtida ushbu bilvosita yangi versiyaga ishora qilish uchun yangilanadi. Agar DSU tizimi ushbu indektsiyalarni statik ravishda qo'shish uchun kompilyatordan foydalanmasa, ularni ish vaqtida qo'shib qo'yadi ikkilik qayta yozish. Ikkilik qayta yozish - bu funktsiyalarni qayta yo'naltirish uchun ishlaydigan mahalliy dasturning xotira tasviriga past darajadagi kodni yozish jarayoni. Buning uchun dasturning statik tahlili talab qilinmasa ham, u platformaga juda bog'liq.

Ekiden va Kitsune yoki orqali butunlay yangi dasturni ishga tushirish orqali yangi dastur kodini yuklang fork-exec yoki dinamik yuklash. Keyinchalik mavjud dastur holati yangi dastur maydoniga o'tkaziladi.[6][7]

Davlatning o'zgarishi

Yangilash paytida dastur holati asl nusxadan yangi versiyaning vakolatxonasiga aylantirilishi kerak. Bu deb nomlanadi davlatni o'zgartirish. Holat ob'ektini yoki ob'ektlar guruhini o'zgartiradigan funktsiya a deb nomlanadi transformator funktsiyasi yoki holat transformatori.

DSU tizimlari transformator funktsiyalarini sintez qilishga urinishi mumkin yoki ishlab chiquvchidan ularni qo'lda etkazib berishni talab qilishi mumkin. Ba'zi tizimlar ushbu yondashuvlarni aralashtirib, transformatorlarning ba'zi elementlari haqida xulosa chiqaradi, boshqalari uchun ishlab chiquvchi kiritishni talab qiladi.

Ushbu transformator funktsiyalari dastur holatiga nisbatan dangasa bilan qo'llanilishi mumkin, chunki eski versiyaning har bir qismiga kirish mumkin yoki ishtiyoq bilan barcha holatlarni yangilash vaqtida o'zgartiradi. Dangasa transformatsiya yangilanishning doimiy vaqt ichida bajarilishini ta'minlaydi, shuningdek, ob'ektga kirish uchun barqaror yukni keltirib chiqaradi. Yangilash paytida ishtiyoqli transformatsiya ko'proq xarajatlarga olib keladi va tizim talab qiladi dunyoni to'xtating barcha transformatorlar ishlaydi. Biroq, g'ayratli transformatsiya kompilyatorlarga davlatga kirishni to'liq optimallashtirishga imkon beradi va bu dangasa transformatsiya bilan bog'liq bo'lgan doimiy yukning oldini oladi.

Xavfsizlikni yangilang

Ko'pgina DSU tizimlari yangilanishlar uchun ba'zi xavfsizlik xususiyatlarini ko'rsatishga harakat qilishadi. Xavfsizlikni tekshirishning eng keng tarqalgan varianti - bu xavfsizlik turi, agar u eski davlat vakolatxonasida yangi kod ishlashiga olib kelmasa yoki aksincha bo'lsa, yangilanish xavfsiz hisoblanadi.

Turning xavfsizligi odatda ikkita xususiyatdan birini ko'rsatib tekshiriladi, faollik xavfsizligi yoki bepul xavfsizlik. Agar yangilangan funktsiya mavjud bo'lmasa, dastur faollik uchun xavfsiz hisoblanadi chaqiruv to'plami yangilash vaqtida. Bu xavfsizlikni isbotlaydi, chunki boshqaruv hech qachon ma'lumotlarning yangi vakolatxonalariga kiradigan eski kodga qaytolmaydi.

Kamchiliklari - erkinlik bu turdagi xavfsizlikni isbotlashning yana bir usuli, bu erda kodning bir turi, agar u ma'lum bir turdagi holatga turini namoyish qilishni bilishni talab qilmasa, xavfsiz deb hisoblanadi. Ushbu kod davlatga kira olmaydi deb aytish mumkin aniq, holatga kirishi mumkin bo'lsa mavhum ravishda. Buni isbotlash yoki rad etish mumkin erkinlik kodning istalgan qismidagi barcha turlar uchun va DSU tizimi Ginseng ushbu turdagi xavfsizlikni isbotlash uchun foydalanadi.[8][9] Agar funktsiya tasdiqlangan bo'lsa bepul, u stakada jonli bo'lsa ham yangilanishi mumkin, chunki u eski vakolatxonadan foydalanib holatga kirish orqali xatoga yo'l qo'ymaydi.

Ning empirik tahlili erkinlik Xayden va boshqalarning faolligi xavfsizligi shuni ko'rsatadiki, har ikkala usul ham eng to'g'ri yangilanishlarga yo'l qo'yadi va eng noto'g'ri yangilanishlarni rad etadi. Biroq, yangilash punktlarini qo'lda tanlash nolga teng xatolarga olib keladi va shunga qaramay, tez-tez yangilanishga imkon beradi.[5]

Mavjud tizimlar

DYMOS

DYMOS eng qadimgi DSU tizimi bo'lganligi bilan ajralib turadi. DYMOS lotin tilida yozilgan dasturlar uchun to'liq birlashtirilgan muhitdan iborat Modula, tizimga buyruq tarjimoni, manba kodi, kompilyator va ish vaqti muhitiga kirishga ruxsat berish, a REPL. DYMOS-da yangilanishlar interaktiv muhitda buyruqni bajaradigan foydalanuvchi tomonidan boshlanadi. Ushbu buyruqqa qachon yangilanish bo'lishi mumkinligini ko'rsatadigan ko'rsatmalar kiradi qachon-sharoit. DYMOS-ga mavjud bo'lgan ma'lumotlar, ishlaydigan dasturga nisbatan yangilanishlarning xavfsizligini ta'minlashga imkon beradi.[4]

Ksplice, kpatch va kGraft

Ksplice faqat maqsadli DSU tizimidir Linux yadrosi, o'zini qo'llab-quvvatlaydigan ixtisoslashgan DSU tizimlaridan biriga aylantiradi operatsion tizim yadrosi maqsadli dastur sifatida. Ksplice manba darajasidan foydalanadi farqlar Linux yadrosining joriy va yangilangan versiyalari orasidagi o'zgarishlarni aniqlash uchun, so'ngra ishlayotgan yadroga o'zgartirishlarni kiritish uchun ikkilik qayta yozishdan foydalaniladi.[10] Ksplice tomonidan uning asl mualliflari tomonidan tashkil etilgan tijorat korxonasi tomonidan ta'minlangan Ksplice Inc. tomonidan sotib olingan Oracle korporatsiyasi 2011 yil iyul oyida.[11] Ksplice tijorat asosida va faqat Oracle Linux tarqatish.[12]

SUSE ishlab chiqilgan kGraft jonli yadrolarni tuzatish uchun ochiq manbali alternativa sifatida va Qizil shapka xuddi shunday qildi kpatch. Ularning ikkalasi ham ishlaydigan Linux yadrosiga funktsiya darajasidagi o'zgarishlarni qo'llashga imkon beradi va shu bilan o'rnatilgan jonli patching mexanizmlariga tayanadi ftrace. KGraft va kpatch o'rtasidagi asosiy farq ularning yangilangan kod bo'limlarining ishlash vaqtining izchilligini ta'minlashidir issiq yamaqlar qo'llaniladi. kGraft va kpatch qo'shilishi uchun taqdim etildi Linux yadrosi magistral liniyasi 2014 yil aprel va 2014 yil may oylarida,[13][14] va jonli patching uchun minimalist asoslar Linux yadrosi magistral liniyasiga birlashtirildi 4.0 yadrosi versiyasida 2015 yil 12 aprelda chiqarilgan.[15]

2015 yil aprel oyidan boshlab kpatch va kGraft-ni Linux yadrosi magistral liniyasi tomonidan taqdim etilgan umumiy jonli patching yadrosiga o'tkazish bo'yicha ishlar olib borilmoqda. Biroq, funktsiyalarning asl va yamalgan versiyalari o'rtasida xavfsiz o'tish uchun zarur bo'lgan funktsional darajadagi barqarorlik mexanizmlarini amalga oshirish kechiktirildi, chunki stacklarni chaqirish Linux yadrosi tomonidan taqdim etilgan vaziyatlarda ishonchsiz bo'lishi mumkin yig'ilish kodi tegishli bo'lmagan holda ketma-ket ramkalar; Natijada, ko'chirish ishlari 2015 yil sentyabr oyiga qadar davom etmoqda. Yadro qo'ng'iroqlari to'plamlarining ishonchliligini oshirishga harakat qilish uchun maxsus tibbiy tekshiruv stacktool userpace yordam dasturi ham yadroning kompilyatsiya vaqtini tekshirish maqsadida ishlab chiqilgan ob'ekt fayllari va qo'ng'iroqlar to'plamining har doim saqlanib turishini ta'minlash; ning bir qismi sifatida yanada ishonchli qo'ng'iroq staklariga erishish imkoniyatini ochadi yadro xafa xabarlar.[16][17]

Ginseng

Ginseng umumiy maqsadli DSU tizimidir. Bu ishlatadigan yagona DSU tizimi erkinlik xavfsizlik texnikasi, agar ular yangilangan turlarga aniq kirish imkoniga ega bo'lmasalar, stekda ishlaydigan funktsiyalarni yangilashga imkon beradi.

Ginseng a sifatida amalga oshiriladi manbadan manbaga kompilyator yordamida yozilgan S oraliq til ramka OCaml. Ushbu kompilyator barcha funktsiya chaqiruvlariga va kirishga kirishga bilvosita qo'shadi, bu Ginsengga dasturning bajarilishi uchun doimiy ish haqi yukini to'lash evaziga vaziyatni dangasa o'zgartirishga imkon beradi.[9] Ginsengning kompilyatori buni isbotlaydi erkinlik butun boshlang'ich dasturning xususiyatlari va dinamik yamaqlar.

Ginsengning keyingi versiyalari tranzaksiya xavfsizligi tushunchasini qo'llab-quvvatlaydi. Bu ishlab chiquvchilarga mantiqiy birlik sifatida funktsiya chaqiruvlari ketma-ketligini izohlash imkonini beradi, bu esa yangilanishlarni dasturning semantikasini faollik xavfsizligi bilan ham aniqlanmaydigan usullar bilan buzilishiga yo'l qo'ymaydi. erkinlik xavfsizlik. Masalan, ning ikkita versiyasida OpenSSH Ginseng mualliflari tomonidan tekshirilganda, foydalanuvchini tasdiqlashning muhim kodi ketma-ketlikda chaqirilgan ikkita funktsiya o'rtasida o'tkazildi. Agar birinchi funktsiyaning birinchi versiyasi bajarilgan bo'lsa, yangilanish sodir bo'lgan va ikkinchi funktsiyaning yangi versiyasi bajarilgan bo'lsa, u holda tekshirish hech qachon amalga oshirilmaydi. Ushbu bo'limni tranzaktsiya sifatida belgilash, yangilanish tekshiruvni amalga oshirishga to'sqinlik qilmasligini ta'minlaydi.[18]

UpStare

UpStare - bu noyob yangilanish mexanizmidan foydalanadigan DSU tizimi, stekni qayta qurish. Dasturni UpStare bilan yangilash uchun ishlab chiquvchi har qanday mumkin bo'lgan stek freymlari o'rtasida xaritalashni belgilaydi. UpStare ushbu xaritalashni dasturni istalgan nuqtada, istalgan miqdordagi iplar bilan va har qanday funktsiyalar bilan zudlik bilan yangilash uchun ishlatishi mumkin.[19]

PoLUS

PoLUS - bu ikkilik qayta yoziladigan DSU tizimi C. O'zgartirilmagan dasturlarni bajarilishining istalgan nuqtasida yangilashga qodir. Funksiyalarni yangilash uchun u yangi funktsiyaga yo'naltirish uchun maqsad funktsiyasining preludiyasini qayta yozadi va ushbu yo'naltirishlarni bir nechta versiyalarda zanjirlaydi. Bu yangilanmagan funktsiyalarning barqaror holatini oldini oladi.[20]

Katana

Katana - foydalanuvchi rejimi uchun cheklangan dinamik yangilanishni ta'minlaydigan (Ksplice va uning vilkalariga o'xshash) tadqiqot tizimi ELF ikkiliklar. Katana patching modeli ELF moslamalari darajasida ishlaydi va shu bilan kompilyatsiya maqsadi ELF bo'lgan taqdirda til-agnostik xususiyatga ega.

Kitsune va Ekiden

Ekiden va Kitsune - bu DSU tizimining ikkita variantidir, bu DSU-da yozilgan dasturlar uchun davlat-transfer uslubini amalga oshiradi. C. Bitta dastur ichidagi funktsiyalarni yangilash o'rniga, Ekiden va Kitsune ikkita ijro o'rtasida kerakli holatni o'tkazib, butun dasturlar bo'yicha yangilanishlarni amalga oshiradilar. Ekiden buni yordamida yangi dasturni ishga tushirish orqali amalga oshiradi UNIX iborasi fork-exec, maqsadli dastur holatini ketma-ketlashtirish va uni uzatish uchun Kitsune foydalanadi dinamik bog'lanish "joyida" davlat o'tkazilishini amalga oshirish. Kitsune Ekiden kod bazasidan olingan bo'lib, uni Ekidenning keyingi versiyasi deb hisoblash mumkin.

Ekiden va Kitsune shuningdek, ular ixtisoslashtirilgan ish vaqti yoki kompilyator emas, balki birinchi navbatda dastur darajasidagi kutubxonalar sifatida amalga oshirilganligi bilan ajralib turadi. Shunday qilib, Ekiden yoki Kitsune-dan foydalanish uchun dastur ishlab chiqaruvchisi uzatiladigan holatni qo'lda belgilashi va dasturda yangilanish sodir bo'lishi mumkin bo'lgan nuqtalarni qo'lda tanlashi kerak. Ushbu jarayonni engillashtirish uchun Kitsune a dasturini bajaradigan maxsus kompilyatorni o'z ichiga oladi domenga xos til holat transformatorlarini yozish uchun.[6][7]

Erlang

Erlang dasturiy ta'minotni dinamik ravishda yangilashni qo'llab-quvvatlaydi, ammo bu odatda "deb nomlanadiissiq kod yuklanmoqda ". Erlang yangilanishlar uchun hech qanday xavfsizlik kafolatlarini talab qilmaydi, ammo Erlang madaniyati shuni ko'rsatadiki, ishlab chiquvchilar mudofaa uslubida yozadilar, ular yangilanish natijasida yuzaga keladigan xatolar bilan muomala qilishadi.[iqtibos kerak ]

Pymoult

Pymoult - bu Python-da yozilgan dinamik yangilanish uchun prototip platformasi. U boshqa tizimlardan ko'plab texnikalarni to'playdi, ularning kombinatsiyasi va konfiguratsiyasiga imkon beradi. Ushbu platformaning maqsadi ishlab chiquvchilarga o'zlarining ehtiyojlari uchun ko'proq mos keladigan yangilash usullarini tanlashlariga imkon berishdir. Masalan, Ginsengdagi kabi davlatning dangasa yangilanishini Kitsune yoki Ekiden kabi dasturning butun kodini o'zgartirganda birlashtirish mumkin.[21][22]

Microsoft Visual C ++

Microsoft, Microsoft Visual C ++ uchun yamoqlarning funktsional to'g'riligini saqlab, individual C ++ funktsiyalarini tuzatishni qo'llab-quvvatlaydigan ichki tuzatish texnologiyasidan foydalanmoqda. Hozirda ma'lum dasturlar Azure SQL ma'lumotlar bazasida SQL Server hisoblanadi.[23]

Shuningdek qarang

Adabiyotlar

  1. ^ Gupta, Deepak; Jalote, Pankaj; Barua, Gautam (1996). "Onlayn dasturiy ta'minot versiyasini o'zgartirish uchun rasmiy asos" (PDF). Dasturiy injiniring bo'yicha IEEE operatsiyalari. 22 (2): 120–131. doi:10.1109/32.485222. Arxivlandi asl nusxasi (PDF) 2014-04-07 da.
  2. ^ Pol, Matias R.; Frinke, Axel C. (1997-10-13) [birinchi nashr 1991], FreeKEYB - kengaytirilgan DOS klaviaturasi va konsol drayveri (Foydalanuvchi uchun qo'llanma) (v6.5 tahr.) [1] (Eslatma. K3PLUS vorisi FreeKEYB - bu juda ko'p dinamik ravishda yuklanadigan maxsus xususiyatlarga ega bo'lgan to'liq qayta sozlanadigan haydovchi. U bayt darajasidagi donadorlikning o'ziga xos shaklini amalga oshiradi. o'lik kodni dinamik ravishda yo'q qilish va ko'chirish texnikasi yuk vaqti shu qatorda; shu bilan birga o'z-o'zini o'zgartiradigan kod va qayta sozlanishi ish vaqti ga yaqin bo'lgan xotira izini minimallashtirish uchun kanonik shakl apparat, operatsion tizim, boshqa muhit va drayver konfiguratsiyasiga, shuningdek tanlangan xususiyatlar to'plamiga va joylashuviga qarab (deyarli cheksiz ko'p miqdordagi kombinatsiyalar uchun yuzlab parametrlarga ega bo'lgan oltmishta konfiguratsion kalit). Qurilish jarayoni a so'l yig'uvchi shuningdek, qaramlik hosil qilish uchun vaqtincha ikkiliklarni tahlil qiladigan va qayta ishlashdan oldin va keyin avtomatik vositalar doirasi kod tuzilishi meta ma'lumotlar natijaga qo'shilishi kerak bajariladigan fayl bilan birga ikkilik kod va o'zini o'zi tashlab yuboradigan, tasalli va ko'chirgich so'ralgan holda drayverning ish vaqti tasvirini (kodi va ma'lumotlarini) dinamik ravishda (qayta) birlashtirish, (ortiqcha) yuklash, o'zgartirish, yangilash yoki tushirish. Murakkablik bitta mustaqil faylda yashiringan, shuning uchun foydalanuvchi uchun ishlov berish oddiy (yarim) monolitik haydovchi bilan bir xil bo'ladi /TSR.
  3. ^ Pol, Matias R.; Frinke, Axel C. (2006-01-16), FreeKEYB - rivojlangan xalqaro DOS klaviatura va konsol drayveri (Foydalanuvchi uchun qo'llanma) (v7 dastlabki tahriri)
  4. ^ a b Li, Insup (1983). Dymos: dinamik o'zgartirish tizimi (Falsafa doktori (informatika) dissertatsiyasi). Viskonsin universiteti - Medison. Arxivlandi asl nusxasidan 2003-09-16.
  5. ^ a b Xeyden, Kris; Smit, Edvard K.; Hardisti, Erik; Xiks, Maykl; Foster, Jefferi (2011). "Dinamik dasturiy ta'minotni yangilash xavfsizligini tizimli sinovlar yordamida baholash" (PDF). Dasturiy injiniring bo'yicha IEEE operatsiyalari. IEEE (99).[doimiy o'lik havola ]
  6. ^ a b v Xeyden, Kris; Smit, Edvard K.; Xiks, Maykl; Foster, Jefferi (2011). "Ish vaqtini aniq va samarali yangilash uchun davlat o'tkazmasi" (PDF). Ma'lumotlar muhandisligi bo'yicha seminarlar (ICDEW), 2011 yil IEEE 27-Xalqaro konferentsiyasi. IEEE: 179-184.
  7. ^ a b v Xeyden, Kris; Smit, Edvard K.; Denchev, Mixail; Xiks, Maykl; Foster, Jefferi (2011). "Kitsune: samarali dasturiy ta'minot, C uchun dasturiy ta'minotni yangilash" (PDF). Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  8. ^ Stoyl, Garet; Xiks, Maykl; Bierman, Gavin; Devor, Piter; Neamtiu, Julian (2005). "Mutatis mutandis: xavfsiz va bashorat qilinadigan dinamik dasturiy ta'minotni yangilash" (PDF). Dasturlash tillari asoslari bo'yicha ACM konferentsiyasi materiallari.
  9. ^ a b Neamtiu, Yulian; Xiks, Maykl; Stoyl, Garet; Oriol, Manuel (2006). "C uchun amaliy dasturiy ta'minotni yangilash" (PDF). ACM SIGPLAN xabarnomalari. 41 (6): 72–83. CiteSeerX  10.1.1.625.4663. doi:10.1145/1133255.1133991.
  10. ^ Arnold, Jef; Kaashoek, M. Frans (2009). Ksplice: avtomatik qayta yuklanadigan yadro yangilanishlari (PDF). Kompyuter tizimlari bo'yicha 4-ACM Evropa konferentsiyasi materiallari. p. 187. doi:10.1145/1519065.1519085. ISBN  9781605584829.
  11. ^ "Oracle va Ksplice". Olingan 2011-07-21.
  12. ^ "Oracle Ksplice bilan ishlashni boshlash". oracle.com. Olingan 2014-08-02.
  13. ^ Poimboeuf, Josh (2014-05-01). "kpatch: yadroni dinamik ravishda tuzatish". LWN.net. Olingan 2014-07-23.
  14. ^ Corbet, Jonathan (2014-04-30). "Dastlabki kGraft taqdimoti". LWN.net. Olingan 2014-11-07.
  15. ^ "Linux kernel 4.0, 1.2-bo'lim. Jonli patching". kernelnewbies.org. 2015-04-26. Olingan 2015-05-14.
  16. ^ Corbet, Jonathan (2015-09-30). "Kompilyatsiya vaqtidagi stekni tasdiqlash". LWN.net. Olingan 2015-10-02.
  17. ^ Poimboeuf, Josh (2015-09-24). "Linux yadrosi hujjatlari: Documentation / stack-validation.txt (v13 tuzatmasidan)". LWN.net. Olingan 2015-10-02.
  18. ^ Neamtiu, Yulian; Xiks, Maykl; Foster, Jefri; Pratikakis, Polyvios (2008). "Versiya-izchil dinamik dasturiy ta'minotni yangilash va xavfsiz bir vaqtda dasturlash uchun kontekst effektlari". Dasturlash tillari asoslari bo'yicha {ACM} konferentsiyasi (POPL) materiallari.: 37–58.
  19. ^ Makris, Kristis; Bazzi, Rida A. (2009). "Stekni qayta tiklash yordamida zudlik bilan ko'p tarmoqli dinamik dasturiy yangilanishlar" (PDF). USENIX yillik texnik konferentsiyasidagi 2009 yilgi konferentsiya materiallari.
  20. ^ Chen, Xaybo; Yu, Jie; Chen, Rong; Zang, Binyu; Yew, Pen-Chung (2007). "POLUS: jonli yangilash tizimi" (PDF). Dasturiy injiniring bo'yicha 29-xalqaro konferentsiya: 271-281. Arxivlandi asl nusxasi (PDF) 2012-04-26. Olingan 2011-12-18.
  21. ^ Sebastien Martines; Fabien Dagnat; Jeremi Buisson (2013). "Python yordamida DSU usullarini prototiplash". Dasturiy ta'minotni yangilashdagi issiq mavzular bo'yicha 5-seminar ishi (HotSWUp'13).
  22. ^ Martines, Sebastien (2013-03-06). "Pymoult". Bitbucket. Olingan 2014-11-27.
  23. ^ "Azure SQL ma'lumotlar bazasida SQL Server dvigatelini issiq tuzatish". TECHCOMMUNITY.MICROSOFT.COM. 2019-09-11. Olingan 2019-09-15.

Tashqi havolalar