DoctorateOpen Access

Race detection techniques for applications using asynchronous programming models

2016
0 views
0 downloads
Advisor: Doç. Dr. Serdar Taşıran

Abstract (TR)

Asenkron programlama modelleri, mobil, masaüstü ve web uygulamaları gibi modern bilişim platformlarındaki eşzamanlı geliştirme uygulamalarında yaygın kullanımdadır. Bütün eşzamanlı programlarda olduğu gibi, asenkron programlarda da akış mantığını oturtmak geliştirici için zorlayıcıdır. Geçmişten günümüze gelmiş eşzamanlı yapılardan (örn. iş parçacıkları) farklı olarak, asenkron yapılarda (örn. geri çağırma) yürütmenin doğrusal bir sıralaması olmadığından ve bu sıralama asenkron olayların icrasına bağlı değişebildiğinden, bu yapılar kontrol ve veri akışını tersine çevirebilir. Bu durumda yakalaması güç eşzaman hataları ortaya çıkabilir ve bu hatalar farkedilmesi, yeniden üretilmesi ve tamir edilmesi zor olduğundan yazılım sürecinde ciddi etkilere sebep olabilir. Yarış durumları, eşzamanlı programlarda istemsiz belirsizliğin ana kaynağı olarak görülmekte ve yüksek seviyelerdeki eşzaman hatalarının göstergesi olarak görülmektedir. Geçmişten günümüze gelmiş eşzamanlı programlama modellerinde yarış durumlarını ortaya çıkarmak için hem araştırma çevrelerinden hem de sanayi çevrelerinden yoğun ilgi gösterilmiş olsa da, asenkron programlama modellerinde yarış durumlarını ortaya çıkarmak için kullanılacak metodlara kritik bir ihtiyaç vardır. Bu tez, bahsedilen ihtiyaçları karşılamak için, eşzaman methodu olarak asenkron programlama yapıları kullanan uygulamalarda yarış durumlarını ortaya çıkarmak için yeni teknikler sunmaktadır. Sunduğumuz bu yarış durumu belirleme tekniği farklı asenkron programlama modelleri üzerine uygulanabilir. Ana olarak, JavaScript web uygulamaları ve veriakışı programlama yapılarını paylaşımlı hafıza üzerine uygulayan melez programlama modelleri üzerinde odaklandık. Tekniğimiz; statik ve dinamik analiz yaklaşımlarının avantajlarını biraraya getirmeyi amaçlamaktadır. Yürütme kodu sadece bir kere çalıştırılır, fakat birçok yürütme sıralaması statik analiz yaklaşımı kullanılarak incelenir. Bu tekniğin temelindeki görüş, tekniğin paylaşımlı hafıza noktaları üzerindeki eşzamanlı değişimleri farklı sıralamalarda birbirinden bağımsız incelemek yerine birleştirilmiş bir yapıda saklamasından gelir. Tekniğimizi açıklamanın bir yolu, belirli bir yürütme için olası farklı sıralamaları gözönünde bulundurarak, komşu yürütme sıralamalarını tek bir yürütme üzerinden incelemektir. Çalışmamızın ilk adımı olarak, JavaScript web uygulamalarındaki asenkron yapıları kullanıcı etkileşimi ve sunucu yanıtları üzerinden inceledik. öncelikle, yarış durumlarının web uygulamalarındaki zararlarını belirleyebilmek için rastgele seçilmiş ve sistematik seçilmiş sıralamalı sunucu istemleri (XMLHttpRequest) kullanılarak deneysel çalışmalar yapılmıştır. Diğer uygulama çeşitlerine nazaran, web uygulamaları geçici durumlarda gözlenen yarış durumları konusunda, etkilerin kısa ömürlü olmasından dolayı daha affedici bir yapıya sahiptir. Bunun sebebi, bu yarış durumlarının sadece programın gözle görülmeyen kullanıcı kısımlarında oluşması ya da, en kötü ihtimalle, kullanıcı arayüzünde farkedilmeyen veya sayfayı yenileyerek yok edilebilen aksaklıklardan oluşmasındandır. Bu deneysel çalışmanın sonuçlarından yola çıkarak, web uygulamarındaki yarış durumlarında, kalıcı durum üzerinde odaklanmanın daha kullanışlı olacağını önerdik. Bu kalıcı durumlar kullanıcı tarafında saklanan çerezler, localStorage ve sessionStorage mekanizmaları olabileceği gibi sunucu tarafındaki yan etkiler de olabilir. Geliştirdiğimiz tekniği, asenkron yapıları yoğun şekilde kullanan 26 web sitesi üzerinde değerlendirdik ve zararsız yarışların (geçici durumlarda gözlenen) zararlı yarışlardan (kalıcı durumlarda gözlenen) çok daha yaygın olduğunu gözlemledik. Son olarak, JavaScript kütüphanelerinde yarış durumu ile ilgili hataları bildirmek için kullanılan yeni bir asenkron yapı -Promiseler- üzerinde bir araştırma çalışması hazırladık. Tezin ikinci kısmında, veriakışı yapılarını paylaşımlı hafıza programlama modelleriyle biraraya getiren melez programlama modelleri üzerinde çalıştık. Bu melez programlama modelleri, programcılara görevleri ana yürütme birimi olarak ve aralarındaki veri bağıntılarıyla birlikte tanımlamak için veriakışı soyutlaması sağlar. Saf veriakışı modelinin tersine, ki bu model görevlerin yan etki olmadan yürütüleceğini varsayar, melez modeller görevlerin iş parçacığı senkronizasyonu kullanarak (örn. kilit ve işlem belleği) veri paylaşmasına olanak verir. Olası yürütme sıralamaları ve uygulamayı oluşturan görevleri araştırmak için, olasılık garantili rastgeleleştirilmiş bir araştırma tekniği geliştirdik. Daha sonra, melez programlama modellerinde yarış durumlarını ortaya çıkarmak için kullanılacak modüler bir yarış belirleme tekniği geliştirdik. Farklı programlama modelleri tarafından -örneğin veri akışı ve paylaşımlı hafıza- dayatılan önce-olur ilişkileri (yürütme sırası) için modüler bir gösterim sunduk. Bu programlama modellerine örnek olarak veriakışı ve paylaşımlı hafıza verilebilir, ki bunlar belırleme mekanizmasını kilit bazlı ya da işlem hafızası bazlı senkronizasyon sistemleri gibi farklı tipteki paylaşımlı hafızalar için genişletmede kullanılabilir. Son olarak, geliştirdiğimiz yarış belirleme mekanizmasını genel bir prototip araç olarak kodladık, böylece geliştirdiğimiz bu araç farklı tiplerdeki melez programlama modelleri için de kolayca genişletilebilir.

Author

Dr. Erdal Mutlu

How to Cite

Erdal Mutlu (Doktora Tezi). Race detection techniques for applications using asynchronous programming models, 2016, Koç University.

Keywords

License

Tüm Hakları Saklıdır

This work is shared under the specified license terms.

More theses from Koç University