TR202022224A2 - Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem - Google Patents

Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem

Info

Publication number
TR202022224A2
TR202022224A2 TR2020/22224A TR202022224A TR202022224A2 TR 202022224 A2 TR202022224 A2 TR 202022224A2 TR 2020/22224 A TR2020/22224 A TR 2020/22224A TR 202022224 A TR202022224 A TR 202022224A TR 202022224 A2 TR202022224 A2 TR 202022224A2
Authority
TR
Turkey
Prior art keywords
stack
task block
task
function
functions
Prior art date
Application number
TR2020/22224A
Other languages
English (en)
Inventor
Öztürk Ersi̇n
Original Assignee
Netas Telekomuenikasyon Anonim Sirketi
Netaş Telekomüni̇kasyon Anoni̇m Şi̇rketi̇
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netas Telekomuenikasyon Anonim Sirketi, Netaş Telekomüni̇kasyon Anoni̇m Şi̇rketi̇ filed Critical Netas Telekomuenikasyon Anonim Sirketi
Priority to TR2020/22224A priority Critical patent/TR202022224A2/tr
Publication of TR202022224A2 publication Critical patent/TR202022224A2/tr

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

Bu buluş, gömülü yazılımlardaki yığındaki doldurma ve kopyalama işlemleri için özel kütüphane fonksiyonları sunan ve bu sayede yığında büyük boyutlu diziler üzerinde yapılan doldurma ve kopyalama işlemlerini izleyerek yığın taşmasına neden olabilecek işlemleri tespit eden ve engelleyen bir sistem (1) ve yöntem ile ilgilidir. Önerilen sistem (1) ve yöntemde kullanılan doldurma (102) ve kopyalama (103) birimleri fonksiyonları sadece yığın işlemleri için hazırlanmış kütüphane fonksiyonlarıdır. Çalışma prensipleri bu kabüle dayanır. Fonksiyonlar çalıştırıldıktan sonra işletim sisteminin görev bloğu kütüphane kodlarını (Tasking API) kullanarak o anda çalışan aktif görev bloğunu tespit ederler. Ardından tespit edilen görev bloğunun yığın başlangıç ve bitiş adreslerini ilgili tablodan bulurlar. Bu noktadan sonra her iki fonksiyon içinde de kullanılacak lokal bellek adreslerinin yığın adresleri içinde olup olmadığı kontrol edilir. Eğer yığın alanları dışına taşma tespit edilirse eldeki görev bloğu kodu, adres gibi bilgiler loglanarak mikroişlemci (3) çalışmasının durdurulacağı ölümcül hata (Fatal Error) oluşturulur.

Description

