Bir dağıtılmış ortak bellek sisteminin gerçeklenmesi
- Global styles
- Apa
- Bibtex
- Chicago Fullnote
- Help
Abstract
BİR DAĞITILMIŞ ORTAK BELLEK SİSTEMİNİN GERÇEKLENMESI ÖZET Çağımızda büyük bir hızla ilerleyen bilgisayar teknolojisi sayesinde, yüksek işlem gücüne sahip süper-bilgisayarlar geliştirilmektedir. Gerek geleneksel iş istasyonları, gerekse çok işlemcili süper bilgisayar sistemlerinin performans düzeyleri her yıl katlanarak artmaktadır. Dönemin en üst teknolojisine sahip süper bilgisayarları geliştirmekte çeşitli alternatif yaklaşımlar kullanılmaktadır. Donanım tabanlı yaklaşımlar birden fazla işlemci ile bir veya daha fazla bellek modülünün değişik topolojilerle birbirlerine bağlanmasına dayamr. Yazılım tabanlı yaklaşımlar ise bir bilgisayar ağı ile birbirlerine bağlı olan, kendi işlemci ve hafıza kaynaklarına sahip bilgisayarların bir yazılım sayesinde paralel çalışmalarını sağlamayı amaçlar. Dağıtılmış Ortak Bellek sistemleri, yazılım tabanlı yaklaşımlardan birisidir. Tez çalışması sonucunda, Okunabilir Kopyalama Algoritmasını kullanan bir Dağıtılmış Ortak Bellek sistemi oluşturulmuştur. Okunabilir Kopyalama Algoritması okuma işlemlerinin yazma işlemlerine oranla daha fazla olduğu sistemler düşünülerek tasarlandığından, oluşturulan sistemde okuma işlemleri yazma işlemlerine göre daha az yük getirmektedir. Tez kapsamında oluşturulan sistemin programlanmasında JAVA dili kullanılmıştır. Dil seçimindeki en önemli etkenler Java'mn nesneye dayalı bir programlama dili olması, ağ programlaması için gerekli paketlerin dilin standart bir parçası olması ve Java'mn platform bağımsızlığı olmuştur. Java'mn sağladığı bir özellik olan ve özel şartlara uyan sınıflardan olan nesnelerin metotlarının ağ üzerindeki başka bir bilgisayarda yaşayan bir nesne tarafından çağnlabilmesini sağlayan RMI (Uzaktan Metot Çağırma) haberleşme sisteminin kullanımı sayesinde, oluşturulan Dağıtılmış Ortak Bellek (DSM) sistemi önemli bir esnekliğe kavuşturulmuştur. Metotları başkabilgisayarlardaki Java Sanal Makinelerinde yaşayan nesnelerce kullanılabilen nesneler Uzak Nesne olarak adlandırılmıştır. Çalışma sonucunda ortaya çıkan sistem, kullanıcılar tarafından tanımlanan her çeşit sınıftan nesnelerin saklanabileceği ve kullanılabileceği bir Dağıtılmış Ortak Bellek sistemi olmuştur. DSM sisteminde kullanılacak olan sınıflar iki gruba ayrılır. Birinci grup sınıftan olan nesneleri, sisteme ait her düğümde çalışması zorunlu olan DSM sunucusu prosesi oluşturur. Bu tip nesneler kullanılmadan önce DSM sunucusundan bir kopyası istenir ve işlemler bu kopya üzerinde yerel olarak yapılır. Yapılan yazma işlemlerinin sistem çapında geçerli olması için yine DSM sunucusunun ilgili metotları çağnlmalıdır. Görüldüğü gibi DSM sunucusu ile sıkı bir şekilde ilişkili olan bu tür sınıflar Sıkı Bağlı DSM Sınıfları, bu sınıflara ait nesneler de Sıkı Bağlı DSM nesneleri olarak adlandırılmıştır. DSM sisteminde kullanılan ikinci tür sınıftan nesnelerin kendileri de birer uzak nesnedir. Bu tip nesneler bir defalık oluşturucu proses tarafından canlandırıldıktan sonra bir düğümden diğerine taşınma ya da kopyalanma işlemleri haricinde DSM sunucusuna ya da oluşturucularına ihtiyaç duymazlar. Tüm işlemler nesnenin yaşadığı uzak düğümde yapılır. Dolaysıyla bu tip sınıflara Gevşek Bağlı DSM Sınıfları, bu sınıflara ait nesnelere de Gevşek Bağlı DSM nesneleri olarak adı verilmiştir. Gevşek bağlı DSM sınıflarının ve bu sınıflara ait oluşturucuların yazılması, sıkı bağlı DSM sınıflarına kıyasla daha zordur. Bunun nedeni, gevşek bağlı nesnelerin Okunabilir Kopyalama Algoritmasının gerçeklemesi sorumluluğunu oluşturucu prosesleri ile paylaşmalarıdır. Dolaysıyla bir gevşek bağlı DSM sınıfı yazmak isteyen kullanıcı, Okunabilir Kopyalama Algoritmasının gereği olan metotları oluşturacağı sınıfa eklemek zorundadır. Bütün bunlar sistemin çalışma prensiplerinden haberdar olmayı gerektirir. Bu durum göz önüne alınarak gevşek bağlı DSM sınıflarının kullanımını kolaylaştırmak için, sıradan bir sınıftan gevşek bağlı DSM sımfı üreten ve gerekli tüm diğer sınıflara ait kaynak kodlan oluşturan bir program C++ dili ile hazırlanmış ve tez çalışmasına eklenmiştir. IMPLEMENTATION OF A DISTRIBUTED SHARED MEMORY SYSTEM SUMMARY With the rapidly advancing electronic technology, super-computers are being designed to have very high processing power. Performace levels of both personal workstations and super-computers are constantly increasing. There are many alternative apporaches for having more processing power than a regular workstation having single or a few number of state-of-the-art microprocessors) can give. These fall into two groups : Hardware based apporaches rely on connecting many microprocessors and one or more memory modules with different topologies. The alternative software based apporaches rely on paralel workflow through standalone computers connected to each other with a network and running special control software. One of these software based apporaches is named Distributed Shared Memory system. In this work, a Distributed Shared Memory system is implemented by using the read-replication algorithm. The replication of shared data objects complicates issues in memory coherence. Therefore, release consistency model with write- invalidate coherence policy is used in the implemented system. The JAVA programming language is used in the implemented DSM system. Java is chosen for this task for the following reasons :. Java is an object oriented language.. Java was designed with network programming in mind, therefore Java has native classes for network related tasks.. Platform independance of Java enables different kinds of computers to partipiciate in the DSM system.. Java's Remote Method Invocation lets custom classes to be shared in the DSM system, therefore giving a big flexibility to the system.The custom objects to be used in the implemented DSM system fall into one of the two following groups. The first group consists of objects which should be created by the DSM server process running in each participiant node of the DSM system. These kinds of objects should be copied with a remote method of the local DSM server and all the processing is done locally. Modificiations on this shared object should be registered to the DSM server. As this kind of objects depend heavily on DSM servers, they are called Tightly Binded DSM Objects. Similarly, these kind of classes are named Tightly Binded DSM Classes. The second group of custom objects used in the implemented DSM system are too remote objects. These are created by their related spawner process once and their methods are accessed and executed remotely. These objects depend on their spawners only for the read-replication algorithm related tasks such as migrating and locking. In contrast to the other group, these objects are named Loosely Binded DSM Objects and their classes are named Loosely Binded DSM Classes. It is harder to code a loosely binded DSM class than coding a tightly binded one. Because they contain some methods needed for the read-replication algorithm as they share the responsibility of implementing the read-replication algorithm with their spawner process. These requirements urges the users to be aware of the working principles of the loosely binded DSM classes and their spawner classes. With reducing the necessary work for using the loosely binded DSM objects in mind, a preprocessor is coded with C++ which creates the necessary classes. This preprocessor needs the name of any `ordinary` class which will be used in the DSM system together with the names which will be given to these necessary classes for its input. The preprocessor itself is simple and it needs two template files for creating the loosely binded DSM class and the spawner class. The parts which should be changed for each different class are written in the template files between @ characters. The source code of this preprocessor and its executable are included in the companion floppy together with the template files. XI
Collections