DOS ortamında bir joyce çekirdeği : tasarım ve gerçekleştirim
Yükleniyor...
Dosyalar
Tarih
item.page.authors
Süreli Yayın başlığı
Süreli Yayın ISSN
Cilt Başlığı
Yayınevi
Fen Bilimleri Enstitüsü
Özet
Eşzamanlı (concurrent) yazılım ve eşzamanlı yazılım teknikleri, yakın zamana kadar işletim sistemleri kapsamında ele alınmasına rağmen, giderek ayrık bir disiplin olma yolunda ilerlemektedir [1 J. Varolan bilgisayarların önemli bir bölümünün., kavramsal olarak birbirlerine çok yakın oldukları söylenebilir. Bir kontrol birimi, komutu ve ilişkin işlem değerlerini bellekten okur ve bir işlem birimine gönderir. Komut burada uygulanır ve sonuç belleğe geri gönderilir. Gu modelde program hızı, işlemci hızı ile birebir ilişkilidir. Ancak paralel mimarilerin geliştirilmesi ve paralel özelliklerin bir program içinden kullanılmasını mümkün kılan programlama dillerinin tasarlanması ile, işlemci hızlarında karşılık gelen artışlar olmadan da, program uygulama zamanlarında önemli azalmalar elde etmek mümkün olacaktır [2]. Her sıralı (sequential) algoritma, paralel dillerle ifade edilebilir (yapı hiçbir paralel özellik içermiyorsa bile). Fakat bunun tersini yapmak (paralel algoritmaları sıralı dillerle ifade etmek) ya tümüyle imkansızdır, ya da elde edilen sonuç orjinal modelin çok uzak ve karmaşık bir kopyası olacaktır. Joyce paralel kullanım amacı ile 1987 yılında Per Brınch Hansen tarafından tasarlanmış bir programlama dilidir [3]. Bu dile ilişkin ilk gerçekleştirim de yine 1987 yılında Per Brinch Hansen tarafından yapılmıştır [4]. Dil yapısı önemli ölçüde CSP (Communicating Sequential Processes) ve Pascal'dan ödünç alınmıştır. CSP kökenli komutlar dilin paralel özelliklerini, Pascal kökenli olanlar ise temel kontrol yapılarını ve veri tanımlama kesimlerini oluşturur. Joyce programları, "agent" adı verilen birimler tarafından oluşturulur. Joyce "agenf'ların özyineli (recursive) çağırılmasına olanak sağlar. Bir Joyce programının başlatılması, programın başlangıç (initial) "agenf'ını harekete geçirir. "Agenf'lar yaratıcıları ile eşzamanlı olarak koşan alt "agent"lar yaratabilirler. Bir "agenf'ın değişkenlerine diğer "agent"lar erişemez. "Agenf'lar kanallar yolu ile gönderilen sembollerle haberleşirler. Her kanalın bir alfabesi vardır (kanaldan yollanabilen sonlu sayıda sembol kümesi). Her sembolün bir adı vardır ve belli tipte bir mesaj taşır. Bir "agent" belli bir kanaldan bilgi göndermeye hazır, başka bir "agenf'da aynı kanaldan bilgi almaya hazır ise, bu iki "agenf'ın uyuştukları söylenir. Bu durum gerçekleştiği zaman, iki "agent" arasında bir haberleşme gerçekleşir. Gönderici "agenf 'tan gelen mesaj, alıcı "agenf'ın bir değişkenine atanır. Bir kanal üzerinde belli bir anda tek haberleşme işlemi gerçekleşebilir. Kanallar iki yönlü bilgi taşıyabilirler. Bir kanal, iki veya daha çok "agent" tarafından kullanılabilir. Eğer bir kanal ikiden çok "agent" tarafından kullanılıyorsa, onları bir dizi biçimde uyuşturmak mümkün olacaktır. "Poll" komutu bir "agenf'ın bir uyuşma sağlanana kadar birden fazla kanalı gözlemesini sağlar. Hem gönderici nemde alıcı "agenf'lar "poll" işleminden yararlanabilir. "Agenf'lar dinamik olarak kanal yaratıp, onlara yerel değişkenleri ile ulaşabilirler. Bir kanal yaratıldığı saman kanala ilişkin bir gösterge "agent" yerel değişkenine atanır. "Agent" göstergeyi alt "agenf'larına parametre olarak geçirebilir. Bir "agent" kendisini tanımlayan yordamın sonuna geldiği zaman, tüm sub "agenf'ları sonlanana kadar bekler. İlk Joyce gerçekleştiririni p-kod üreten bir Joyce derleyicisinden ve p-kod yorumlayıcısından oluşuyordu. Bu tezin amacı, aynı ortam üzerinde (tek işlemcili bir sistem) farklı bir gerçekleştiririn yapmaktır; dış yordamlardan oluşan bir Joyce çekirdeği ve Joyce'dan C'ye bir çevirici. Bu çalışma çeviricinin kendisini kapsamaz. Sadece temel çevirme kurallarını ve çekirdek kütüphanesini içerir. Kütüphane yordamları altı tanedir; - Activate : Yeni bir agent yaratmak için, - Allocate : Yeni bir haberleşme kanalı yaratmak için. - Communicate : Bir haberleşme isteğini bildirmek için, - Terminate : Tanımlayıcı yordamının sonuna gelmiş bir "agenf'ı sonlandırmak için, - Suspend : "Poll" operasyonu esnasında bir uyuşma sağlayamamış "agenf'ları geçici olarak durdurmak için, - EndPoll : "Poll" operasyonu içerisinde uyuşma sağlandığını bildirmek için kullanılır. bu gerçekleşirim orijinal Joyce tanımından bazı noktalarda ayrılmaktadır. ij Orijinal tanımda "poll" işlemine konu olan haberleşme taleplerinden herhangi birinin rasgele seçilmesi gerektiği söylenirken, burada ilk kaydedilmiş olan ("poll" bloğu içinde) haberleşme talepleri öncelikli olarak ele alınmaktadır. ii) Orijinal tanımda sadece giriş (input) tipi haberleşme taleplerinde değişken kullanımı sorunlu iken., burada hem giriş hem de çıkış tipi haberleşmelerde değişken kullanımı zorunludur. iii) Orijinal "poll" tanımı, bir uyuşma durumunda, iki taraftan en az birinin normal ("poll" olmayan) haberleşme isteğinde bulunmuş olmasını sorunlu kılarken, burada ikisi de "poll" durumunda olan "agenf'lar arasında bir uyuşma sağlanması mümkündür. iv) Orijinal tanımda kanal tipleri sadece temel veri tiplerini içerebilirken, burada kanalların kanal göstergeleri içermesi mümkündür. Bu çalışma da seçilen uygulama biçimi ve Per Brinch Hansen tarafından gerçekleştirilen uygulama biçiminin birbirlerine göre bazı avantaj ve dezavantajları olduğu söylenebilir. - Eğer çeviri (herhangi bir üst düzey dile) yöntemi benimsenirse, kod üretme görevi hedef dil derleyicisi tarafından gerçekleştirilecektir. Aksi durumda kod üretme işi de tasarımcı tarafından üstlenilmek zorundadır. - Eğer çeviri yöntemi benimsenirse, hedef sıralı dilin kütüphane yordamları Joyce programcısı tarafından kullanılabilir (Hiç olmazsa hata bulma amçları ile]. Böylece kaynak paralel dilin sınırları, hedef sıralı dilin özelliklerini de içerecek biçimde genişletilebilir. Bu durumda C programlama dilinin oldukça kuvvetli olan altyordam özellikleri sadece çevirici üzerinde yapılacak, göreli olarak basit değişiklikler ile Joyce diline monte edilebilir ve rahatça Joyce programı yazanlar tarafından kullanılabilir. - Eğer çevirici yöntemi kullanılırsa derleyicinin sıralı yapısı önemli problemler çıkarabilirler ve bazen bu problemler herhangi bir biçimde ilerlemeyi tümüyle engelleyici olabilirler. Bu konuda verilebilecek en iyi örnek derleyicilerin sisteme ilişkin bazı değişiklikler yapılma ihtimalini hesaba katmadan tasarlanmış olmasıdır. Yığın adreslerinin veya bası saklayıcı değerlerinin değişmeyeceğini varsayarak kod üreten yada optimizasyon amacı ile belirli bir çağrı ve geri dönüş mekanizması yerine durma göre birden fazla yöntem kullanabilen derleyicilerin yarattığı problemlerdir. - Eğer çevirici yöntemi kullanılırsa, paralel programlama diline ait paralel özelliklerin sıralı programlama terimleri ile düşünülmesi ve gerçeklenmesi gerekecektir ("Âgenf'ların C altyordamları, haberleşme kanallarının C yapıları ile gerçeklenmeleri gibi). Bu yöntemin, kaynak dildeki paralelliği azalttığı ve dili güçsüzleştirdiği söylenebilir.
Joyce is a small programming language designed for teaching the principles and practice of distributed processing. Joyce is a semantic variant of CSP with PASCAL notation. A Joyce program consists of nested procedures which define abstract machines known as agents. Agents may activate subagents dynamically, a subagent and its creator run concurrently. Agents communicate by means of symbols transmitted through channels. Two agents match when one of thern is ready to output a symbol to a channel and the other is ready to input the same symbol from the same channel. A polling statement enables an agent to examine one or more channels until it finds a matching agent. The first implementation consisted of a Joyce compiler, generating p-code and a p-code interpreter. The subject of this thesis is to try a different way in the implementation of Joyce to the same single processor environment; A Joyce kernel (consisting of external procedures) and a Joyce to C translator. The work does not include the translator itself, but only the kernel and a suggested set of rules for the translation process.
Joyce is a small programming language designed for teaching the principles and practice of distributed processing. Joyce is a semantic variant of CSP with PASCAL notation. A Joyce program consists of nested procedures which define abstract machines known as agents. Agents may activate subagents dynamically, a subagent and its creator run concurrently. Agents communicate by means of symbols transmitted through channels. Two agents match when one of thern is ready to output a symbol to a channel and the other is ready to input the same symbol from the same channel. A polling statement enables an agent to examine one or more channels until it finds a matching agent. The first implementation consisted of a Joyce compiler, generating p-code and a p-code interpreter. The subject of this thesis is to try a different way in the implementation of Joyce to the same single processor environment; A Joyce kernel (consisting of external procedures) and a Joyce to C translator. The work does not include the translator itself, but only the kernel and a suggested set of rules for the translation process.
Açıklama
Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 1991
Konusu
Bilgisayar Mühendisliği Bilimleri-Bilgisayar ve Kontrol, Eş zamanlı programlama, Programlama dilleri, Computer Engineering and Computer Science and Control, Simultaneous programming, Programming languages