TARIFNAME GOMULU YAZILIMLARDAKI YIGIN TASMALARINI TESPIT ETMEYI SAGLAYAN BIR SISTEM VE YONTEM Teknik Alan Bu bulus, gömülü yazilimlardaki yigindaki doldurma ve kopyalama islemleri için özel kütüphane fonksiyonlari sunan ve bu sayede yiginda büyük boyutlu diziler üzerinde yapilan doldurma ve kopyalama islemlerini izleyerek yigin tasmasina neden olabilecek islemleri tespit eden ve engelleyen bir sistem ve yöntem ile ilgilidir. Teknigin Bilinen Durumu Gömülü sistemler bünyelerinde sisteme özgü fonksiyonlari yerine getiren bir bilgisayar içeren sistemlerdir. Bu sistemlerin en önemli elemanlari, mikrodenetleyici veya mikroislemci içeren akilli bir islem birimi ile bu islem biriminin yürütecegi komutlari içeren bir bellek alanindan olusur. Bu sekilde bir yapi ile görevleri genisletilebilir ve iyilestirilebilir bir sistem ortaya çikarilir. Mikroislemci yazilim olarak adlandirilan komut setini isleterek gömülü sistemin görevlerini yerine getirmesini saglar. Yazilim kontrollü bir yapi sayesinde gömülü sisteme üretildikten sonra da yeni fonksiyonlar kazandirilabilir, gömülü sistemin çalismasinda tespit edilen problemler yazilim güncellemeleriyle sistem fabrikaya getirilmeden çözümlenebilir. Yazilim kontrollü gömülü sistemler sahada güncelleme, yetenek artirma ve problem çözme avantajlarina karsin bazi dezavantajlara da sahiptir. Bu dezavantajlarin basinda yazilim içinde kalmis, tasarim ve gelistirme asamasinda tespit edilememis problemli durumlar gelir. Donanim tabanli sistemler sahada güncellemeye izin vermezler, sisteme güncelleme yapabilmek için sistemin fabrikaya veya bir bakim alanina getirilmesi gerekir, bununla birlikte sistemin davranisi son derece belirlidir. Donanim tabanli bir sistem her zaman ayni duruma ayni tepkiyi verir, bu tepki o durumun öncesindeki olaylara bagimli olmaz. Yazilim tabanli sistemlerde ise bir duruma verilebilecek tepki o anki kosullara bagimli olmakla birlikte önceki kosullara da bagli olabilir. Yazilim tabanli sistemlerin bu özellikleri nedeniyle çok iyi test edilmesi gerekir. Gömülü yazilimlarda çesitli islemlerde kullanilan degiskenler global ve lokal olmak üzere ikiye ayrilir. Global degiskenler yazilimin içindeki her kod parçasi tarafindan erisilebilen degiskenlerdir. Lokal degiskenler ise kullanilacaklari fonksiyonun basinda yaratilir, o fonksiyon içinde erisilebilir ve fonksiyondan dönüldügünde yok olurlar. Global degiskenler statik olarak tanimlanirlar ve RAM (Random Access Memory- rastgele Erisimli Bellek) bellekte kendileri için ayrilmis bir yere sahiptirler. Lokal degiskenler ise dinamik olarak ortak bir bellekte yaratilirlar ve bulunduklari bellek alanini geçici bir süreligine kullanirlar. Gömülü yazilimlarda lokal degiskenler için ayrilmis alanlara yigin (stack) denmektedir. Genellikle her görev blogunun kendine ayrilmis bir yigin alani bulunur. Bu yigin alani 0 görev blogundaki tüm fonksiyonlar tarafindan ortaklasa kullanilir. Yigin alanlarinin kullanim mantigi LIFO (Last In First Out), yani son giren ilk çikar seklindedir. Yigin alanlari degiskenlerin saklanmasi disinda islemcinin yazmaçlari ile durum bilgisinin de saklanmasi amaciyla kullanilabilir. Yigin, islemcinin mimarisine göre bellekte büyük adresten küçük adrese dogru, ya da küçük adresten büyük adrese dogru ilerleyebilir. Yigin alanlarinin kullaniminda yasanan en büyük sorun yigin için ayrilmis alanin disina tasilmasidir. Yigin alani boyutu sinirlidir ve bu sinir görev blogu yaratilirken isletim sistemine verilir. Isletim sistemi, görev bloguna talep edilen miktarda yigin alani ayirir. Yigin alaninin siniri görev blogunun görevlerini yerine getirirken ihtiyaç duyabilecegi en büyük yigin alanini kapsayacak sekilde olmalidir. Görev blogu kök fonksiyondan, yani blogun baslangiç fonksiyonundan çalismaya basladiginda yigini kullanmaya baslar. Iç içe fonksiyonlar çagirildikça yigin kullanimi artar. Prensip olarak çok büyük boyutlu degiskenler yigin alanina konmamalidir. Bununla birlikte çok sayida iç içe fonksiyon çalistirilmasi yigin alaninin kullanimini artirir. Eger bu çalistirilan fonksiyonlarin büyük çogunlugu yigini yogun bir sekilde kullaniyorsa yigin alaninin disina tasilabilir. Bu durum çok az rastlanilabilecek bir senaryoya aitse yiginin tasmasi gelistirme asamasinda hiç gerçeklesmeyebilir; ürün sahaya çiktiginda gerçeklesebilir. Yigin tasmasi son derece kontrolsüz olaylara yol açtigi için çogunlukla problemin görünen yüzünden problemin kök sebebine yani yigin tasmasina ulasmak zor olur. Yigin tasmasinin kontrolü için literatürde çesitli yöntemler yer almaktadir. Bu yöntemler, yöntemlerin eksiklikleri ve bu eksiklikler neticesinde ortaya çikan problemler asagida anlatilmistir. A. islemcinin ya da görev blogunun yigin qöstericisinin qörev blogu qecislerinde izlenmesi: Bu yöntemde tek görevli yazilim uygulamalarinda islemcinin, çok görevli uygulamalarda ise her bir görev blogunun yigin göstericileri izlenir. Yigin göstericileri anlik olarak yiginin ne kadarinin kullanildigini gösterir. Isletim sistemi tarafindan her görev blogunun yigin alanlarinin sinirlari bir tabloya kaydedilir, görev bloklari arasindaki her geçis sirasinda çalismasi sonlandirilan görev blogunun yigin göstericisi alinarak gösterici degerinin o görev bloguna ait yigin sinirlari içinde olup olmadigi kontrol edilir. Yigin kullanimi iç Içe fonksiyon çagirildikça ilerlemekte, çagirilan fonksiyonlardan geri dönüldükçe gerilemektedir. Çagirilan bir fonksiyon yigini ilerleterek yigin alani disina tasip, 0 bölgedeki degiskenleri bozabilir. Bu fonksiyondan geri dönülürken yigin göstericisi gerileyerek tekrar yigin sinirlari içerisine dönebilir. Bu durumda görev blogu islerini bitirip isletim sistemine döndügünde yigin göstericisi kontrolünü geçecektir. Bu tür yigin tasmalari yigin göstericisinin görev blogu geçislerinde izlenmesi yöntemi ile tespit edilemez. Bu yöntem ancak görev blogu yigin tasmis durumda iken isletim sistemi tarafindan bölünürse ise yarar. Bu yöntemin tespit edemedigi bir diger hata durumu ise yiginda yigin sinirlari içerisinde açilan bir alana boyutunu geçecek sekilde kontrolsüz yazmalardir. B. Islemcinin ya da görev blogunun yigin göstericisinin fonksiyonlarin baslangiç veya sonlarinda izlenmesi: Bu yöntemde derleyiciye bir parametre geçisi saglayarak yazilimdaki her fonksiyonun basinda veya sonunda kullaniciya ait bir fonksiyonun çagirilmasi saglanir. Çagirilan bu fonksiyon o anda çalisan görev blogunun yigin göstericisinin o görev bloguna ait yigin sinirlari içinde olup olmadigini kontrol eder. Bu yöntemde yigin tasmasi fonksiyonun sonuna kadar anlasilamaz. Fonksiyon içinde yiginin tasmasi ve bellekteki degiskenlerinin degerini degistirmesi, bu sirada da görev blogunun bir kesme programi tarafindan kesilerek bellekteki bozulan degiskenlerin kullanilmasi durumunda hata olusacaktir. Bu yöntemin tespit edemedigi bir diger hata durumu ise yiginda yigin sinirlari içerisinde açilan bir alana boyutunu geçecek sekilde kontrolsüz yazmalardir. Ayrica yigin kullanimina bakmadan her fonksiyonun basinda ve sonunda yigin göstericisini kontrol etmek islem süresini bosa harcamak olacaktir. C. Yigin sonlarina tampon bellek ekleyerek bu tampon bellek alanlarinin izlenmesi: Bu yöntemde görev bloklarinin yigin alanlarinin sonuna 1 byteitan 1kbyte'a kadar degisen ilave alanlar eklenir. Bu ilave alanlar O ile doldurulur ve çesitli anlarda bu alanlarda O disinda bir veri olup olmadigi kontrol edilir. Böylece ilgili görev blogunun yigin alaninda bir tasma olup olmadigi tespit edilmeye çalisilir. Kontrol 3 sekilde yapilir: a) Isletim sistemi tarafindan görev geçis anlarinda tampon bellek kontrol edilir. b) Bir fonksiyona girildiginde ve/veya çikildiginda tampon bellek kontrol edilir. c) islemcinin "data breakpoint" imkanlari ile tampon alana yazma yapildiginda programlanir, o alana yazma yapilinca mikroislemci normal çalismasini kesip tanimlanan özel bir fonksiyona dallanir. Mikroislemci, 0 özel fonksiyona o alana erisen kod parçasinin adresini söyler ve bu bilgiden 0 alana erisen fonksiyon bulunur. Görev blogu tampon bellegi kapsayacak sekilde yiginda bir dizi açmis, bu diziye hiçbir sey yazmamis, bu dizinin hemen devamina ise baska bir dizi açarak yazma yapmis olabilir. Bu tür durumlar bu yöntem tarafindan tespit edilemez. Ayrica bu yöntemde genis bir bellek alaninin kontrol edilmesi islemci süresinin bosa harcanmasina neden olacaktir. Var olan yöntemler genellikle yigin bozulmasi gerçeklestikten sonra algilamaya yöneliktir. Bu yöntemlerden sadece "yigin sonlarina tampon bellek ekleyerek bu tampon bellek alanlarina yazmanin islemcinin data breakpoint yetenekleri ile izlenmesi" yigin bozulmasi olmadan önlemeye yöneliktir. Islemcilerin data breakpoint yetenekleri oldukça sinirlidir, çok sayida görev blogu olan uygulamalarda tüm görev bloklarinin yiginlarindaki tampon bellek alanlarini izlemeye yetecek kadar data breakpoint imkani bulunmayacaktir. Bu nedenle görev blogu geçislerinde devreye girerek data breakpoint ayarlarinin çalisacak görev blogu için güncellenmesi gerekecektir. Bu islem de, islem süresi açisindan ayri bir yük getirecektir. Bunun disinda var olan yöntemler tüm görev bloklarinin tüm fonksiyonlarina yönelik bir analiz yaptiklari için önerilen yöntemler uygulamanin çalismasini yavaslatarak metodun kullanilabilirligini çok azaltmaktadirlar. Gömülü sistemler güç ve boyut açilarindan sinirlandirilmis sistemlerdir. Bu nedenle gömülü sistemlere yönelik önerilen yöntemler sinirsiz güç ve boyut kabulü yapamazlar. Ozetle, yigin tasmasi kontrollerinin asagidaki iki noktaya odaklanmasi gerektigi görülmektedir. uyumlu olmasi Gömülü uygulamalarda her ne kadar yer kisitlamasi olsa da gelisen bellek teknolojileri sayesinde artik küçük alanlara yüksek bellek boyutlari sigdirilabilmektedir. Gömülü uygulamalardaki bellek kullanimi eskiye göre daha rahattir, görev bloklarinin yigin alanlarina daha genis alanlar ayrilabilmektedir. Gömülü uygulamalar daha özgün isler gerçeklestirdigi için bir fonksiyona ait tekil degisken sayisi çok olmamaktadir. Iç içe çok sayida fonksiyon çagirilsa da bu fonksiyonlarin tekil degiskenleri nedeniyle ihtiyaç duyulan yigin alani çogu gömülü sistem tarafindan karsilanabilir boyutlarda olmaktadir. Bu durum göz önünde bulunduruldugunda yigin tasmasi hatalarinin büyük kisminin yiginda büyük boyutlu dizi degiskenler ile çalisilmasindan kaynaklandigi kolaylikla anlasilabilir. Dolayisiyla büyük boyutlu dizilerle yapilacak çalismalara yönelik yigin izleme yöntemi, yigin tasmasi hatalarinin büyük kismini oldukça minimal islem zamani harcayarak önleyebilir. Yigin alanlarinda büyük boyutlu dizilerle çalismalar incelendiginde asagidaki iki çalisma karakteristiginin yaygin olarak kullanildigi görülür: ~:` Büyük boyutlu dizilerle çalismadan önce dizi içerigi belirli bir patern ile doldurulur, ardindan bazi hesaplamalarda elde edilen veriler dizi alanlarina girilir, dizinin nihai hali global bir alana kopyalanir. elemanlari üzerinde çalisma yapilir, degerler degistirilir, dizinin nihai hali global bir alana kopyalanir. Bu iki karakteristige bakildiginda yigin tasmasina neden olabilecek yüksek olasilikli olaylarin bellek doldurma ve kopyalama islemleri oldugu görülebilir. Dolayisiyla yiginda açilmis büyük boyutlu dizilere yönelik doldurma ve kopyalama olaylarina odaklanilmasi yigin tasmasi hatalarini önleyebilecek potansiyel tasimaktadir. Tüm bu sebeplerden ötürü, günümüzde gömülü yazilimlardaki yigindaki doldurma ve kopyalama islemleri için özel kütüphane fonksiyonlari sunan ve bu sayede yiginda büyük boyutlu diziler üzerinde yapilan doldurma ve kopyalama islemlerini izleyerek yigin tasmasina neden olabilecek islemleri tespit eden ve engelleyen yapilanmalara ihtiyaç duyulmaktadir. Teknigin bilinen durumunda yer alan TR2016/16200 numarali patent basvuru dokümaninda, gömülü sistemler için genellestirilmis bir izleme sistemi ve yöntemi açiklanmaktadir. Ilgili basvuru dokümaninda gömülü yazilimlardaki yigindaki doldurma ve kopyalama islemleri için özel kütüphane fonksiyonlari sunan ve bu sayede yiginda büyük boyutlu diziler üzerinde yapilan doldurma ve kopyalama islemlerini izleyerek yigin tasmasina neden olabilecek islemleri tespit eden ve engelleyen bir çözüm sunulmamaktadir. Sonuç olarak, yukarida anlatilan ihtiyaçlari karsilayacak çözümlerin konu hakkindaki yetersizligi nedeniyle ilgili teknik alanda bir gelistirme yapilmasi gerekli kilinmistir. Bulusun Amaci Bulus, mevcut durumlardan esinlenerek olusturulup yukarida belirtilen olumsuzluklari çözmeyi amaçlamaktadir. Bu bulusun amaci, gömülü yazilimlardaki yigindaki doldurma ve kopyalama islemleri için özel kütüphane fonksiyonlari sunan ve bu sayede yiginda büyük boyutlu diziler üzerinde yapilan doldurma ve kopyalama islemlerini izleyerek yigin tasmasina neden olabilecek islemleri tespit eden ve engelleyen bir sistem ve yöntemin ortaya konulmasidir. Onerilen sistem ve yöntemin doldurma islemleri için doldurma biriminin sundugu fonksiyon tercihen Ingilizce yigin koruyucu kelimeleri olan "stack protector" ifadesinin bas harflerini önek olarak alan sp_memset fonksiyonu'dur. sp_memset fonksiyonu standart C ve C++ kütüphanesinin doldurma fonksiyonu memset ile ayni parametre ve dönüs setine sahiptir. Benzer sekilde önerilen yöntemin kopyalama islemleri için kopyalama biriminin sundugu fonksiyon tercihen sp_memcpy fonksiyondur. Bu fonksiyon da C ve C++ kütüphanesinin doldurma fonksiyonu memcpy ile ayni parametre ve dönüs setine sahiptir. sp_memset ve sp_memcpy fonksiyonlari sadece yigin islemleri için hazirlanmis kütüphane fonksiyonlaridir. Çalisma prensipleri bu kabüle dayanir. Fonksiyonlar, çalistirildiktan SOnra isletim sisteminin görev blogu kütüphane kodlarini (Tasking API) kullanarak o anda çalisan aktif görev blogunu tespit ederler. Ardindan tespit edilen görev blogunun yigin baslangiç ve bitis adreslerini ilgili tablodan bulurlar. Bu noktadan sonra her iki fonksiyon içinde de kullanilacak bellek adreslerinin yigin adresleri içinde olup olmadigi kontrol edilir. Eger yigin alanlari disina tasma tespit edilirse eldeki görev blogu kodu, adres gibi bilgiler Ioglanarak mikroislemci çalismasinin durdurulacagi ölümcül hata (Fatal Error) olusturulur. Bulusun yapisal ve karakteristik özellikleri ve tüm avantajlari asagida verilen sekil ve bu sekle atiflar yapilmak suretiyle yazilan detayli açiklama sayesinde daha net olarak anlasilacaktir ve bu nedenle degerlendirmenin de bu sekil ve detayli açiklama göz önüne alinarak yapilmasi gerekmektedir. Bulusun Anlasilmasina Yardimci Olacak Sekil Sekil 1, bulusa konu olan sistemin sematik gösterimidir. Parça Referanslarinin Açiklamasi 1. Sistem 2. Güç devresi 3. Mikroislemci 4. Kalici bellek . Geçici bellek 6. Isletim sistemi 61. Görev blogu yigini 611. Dizi 62. Görev blogu yöneticisi 63. Çalisan görev blogu bulma birimi 7. Uygulama yazilimi 711. Ust fonksiyon 7111. Alt fonksiyon 8. Hata kayitlari bölümü 811. Hata tipi bölümü 812. Hata verisi bölümü 9. Global bellek alani 91. Global dizi . Yigin koruma kütüphanesi 1011. Yigin gösterici tablosu elemani 10111. Görev blogu kimligi 10112. Görev blogu yigin baslangici 10113. Görev blogu yigin sonu 102. Doldurma birimi 103. Kopyalama birimi 104. Görev kayit birimi Bulusun Detayli Açiklamasi Bu detayli açiklamada, bulusa konu olan sistemin (1) ve yöntemin tercih edilen yapilanmalari, sadece konunun daha iyi anlasilmasina yönelik olarak açiklanmaktadir. Bu bulus, gömülü yazilimlardaki yigindaki doldurma ve kopyalama islemleri için özel kütüphane fonksiyonlari sunan ve bu sayede yiginda büyük boyutlu diziler üzerinde yapilan doldurma ve kopyalama islemlerini izleyerek yigin tasmasina neden olabilecek islemleri tespit eden ve engelleyen bir sistem (1) ve yöntem ile ilgilidir. Sekil 1*de sematik gösterimi sunulan bulus konusu sistem (1); girisindeki elektrik enerjisini elektronik devrenin kullanabilecegi sekle çeviren en az bir güç devresi (2), gücü kesildigi durumda da içindeki veriyi tutabilen ve elektronik olarak yazilip silinebilen en az bir kalici bellek (4), matematiksel islemleri gerçeklestiren, yariiletken teknolojisi kullanan ve kalici bellekteki (4) yüklü programlari çalistiran elektronik bir bilesen olan en az bir mikroislemci (3), gücü kesildigi durumda içinde verilerin silindigi en az bir geçici bellek (5), donanimi kullanilabilir hale getiren, mikroislemcinin (3). kalici bellegin (4) ve geçici bellegin (5) uygulamalar arasinda paylasimini ve giren çikan verilerin uygulamalar için yönetimini saglayan en az bir isletim sistemi (6), sistemin (1) gerçeklestirecegi yazilimsal islere sahip olan en az bir uygulama yazilimi (7), sistemde (1) olusan hatalarin kayitlarini tutan ve yigin tasmasi tespit edildiginde olusturulacak hata bilgilerini saklayan en az bir hata kayitlari bölümü (8), uygulama yaziliminin (7) tüm birimleri tarafindan ulasilabilen en az bir global bellek alani (9) ve yigin koruma islemlerini gerçeklestiren, sistemdeki (1) doldurma ve kopyalama islemleri için kullanilan, isletim sisteminin (6) görev blogu kütüphane kodlarini (Tasking API) kullanarak o anda çalisan aktif görev blogunu tespit eden, ardindan tespit edilen görev blogunun yigin baslangiç ve bitis adreslerini bulan, kullanilacak bellek adreslerinin yigin adresleri içinde olup olmadigini kontrol edeni eger bellek adresleri, yigin adresleri içinde degilse tasma tespit eden ve bu durumda eldeki görev blogu kodu, adresi, zaman bilgisi, yiginin ne kadar disina tasildigi gibi bilgileri loglayarak mikroislemci (3) çalismasinin durdurulacagi `Ölümcül hatayi (Fatal Error) olusturan bir yigin koruma kütüphanesi (10) içermektedir. Isletim sistemi (6); blogu yiginina (61), 0:* görev blogu yiginini (61) yönetmek için kullanilan veri yapisina sahip olan en az bir görev blogu yöneticisine (62) ve fonksiyona sahip olan bir çalisan görev blogu bulma birimine (63) sahiptir. Uygulama yazilimi (7); ü* tercihen en az bir alt fonksiyon (7111) içeren en az bir üst fonksiyonu (711) içeren, görev blogu yigini (61) vasitasiyla yigin islemleri yönetilen, görev blogu yöneticisi (62) vasitasiyla yönetilen ve koda ve verilere sahip olan, en az bir görev bloguna (71) sahiptir. Hata kayitlari bölümü (8); hata kayitlarindaki hata tiplerini belirten bir hata tipi bölümü (811) ve hata kayitlarindaki hatanin olustugu duruma ait bilgilerin tutuldugu alan olan en az bir hata verisi bölümüne (812) sahip olan ve bir hatanin kaydini tutan en az bir birincil hata kaydi bölümüne (81) sahiptir. Global bellek alani (9); görev blogu (71) tarafindan açilarak kullanilan en az bir global diziye (91) sahiptir. bloklarinin yigin baslangiç ve bitis adreslerinin) tutuldugu bir yigin göstericisi tablosuna (101 ), o yigindaki bellek alanlarina korumali bir sekilde veri doldurmak için kullanilan fonksiyona sahip olan, üst fonksiyonun (711) veya alt fonksiyonun (7111) görev blogu yigininda (61) diziyi (611) yaratmasi sonucunda, dizinin (611) içine "0" veya "sifir" doldurulmasi talebiyle üst fonksiyon (711) veya alt fonksiyon (7111) tarafindan çagrilan, çalisan görev blogu bulma birimini (63) çagirip o anda aktif olan görev blogu kimligini (10111) elde eden elde ettigi görev blogu kimligini (10111), yigin gösterici tablosunda (101) arayip ilgili görev blogunun tablodaki elemanina ulasan, doldurulmasi talep edilen dizinin (611) baslangiç ve bitis adreslerini görev ile karsilastiran, doldurulmasi talep edilen dizinin (611) baslangiç ve/veya bitis adresleri yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) ve görev arasinda olmayan bir alana tekabül ediyorsa, sistem (1) hatasini olusturan, sistem (1) hatasi olusturmak için hata kayitlari bölümünden (8) birincil hata kaydi bölümünü (81) olusturan, hata tipi bölümüne (811) yigin tasmasi hatasi yazan, hata verisi bölümüne (812) görev blogu kimligini (10111) ve doldurulmak istenen adresleri yazan ve doldurulmasi talep edilen dizinin (611) baslangiç ve bitis adresleri yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) ve görev blogu yigin sonu (10113) adresleri disinda bir alana tekabül etmiyorsa, doldurma islemini yapan en az bir doldurma birimine (102), yigindaki bellek alanlarina korumali bir sekilde veri kopyalamak için kullanilan fonksiyona sahip olan, üst fonksiyonun (711) veya alt fonksiyonun (7111) görev blogu yigininda (61) diziyi (611) yaratmasi sonucunda, dizinin (611) içine global bellek alanindaki (9) global diziden (91) veri kopyalamasinin yapilmasi talebiyle, Üst fonksiyon (711) veya alt fonksiyon (7111) tarafindan çagrilan, çalisan görev blogu bulma birimini (63) çagirip O anda aktif olan görev blogu kimligini (10111) elde eden, elde ettigi görev blogu kimligini (10111), yigin gösterici tablosunda (101) arayip ilgili görev blogunun tablodaki elemanina ulasan, içerisine veri kopyalamasi talep edilen Iokaldeki dizinin (611) baslangiç ve bitis adreslerini görev blogu yigin baslangici (10112) ve görev blogu yigin sonu (10113) degerleri ile karsilastiran içerisine veri kopyalanmasi talep edilen Iokaldeki dizinin (611) baslangiç ve/veya bitis adresi yigin gösterici tablosundaki (101) görev blogu yigin alana tekabül ediyorsa, sistem (1) hatasini olusturan içerisine veri kopyalanmasi talep edilen dizinin (611) baslangiç ve bitis adresi yigin gösterici tablosundaki (101) görev blogu yigin baslangici tekabül etmiyorsa, kopyalama islemini yapan en az bir kopyalama birimine (103) ve görev blogunu (71) yigin koruma islemlerine kayit etmek için kullanilan, görev blogunun (71) kendi görev blogu kimligi (10111), kendi yigin baslangiç ve bitis adresleri ile çalistirdigi fonksiyon olan, çalisarak yigin gösterici tablosu elemanini (1011) dolduran ve görev blogu kimligi (10111) alanina görev blogunun (71) kimligini, görev blogu yigin baslangici (10112) alanina görev blogunun (71) yigin baslangiç adresini ve görev blogu yigin sonu (10113) alanina görev blogunun (71) en az bir görev kayit birimine (104) sahiptir. Yigin koruma kütüphanesi (10); tercihen bir doldurma birimine (102), bir kopyalama birimine (103) ve bir görev kayit birimine (104) sahiptir. Yigin göstericisi tablosu (101); yigin gösterici tablosunun (101) elemani olan en az bir yigin gösterici tablosu elemanina (1011), yigin gösterici tablosu elemaninin (1011) içerdigi ve yigin gösterici tablosu elemanina (1011) kayit olan görev blogunun kimlik bilgisini gösteren her bir eleman (1011) için bir görev blogu kimligine (10111), yigin gösterici tablosu elemaninin (1011) içerdigi ve birincil yigin gösterici tablosu elemanina (1011) kayit olan görev blogunun yigin baslangiç adresini gösteren her bir eleman (1011) için bir görev blogu yigin baslangicina (10112) yigin gösterici tablosu elemaninin (1011) içerdigi ve yigin gösterici tablosu elemanina (1011) kayit olan görev blogunun yigin bitis adresini gösteren her bir eleman (1011) için bir görev blogu yigin sonuna (10113) sahiptir. Doldurma ve kopyalama islemleri için bulus konusu iki ayri yöntem mevcuttur. Doldurma islemi için olan yöntem; gömülü sistemin (1) çalistirilmasi için gerekli olan elektrik enerjisinin güç devresi (2) tarafindan saglanmaya baslamasi, gömülü sistem (1) içindeki mikroislemcinin (3), kosturacagi programi kalici bellekten (4) geçici bellege (5) yüklemesi, geçici bellege (5) yüklenen isletim sisteminin (6) çalismaya baslamasi ve isletim sisteminin (6) donanim birimlerini kullanabilecek hale getirmesi, isletim sisteminin (6) donanimlarinin kullanilabilecek hale gelmelerinden sonra, isletim sisteminin (6) uygulama yazilimini (7) çalistirmasi, uygulama yaziliminin (7) çalistiktan sonra ilk is olarak, isletim sistemine (6) giderek, en az bir görev blogu (71) olusturma talebinde bulunmasi, isletim sisteminin (6) görev blogunu veya bloklarini (71) yönetmek için görev blogu yöneticisini veya yöneticilerini (62) olusturmasi, isletim sisteminin (6) görev blogunun (71) yigin islemlerini yönetmek için her bir görev için bir görev blogu yiginini (61) olusturmasi, görev blogunun (71) çalismasi ve yigin koruma islemini aktiflestirmek için yigin koruma kötüphanesinden (10) görev kayit birimi (104) fonksiyonunu kendi görev blogu kimligi (10111), kendi yigin baslangiç ve bitis adresleri ile çalistirmasi, görev kayit birimi (104) fonksiyonunun çalisarak yigin gösterici tablosu elemanini (1011) doldurmasi, görev blogu kimligi (10111) alanina görev blogunun (71) kimligini, görev blogu yigin baslangici (10112) alanina görev blogunun (71) yigin baslangiç adresini, görev blogu yigin sonu (10113) alanina görev blogunun (71) yigin sonu adresini kayit etmesi, görev bloguna (71) ait olan üst fonksiyonun (711) çalismasi, birincil fonksiyonun (711) görev blogu yigininda (61) en az bir dizi (611) yaratmasi, yigin koruma kütüphanesinden (10) doldurma birimi (102) fonksiyonunu çagirarak dizinin (611) içine "0" veya "sifir" doldurulmasi talebinde bulunmasi, doldurma birimi (102) fonksiyonunun çalisan görev blogu bulma birimini (63) çagirip 0 anda aktif olan görev blogu kimligini (10111) elde etmesi, doldurma birimi (102) fonksiyonunun elde ettigi görev blogu kimligini (10111), yigin gösterici tablosunda (101) arayip ilgili görev blogunun tablodaki elemanina ulasmasi, doldurma birimi (102) fonksiyonunun doldurulmasi talep edilen Iokaldeki dizinin (611) baslangiç ve bitis adreslerini görev blogu yigin baslangici (10112) ve görev blogu yigin sonu (10113) degerleri ile karsilastirmasi, doldurulmasi talep edilen dizinin (611) baslangiç ve/veya bitis adresi, yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) ve görev arasinda olmayan bir alana tekabül ediyorsa, doldurma birimi (102) fonksiyonunun sistem (1) hatasini olusturmasi, doldurma birimi (102) fonksiyonunun, sistem (1) hatasi olusturmak için hata kayitlari bölümünden (8) bir birincil hata kaydi bölümünü (81) olusturmasi, hata tipi bölümüne (811) yigin tasmasi hatasi yazmasi, hata verisi bölümüne (812) görev blogu kimligini (10111) ve doldurulmak istenen adresleri yazmasi, doldurulmasi talep edilen dizinin (611) baslangiç ve bitis adresleri yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) ve görev blogu yigin sonu (10113) adresleri disinda bir alana tekabül etmiyorsa, doldurma birimi (102) fonksiyonunun doldurma islemini yapmasi Kopyalama islemi için olan bulus konusu yöntem; gömülü sistemin (1) çalistirilmasi için gerekli olan elektrik enerjisinin güç devresi (2) tarafindan saglanmaya baslamasi, gömülü sistem (1) içindeki mikroislemcinin (3), kosturacagi programi kalici bellekten (4) geçici bellege (5) yüklemesi, geçici bellege (5) yüklenen isletim sisteminin (6) çalismaya baslamasi ve isletim sisteminin (6) donanim birimlerini kullanabilecek hale getirmesi, isletim sisteminin (6) donanimlarinin kullanilabilecek hale gelmelerinden sonra, isletim sisteminin (6) uygulama yazilimini (7) çalistirmasi, uygulama yaziliminin (7) çalistiktan sonra ilk is olarak, isletim sistemine (6) giderek, en az bir görev blogu (71) olusturma talebinde bulunmasi, isletim sisteminin (6) görev blogunu veya bloklarini (71) yönetmek için görev blogu yöneticisini veya yöneticilerini (62) olusturmasi, isletim sisteminin (6) görev blogunun (71) yigin islemlerini yönetmek için her bir görev için bir görev blogu yiginini (61) olusturmasi, görev blogunun (71) çalismasi ve yigin koruma islemini aktiflestirmek için yigin koruma kütüphanesinden (10) görev kayit birimi (104) fonksiyonunu kendi görev blogu kimligi (10111), kendi yigin baslangiç ve bitis adresleri ile çalistirmasi, görev kayit birimi (104) fonksiyonunun çalisarak yigin gösterici tablosu elemanini (1011) doldurmasi, görev blogu kimligi (10111) alanina görev blogunun (71) kimligini, görev blogu yigin baslangici (10112) alanina görev blogunun (71) yigin baslangiç adresini, görev blogu yigin sonu (10113) alanina görev blogunun (71) yigin sonu adresini kayit etmesi, görev bloguna (71) ait olan üst fonksiyonun (711) çalismasi, üst fonksiyonun (711) görev blogu yigininda (61) en az bir dizi (611) yaratmasi, dizinin (611) içine yigin koruma kütüphanesinden (10) kopyalama birimi (103) fonksiyonunu çagirarak, global bellek alanindaki (9) global diziden (91) veri kopyalamasinin yapilmasi talebinde bulunmasi, kopyalama birimi (103) fonksiyonunun çalisan görev blogu bulma birimini (63) çagirip o anda aktif olan görev blogu kimligini (10111) elde etmesi, kopyalama birimi (103) fonksiyonunun elde ettigi görev blogu kimligini (10111), yigin gösterici tablosunda (101) arayip ilgili görev blogunun tablodaki elemanina ulasmasi, kopyalama birimi (103) fonksiyonunun, içerisine veri kopyalamasi talep edilen içerisine veri kopyalanmasi talep edilen dizinin (611) baslangiç vei'veya bitis adresi yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) 10113) arasinda olmayan bir alana tekabül ediyorsa, kopyalama birimi (103) fonksiyonun sistem (1) hatasini olusturmasi, kopyalama birimi (103) fonksiyonunun, sistem (1) hatasi olusturmak için hata kayitlari bölümünden (8) bir birincil hata kaydi bölümünü (81) olusturmasi, hata tipi bölümüne (811) yigin tasmasi hatasi yazmasi, hata verisi bölümüne (812) görev blogu kimligini (10111) ve doldurulmak istenen adresleri yazmasi, yigin gösterici tablosundaki (101) görev blogu yigin baslangici (10112) ve görev blogu yigin sonu (10113) adresleri disinda bir alana tekabül etmiyorsa, kopyalama birimi (103) fonksiyonunun kopyalama islemini yapmasi Yöntemlerde, görev bloguna (71) ait olan üst fonksiyon (711) eger bir alt fonksiyona (7111) sahipse onu da çalistirabilir ve bu durumda görev blogu yigininda (61) alt fonksiyon (7111), en az bir dizi (611) olusturabilir. TR TR TR TR TR
TR2020/22224A 2020-12-29 2020-12-29 Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem TR202022224A2 (tr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TR2020/22224A TR202022224A2 (tr) 2020-12-29 2020-12-29 Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TR2020/22224A TR202022224A2 (tr) 2020-12-29 2020-12-29 Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem

Publications (1)

Publication Number Publication Date
TR202022224A2 true TR202022224A2 (tr) 2022-07-21

Family

ID=84083814

Family Applications (1)

Application Number Title Priority Date Filing Date
TR2020/22224A TR202022224A2 (tr) 2020-12-29 2020-12-29 Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem

Country Status (1)

Country Link
TR (1) TR202022224A2 (tr)

Similar Documents

Publication Publication Date Title
Hedayati et al. Hodor:{Intra-Process} isolation for {High-Throughput} data plane libraries
US7661035B2 (en) Method and system for instruction tracing with enhanced interrupt avoidance
US6240531B1 (en) System and method for computer operating system protection
EP1635263A2 (en) Method and apparatus for inserting code
US6735666B1 (en) Method of providing direct user task access to operating system data structures
EP1626338A1 (en) System and method for providing exceptional flow control in protected code through watchpoints
Venkatesh et al. Fast in-memory CRIU for docker containers
CA2231597A1 (en) Detecting concurrency errors in multi-threaded programs
US11727110B2 (en) Verifying stack pointer
CN104715202A (zh) 一种虚拟机中的隐藏进程检测方法和装置
US11366740B2 (en) Debugging shared memory errors
US8898413B2 (en) Point-in-time copying of virtual storage
CN114144764A (zh) 使用影子栈的栈跟踪
US6895583B1 (en) Task control block for a computing environment
Wiseman et al. Eliminating the threat of kernel stack overflows
US8892838B2 (en) Point-in-time copying of virtual storage and point-in-time dumping
US8689206B2 (en) Isolating operating system in-memory modules using error injection
US9251043B2 (en) Managed runtime enabling condition percolation
TR202022224A2 (tr) Gömülü yazilimlardaki̇ yiğin taşmalarini tespi̇t etmeyi̇ sağlayan bi̇r si̇stem ve yöntem
US7814288B2 (en) Protecting memory operations involving zero byte allocations
US11216280B2 (en) Exception interception
US7313566B1 (en) Method and apparatus for isolating selected heap objects using a faulting address trap
CN114253825A (zh) 内存泄漏检测方法、装置、计算机设备和存储介质
Wiseman et al. Safer Operating System for Vehicle Telematics
Zhou et al. PUSh: Data race detection based on hardware-supported prevention of unintended sharing