internet pencereler Android

Dağıtık Sistemlere Giriş. Dağıtılmış Uygulama Mimarisi Dağıtılmış Bilgi İşlem Paradigması

Bilişim alanında tanınmış bir uzman olan E. Tanenbaum'a göre, dağıtık bir sistemin genel kabul görmüş ve aynı zamanda katı bir tanımı yoktur. Bazı fikirler, dağıtılanın böyle olduğunu iddia ediyor bilgi işlem sistemi, kullanıcıların varlığından daha önce şüphelenmediği bir bilgisayarın arızalanmasının tüm çalışmalarının sona ermesine yol açtığı. Dağıtılmış bilgi işlem sistemlerinin önemli bir kısmı ne yazık ki bu tanımı karşılamaktadır, ancak resmi olarak yalnızca benzersiz bir güvenlik açığı olan sistemlere atıfta bulunmaktadır ( tek başarısızlık noktası).

Genellikle, dağıtılmış bir sistem tanımlanırken, işlevlerin birkaç bilgisayar arasında bölünmesine odaklanılır. Bu yaklaşımla, herhangi biri dağıtılır bilgi işlem sistemi veri işlemenin iki veya daha fazla bilgisayar arasında bölündüğü yer. E. Tanenbaum'un tanımına dayanarak, biraz daha dar bir şekilde dağıtılmış bir sistem, iletişim kanallarıyla birbirine bağlanan bir dizi bağımsız bilgisayar olarak tanımlanabilir ve bazı yazılımların kullanıcısı açısından tek bir bütün gibi görünür.

Dağıtılmış bir sistemi tanımlamaya yönelik bu yaklaşımın dezavantajları vardır. Örneğin, böyle dağıtılmış bir sistemde kullanılan her şey yazılım tek bir bilgisayarda çalışabilir, ancak yukarıdaki tanımın bakış açısından, böyle bir sistem artık dağıtılmayacaktır. Bu nedenle, dağıtık sistem kavramı muhtemelen böyle bir sistemi oluşturan yazılımın analizine dayanmalıdır.

İki varlığın etkileşimini tanımlamanın bir temeli olarak, taraflardan birinin (müşteri) diğer tarafa (sunucu) bir istek göndererek veri alışverişini başlattığı genel müşteri-sunucu etkileşimi modelini düşünün. Sunucu talebi işler ve gerekirse istemciye bir yanıt gönderir (Şekil 1.1).


Pirinç. 1.1.

İstemci-sunucu modeli çerçevesinde etkileşim, istemci sunucunun isteğini işlemesini beklerken senkron veya istemcinin sunucuya bir istek gönderip sunucunun isteğini beklemeden yürütmeye devam ettiği asenkron olabilir. cevap. İstemci ve sunucu modeli, çeşitli etkileşimleri açıklamak için bir temel olarak kullanılabilir. Bu ders için dağıtık bir sistem oluşturan yazılımı oluşturan bileşenlerin etkileşimi önemlidir.


Pirinç. 1.2.

Modern kavramlara göre aşağıdaki mantıksal seviyelere ayrılabilen belirli bir tipik uygulama düşünün (Şekil 1.2): Kullanıcı arayüzü(PI), uygulama mantığı (LP) ve veri erişimi (DD), veritabanı (DB) ile çalışır. Sistem kullanıcısı, kullanıcı arayüzü aracılığıyla onunla etkileşime girer, veritabanı, uygulama alanını tanımlayan verileri depolar ve uygulama mantığı katmanı, ilgili tüm algoritmaları uygular. konu alanı.

Uygulamada, sistemin farklı kullanıcıları genellikle aynı verilere erişmekle ilgilendiğinden, böyle bir sistemin işlevlerinin birkaç bilgisayar arasında en basit şekilde ayrılması, uygulamanın mantıksal katmanlarının uygulamanın bir sunucu bölümü arasında ayrılması olacaktır. birkaç bilgisayarda bulunan verilere ve istemci bölümlerine erişimden sorumludur.kullanıcı arayüzünün uygulanması. Uygulama mantığı sunucuya, istemcilere atanabilir veya bunlar arasında paylaşılabilir (Şekil 1.3).


Pirinç. 1.3.

Bu ilkeye dayanan uygulamaların mimarisine istemci-sunucu veya iki katmanlı denir. Uygulamada, bu tür sistemler genellikle dağıtılmış olarak sınıflandırılmaz, ancak resmi olarak dağıtılmış sistemlerin en basit temsilcileri olarak kabul edilebilirler.

İstemci-sunucu mimarisinin geliştirilmesi, kullanıcı arayüzünün, uygulama mantığının ve veri erişiminin, sistemin bağımsız bilgisayarlarda çalışabilen bağımsız bileşenlerine ayrıldığı üç katmanlı bir mimaridir (Şekil 1.4).


Pirinç. 1.4.

Bu tür sistemlerde kullanıcının isteği, sistemin istemci kısmı, uygulama mantık sunucusu ve veritabanı sunucusu tarafından sırayla işlenir. Bununla birlikte, dağıtılmış bir sistem genellikle üç katmanlı bir sistemden daha karmaşık bir mimariye sahip bir sistem olarak anlaşılır.

Kurumsal çapta bir bilgi işleme sistemi oluşturma ilkeleri

Bilgisayar teknolojisinin (ve buna bağlı olarak yazılımın) gelişiminin tarihi, ayrı, özerk sistemlerle başladı. Bilim adamları ve mühendisler, ilk bilgisayarların yaratılmasıyla meşguldü ve esas olarak bu vakum tüplerinin nasıl çalıştırılacağı konusunda kafaları karışmıştı. Bununla birlikte, bu durum uzun sürmedi - bilgi işlem gücünü birleştirme fikri oldukça açıktı ve havadaydı, ilk ENIAK'ların ve Marks'ın metal dolaplarının uğultusuna doymuştu. Sonuçta, her biri için ayrı ayrı karmaşık, dayanılmaz görevleri çözmek için iki veya daha fazla bilgisayarın çabalarını birleştirme fikri yüzeyde yatmaktadır.

Pirinç. 1. Dağıtılmış bilgi işlem şeması

Bununla birlikte, bilgisayarları kümelere ve ağlara bağlama fikrinin pratik uygulaması, teknik çözümlerin olmaması ve her şeyden önce etkileşim için standartlar ve protokoller oluşturma ihtiyacı nedeniyle engellendi. Bildiğiniz gibi, ilk bilgisayarlar yirminci yüzyılın kırklı yaşlarının sonlarında ve Amerika Birleşik Devletleri'nde birkaç bilgisayarı birbirine bağlayan ilk bilgisayar ağı ARPANet, neredeyse yirmi yıl sonra ancak 1966'da ortaya çıktı. Elbette, modern dağıtılmış mimarinin böyle bir bilgi işlem yetenekleri kombinasyonu çok uzaklara benziyordu, ancak yine de doğru yönde atılan ilk adımdı.

Yerel alan ağlarının zaman içinde ortaya çıkması, yeni bir yazılım geliştirme alanının geliştirilmesine yol açtı - dağıtılmış uygulamaların oluşturulması. Bunu, dedikleri gibi, sıfırdan yapmak gerekiyordu, ancak neyse ki, iş yapısı bu tür çözümler gerektiren büyük şirketler bu tür uygulamalara hemen ilgi gösterdi. Kurumsal dağıtık uygulamaların oluşturulması aşamasında, temel gereksinimlerin oluşturulduğu ve günümüzde halen kullanılan bu tür sistemlerin ana mimarilerinin geliştirildiği görülmektedir.

Yavaş yavaş, ana bilgisayarlar ve terminaller, temelde dağıtılmış bir mimarinin, yani iki katmanlı bir dağıtılmış sistemin ilk versiyonu olan bir istemci-sunucu mimarisine doğru gelişti. Ne de olsa, hesaplama işlemlerinin ve iş mantığının bir kısmının istemci-sunucu uygulamalarında istemci tarafına aktarılmasıydı ve aslında bu yaklaşımın en önemli özelliği, ayırt edici özelliği haline geldi.

Bu dönemde, dağıtılmış uygulamaların ana avantajlarının aşağıdakiler olduğu ortaya çıktı:

· İyi ölçeklenebilirlik - gerekirse, dağıtılmış bir uygulamanın bilgi işlem gücü, yapısını değiştirmeden kolayca artırılabilir;

· Dağıtılmış bir uygulamanın yük - ara seviyelerini yönetme yeteneği, kullanıcı isteklerinin akışlarını yönetmeyi ve bunları işleme için daha az yüklü sunuculara yönlendirmeyi mümkün kılar;

· Küresellik - dağıtılmış bir yapı, iş süreçlerinin mekansal dağılımını takip etmenize ve en uygun noktalarda müşteri işyerleri oluşturmanıza olanak tanır.

Zaman geçtikçe, küçük üniversite adaları, hükümet ve şirket ağları genişledi, bölgesel ve ulusal sistemlerde birleşti. Ve sonra ana oyuncu sahneye çıktı - İnternet.

World Wide Web hakkında övgü dolu övgüler, bilgisayar konularındaki yayınlar için uzun zamandır yaygın bir yer olmuştur. Gerçekten de İnternet, dağıtılmış bilgi işlemin geliştirilmesinde çok önemli bir rol oynamıştır ve bu oldukça özel yazılım geliştirme alanını profesyonel programcılar ordusunun odak noktası haline getirmiştir. Bugün, dağıtılmış uygulamaların kullanımını önemli ölçüde genişleterek, uzak kullanıcıların bağlantı kurmasına ve uygulama işlevlerini her yerde kullanılabilir hale getirmesine olanak tanır.

Sorunun tarihi bu. Şimdi dağıtık uygulamaların ne olduğuna bir göz atalım.

Dağıtılmış bilgi işlem paradigması

Oldukça büyük bir üretim tesisi, ticaret şirketi veya hizmet sağlayıcısı düşünün. Tüm bölümlerinin zaten kendi veritabanları ve özel yazılımları var. Merkez ofis, bir şekilde bu departmanların mevcut faaliyetleri hakkında bilgi toplar ve yöneticilere yönetim kararlarını esas alarak bilgi sağlar.

Devam edelim ve düşündüğümüz organizasyonun başarılı bir şekilde geliştiğini, şubeler açtığını, yeni ürün veya hizmetler geliştirdiğini varsayalım. Ayrıca, son toplantıda, ileri görüşlü yöneticiler, müşterilerin siparişlerinin yerine getirilmesi hakkında bazı bilgiler alabilecekleri bir uzak iş istasyonları ağı düzenlemeye karar verdiler.

Açıklanan durumda, iş akışlarını önceden yönetmek için genel bir sistem oluşturmaya özen göstermediyse, yalnızca BT departmanı başkanı için üzülmek kalır, çünkü onsuz, etkili gelişmeyi sağlamak çok zor olacaktır. organizasyonun. Ayrıca, artan yük dikkate alınarak tasarlanmış ve dahası ana iş akışlarına karşılık gelen kurumsal çapta bir bilgi işleme sistemi olmadan yapılamaz, çünkü tüm departmanlar yalnızca görevlerini değil, aynı zamanda gerekirse işleme taleplerini de yerine getirmelidir. diğer departmanlardan ve hatta (bir proje yöneticisi için kabus!) müşterilerden.

Bu nedenle, üretim sürecinin organizasyonu tarafından belirlenen modern kurumsal ölçekli uygulamalar için temel gereksinimleri formüle etmeye hazırız.

Mekansal ayrılık. Organizasyonun bölümleri uzayda dağılmıştır ve çoğu zaman zayıf bir şekilde birleştirilmiş yazılımlara sahiptir.

Yapısal Uygunluk. Yazılım, işletmenin bilgi yapısını yeterince yansıtmalı - ana veri akışlarına karşılık gelmelidir.

Dış bilgilere yönlendirme. Modern işletmeler, müşterilerle çalışmaya daha fazla dikkat etmek zorunda kalıyor. Bu nedenle kurumsal yazılımlar yeni bir kullanıcı tipi ve onların ihtiyaçları ile çalışabilmelidir. Bu tür kullanıcılar açıkça sınırlı haklara sahiptir ve kesin olarak tanımlanmış bir veri türüne erişime sahiptir.

Kuruluş çapında yazılım için listelenen tüm gereksinimler, dağıtılmış sistemler tarafından karşılanır - hesaplama dağıtım şeması Şekil 2'de gösterilmektedir. 1.

Elbette, dağıtılmış uygulamalar kusurlardan arınmış değildir. Birincisi, işletmeleri pahalıdır ve ikincisi, bu tür uygulamaların oluşturulması zahmetli ve karmaşık bir süreçtir ve tasarım aşamasında bir hatanın maliyeti çok yüksektir. Bununla birlikte, dağıtılmış uygulamaların gelişimi iyi ilerliyor - oyun muma değer, çünkü bu tür yazılımlar organizasyonun verimliliğini artırmaya yardımcı oluyor.

Bu nedenle, dağıtılmış bilgi işlem paradigması, bilgileri depolamak ve işlemek, çeşitli işlevleri uygulamak ve birbirinden ayrı olmak için birkaç merkezin (sunucu) varlığını ima eder. Bu merkezler, sistemin istemcilerinin isteklerine ek olarak, bazı durumlarda ilk görevin çözümü birkaç sunucunun ortak çabalarını gerektirebileceğinden, birbirlerinin isteklerini de yerine getirmek zorundadır. Karmaşık talepleri ve sistemin bir bütün olarak işleyişini yönetmek için özel kontrol yazılımı gereklidir. Ve son olarak, tüm sistem, parçalarının etkileşimini sağlayan bir tür taşıma ortamına "daldırılmalıdır".

Dağıtılmış bilgi işlem sistemleri aşağıdaki gibi ortak özelliklere sahiptir:

· Yönetilebilirlik - sistemin bileşenlerini etkin bir şekilde kontrol etme yeteneğini ifade eder. Bu, kontrol yazılımının kullanılmasıyla sağlanır;

· Performans - kontrol yazılımı kullanılarak sistem sunucuları üzerindeki yükün yeniden dağıtılması olasılığı nedeniyle sağlanır;

Ölçeklenebilirlik - performansta fiziksel bir artış gerekiyorsa, dağıtılmış bir sistem yeni bilgi işlem kaynaklarını taşıma ortamına kolayca entegre edebilir;

· Genişletilebilirlik - dağıtılmış uygulamalara yeni işlevlere sahip yeni bileşenler (sunucu yazılımı) eklenebilir.

Dağıtılmış uygulamalardaki verilere erişim, istemci yazılımından mümkündür ve diğer dağıtılmış sistemler, istemci yazılımı ve taşıma protokollerinden veritabanı sunucularının korunmasına kadar çeşitli düzeylerde organize edilebilir.

Pirinç. 2. Dağıtılmış bir uygulamanın mimarisinin ana seviyeleri

Dağıtılmış sistemlerin listelenen özellikleri, geliştirmelerinin karmaşıklığına ve yüksek bakım maliyetlerine katlanmak için yeterli bir nedendir.

Dağıtılmış Uygulama Mimarisi

Karmaşık ve çeşitli işlevleri yerine getirmesine izin veren dağıtılmış bir uygulamanın mimarisini düşünün. Farklı kaynaklar, dağıtılmış uygulamalar oluşturmak için farklı seçenekler sunar. Ve hepsinin var olma hakkı vardır, çünkü bu tür uygulamalar birçok konu alanındaki en geniş sorunları çözer ve geliştirme araçlarının ve teknolojilerinin önlenemez gelişimi, sürekli iyileştirmeyi zorlar.

Bununla birlikte, birkaç mantıksal katmana, veri işleme katmanlarına bölündüğü, dağıtılmış bir uygulamanın en genel mimarisi vardır. Bildiğiniz gibi, uygulamalar bilgiyi işlemek için tasarlanmıştır ve burada üç ana işlevini ayırt edebiliriz:

· Veri sunumu (kullanıcı seviyesi). Burada uygulama kullanıcıları gerekli verileri görüntüleyebilir, yürütme talebi gönderebilir, sisteme yeni veriler girebilir veya düzenleyebilir;

· Veri işleme (orta seviye, ara katman yazılımı). Bu seviyede uygulamanın iş mantığı yoğunlaşır, veri akışları yönetilir ve uygulama bölümlerinin etkileşimi düzenlenir. Dağıtılmış uygulamaların ana avantajı olarak kabul edilen, tüm veri işleme ve kontrol işlevlerinin bir düzeyde toplanmasıdır;

· Veri depolama (veri katmanı). Bu, veritabanı sunucusu katmanıdır. Sunucuların kendileri, veritabanları, veri erişim araçları ve çeşitli yardımcı araçlar burada bulunur.

Bu mimariye genellikle üç katmanlı veya üç katmanlı mimari denir. Ve çoğu zaman bu "üç balina" temelinde geliştirilen uygulamanın yapısı oluşturulur. Her seviyenin birkaç alt seviyeye bölünebileceği her zaman not edilir. Örneğin, kullanıcı seviyesi, gerçek kullanıcı arayüzüne ve girdi verilerinin doğrulanması ve işlenmesine ilişkin kurallara bölünebilir.

Tabii ki, alt seviyelere ayrılma olasılığını hesaba katarsak, o zaman herhangi bir dağıtılmış uygulama üç katmanlı mimariye dahil edilebilir. Ancak burada, dağıtılmış uygulamalarda bulunan başka bir karakteristik özelliği göz ardı edemeyiz - bu veri yönetimidir. Bu özelliğin önemi açıktır, çünkü isteklerini ve yanıtlarını yönetmeyen gerçek dünya dağıtılmış bir uygulama (tüm istemci istasyonları, ara katman yazılımı, veritabanı sunucuları vb. ile) oluşturmak çok zordur. Bu nedenle, dağıtılmış bir uygulamanın başka bir mantıksal katmanı olmalıdır - veri yönetimi katmanı.

Pirinç. 3. Dağıtılmış bir uygulamanın seviyeleri arasında iş mantığının dağılımı

Bu nedenle, ara seviyenin iki bağımsız seviyeye bölünmesi tavsiye edilir: veri işleme seviyesi (verdiği önemli avantajı dikkate almak gerektiğinden - veri işleme için iş kurallarının konsantrasyonu) ve veri yönetimi seviyesi. İkincisi, isteklerin yürütülmesi üzerinde kontrol sağlar, veri akışlarıyla çalışmayı sürdürür ve sistemin bölümlerinin etkileşimini düzenler.

Bu nedenle, dağıtılmış mimarinin dört ana seviyesi vardır (bkz. Şekil 2):

· Veri sunumu (kullanıcı seviyesi);

· İş mantığı kuralları (veri işleme katmanı);

· Veri yönetimi (veri yönetimi katmanı);

· Veri depolama (veri depolama katmanı).

İlki hariç dört seviyeden üçü doğrudan veri işlemeyle ilgilidir ve veri sunum katmanı bunları görselleştirmenize ve düzenlemenize izin verir. Bu katmanın yardımıyla kullanıcılar, veri işleme katmanından verileri alır ve bu katman da depolardan bilgi alır ve gerekli tüm veri dönüşümlerini gerçekleştirir. Yeni bilgiler girdikten veya mevcut verileri düzenledikten sonra, veri akışları geriye doğru yönlendirilir: kullanıcı arayüzünden iş kuralları katmanı aracılığıyla havuza.

Başka bir katman - veri yönetimi - veri omurgasından ayrıdır, ancak tüm sistemin sorunsuz çalışmasını, istekleri ve yanıtları ve uygulamanın bölümlerinin etkileşimini yönetmesini sağlar.

Ayrı olarak, verileri salt okunur modda görüntüleme seçeneğini değerlendirmek gerekir. Bu durumda herhangi bir değişiklik yapmaya gerek olmadığı için genel veri aktarım şemasında veri işleme katmanı kullanılmaz. Ve bilgi akışının kendisi tek yönlüdür - depolamadan veri sunum düzeyine.

Dağıtılmış uygulamaların fiziksel yapısı

Şimdi dağıtık uygulamaların fiziksel katmanlarına dönelim. Dağıtılmış bir sistemin topolojisi, birkaç veritabanı sunucusuna, veri işleme sunucularına ve yerel ve uzak istemcilerden oluşan bir koleksiyona bölünmeyi gerektirir. Hepsi herhangi bir yere yerleştirilebilir: aynı binada veya başka bir kıtada. Her durumda, dağıtılmış bir sistemin parçaları güvenilir ve güvenli iletişim hatlarıyla bağlanmalıdır. Veri aktarım hızına gelince, büyük ölçüde sistemin iki parçası arasındaki veri işleme ve iletimi arasındaki bağlantının önemine ve daha az ölçüde mesafelerine bağlıdır.

İş mantığının dağıtılmış uygulama katmanları arasında dağılımı

Şimdi, dağıtılmış bir sistemin düzeylerinin ayrıntılı bir açıklamasına geçmenin zamanıdır, ancak önce uygulama işlevselliğinin düzeyler arasında dağılımı hakkında birkaç söz söyleyelim. İş mantığı, üç katmanlı mimarinin herhangi bir seviyesinde uygulanabilir.

Veritabanı sunucuları yalnızca veritabanlarında veri depolamakla kalmaz, aynı zamanda uygulamanın iş mantığının bir kısmını saklı yordamlarda, tetikleyicilerde vb. içerir.

İstemci uygulamaları ayrıca veri işleme kurallarını da uygulayabilir. Kurallar dizisi asgari düzeydeyse ve esas olarak veri girişinin doğruluğunu kontrol etme prosedürlerine bağlıysa, "zayıf" bir müşteriyle uğraşıyoruz demektir. Öte yandan, kalın bir istemci, uygulamanın işlevselliğinin büyük bir bölümünü içerir.

Veri işleme düzeyi aslında uygulamanın iş mantığını uygulamaya yöneliktir ve veri işlemeye ilişkin tüm temel kurallar burada yoğunlaşmıştır.

Bu nedenle, genel durumda, uygulamanın işlevselliği uygulama boyunca "bulaşır". Uygulama katmanları arasında iş mantığının tüm çeşitliliği, belirli bir yerde yoğunlaşan veri işleme kurallarının oranını gösteren düzgün bir eğri olarak temsil edilebilir. Şekildeki eğriler. 3 nitelikseldir, ancak yine de uygulama yapısındaki değişikliklerin kuralların dağılımını nasıl etkileyebileceğini görmenize izin verir.

Ve uygulama bu sonucu doğrular. Sonuçta, her zaman veritabanı sunucusunun saklı yordamlarında uygulanması gereken birkaç kural vardır ve verilerle yapılan bazı ilk işlemleri istemci tarafına aktarmak - en azından yanlış işlemlerin işlenmesini önlemek için - genellikle uygundur. istekler.

Sunum katmanı

Veri sunum katmanı, son kullanıcının kullanabileceği tek katmandır. Bu katman, dağıtılmış bir uygulamanın ve karşılık gelen yazılımın istemci iş istasyonlarını simüle eder. İstemci iş istasyonunun yetenekleri, öncelikle işletim sisteminin yetenekleri tarafından belirlenir. Kullanıcı arabiriminin türüne bağlı olarak, istemci yazılımı iki gruba ayrılır: GUI özelliklerini kullanan istemciler (örneğin, Windows) ve Web istemcileri. Ancak her durumda, istemci uygulaması aşağıdaki işlevleri sağlamalıdır:

· Veri alıyor;

· Kullanıcı tarafından görüntülenmesi için verilerin sunumu;

· Veri düzenleme;

· Girilen verilerin doğruluğunu kontrol etmek;

· Yapılan değişiklikleri kaydetme;

· İstisnaları işlemek ve kullanıcı için hatalarla ilgili bilgileri görüntülemek.

Tüm iş kurallarının veri işleme düzeyinde yoğunlaştırılması arzu edilir, ancak pratikte bu her zaman mümkün değildir. Sonra iki tür istemci yazılımı hakkında konuşurlar. İnce istemci, minimum bir dizi iş kuralı içerirken, kalın istemci, uygulama mantığının önemli bir bölümünü uygular. İlk durumda, dağıtılmış uygulamada hata ayıklamak, modernize etmek ve genişletmek çok daha kolaydır, ikincisinde, bazı işlemler istemci tarafında gerçekleştirilebildiğinden, veri yönetimi katmanı oluşturma ve koruma maliyetini en aza indirebilirsiniz ve yalnızca veri aktarımı ara katman yazılımına düşer.

Veri işleme katmanı

Veri işleme katmanı, uygulamanın iş mantığını uygulayan parçaları birleştirir ve sunum katmanı ile depolama katmanı arasında bir aracıdır. Tüm veriler içinden geçer ve çözülmekte olan problem nedeniyle onda değişikliklere uğrar (bkz. Şekil 2). Bu seviyenin işlevleri şunları içerir:

· Veri akışlarının iş kurallarına uygun olarak işlenmesi;

· Talepleri almak ve yanıtları iade etmek için veri sunum katmanıyla etkileşim;

· İstek göndermek ve yanıt almak için veri depolama katmanıyla etkileşim.

Çoğu zaman, veri işleme katmanı, dağıtılmış bir uygulamanın ara yazılımı ile eşittir. Bu durum "ideal" bir sistem için tamamen doğrudur ve gerçek uygulamalar için sadece kısmen doğrudur (bkz. Şekil 3). İkincisine gelince, onlar için ara yazılım büyük oranda veri işleme kuralları içerir, ancak bazıları SQL sunucularında saklı prosedürler veya tetikleyiciler şeklinde uygulanır ve bazıları istemci yazılımına dahil edilir.

İş mantığının bu tür "bulanıklaştırılması", bazı veri işleme prosedürlerinin basitleştirilmesine izin verdiği için haklıdır. Sipariş ifadesinin klasik bir örneğini ele alalım. Yalnızca stokta bulunan ürünlerin adlarını içerebilir. Bu nedenle, siparişe belirli bir kalem eklenirken ve miktarı belirlenirken, bu kalemin depoda kalanından karşılık gelen sayı çıkarılmalıdır. Açıkçası, bu mantığı uygulamanın en iyi yolu, saklı bir prosedür veya bir tetikleyici olan DB sunucusudur.

Veri yönetimi katmanı

Uygulamanın tutarlı, esnek ve güvenilir kalmasını, modernleştirme ve ölçeklendirme yeteneğine sahip olmasını sağlamak için veri yönetimi katmanına ihtiyaç vardır. Sistem görevlerinin yürütülmesini sağlar, onsuz, uygulamanın bölümleri (veritabanı sunucuları, uygulama sunucuları, ara katman yazılımı, istemciler) birbirleriyle etkileşime giremez ve yük artışı sırasında kopan bağlantılar geri yüklenemez.

Ayrıca uygulamanın çeşitli sistem hizmetleri veri yönetimi düzeyinde gerçekleştirilebilir. Ne de olsa, uygulamanın tüm seviyelerinin çalışması için gerekli olan tüm uygulamada her zaman ortak işlevler vardır, bu nedenle diğer seviyelerin hiçbirinde yer alamazlar.

Örneğin, bir zaman damgası hizmeti, bir uygulamanın tüm bölümlerine, onları senkronize tutan sistem zaman damgaları sağlar. Dağıtılmış bir uygulamanın, belirli bir son tarihe sahip istemcilere görevler gönderen bir sunucusu olduğunu hayal edin. Son teslim tarihi kaçırılırsa, görev gecikme süresinin hesaplanması ile kaydedilmelidir. İstemci iş istasyonları sunucuyla aynı binada veya bitişik bir sokakta bulunuyorsa sorun değil, muhasebe algoritması basittir. Peki ya müşteriler farklı zaman dilimlerinde bulunuyorsa - başka ülkelerde veya hatta denizaşırı ülkelerde? Bu durumda sunucunun iş gönderirken ve yanıt alırken saat dilimlerini dikkate alarak farkı hesaplayabilmesi gerekir ve istemcilerin raporlara yerel saat ve saat dilimi ile ilgili hizmet bilgilerini eklemesi gerekecektir. Dağıtılmış bir uygulamaya tek seferlik bir hizmet dahil edilmişse, bu sorun basitçe mevcut değildir.

Tek seferlik hizmete ek olarak, veri yönetimi katmanı, genel bilgileri (bir bütün olarak uygulama hakkında bilgi) depolamak, genel raporlar oluşturmak vb. için hizmetler içerebilir.

Bu nedenle, veri yönetimi katmanının işlevleri şunları içerir:

· Dağıtılmış bir uygulamanın parçalarını yönetme;

· Uygulamanın bölümleri arasındaki bağlantıların ve iletişim kanallarının yönetimi;

· İstemciler ve sunucular arasındaki ve sunucular arasındaki veri akışlarının kontrolü;

· Yükleme kontrolü;

· Uygulamanın sistem hizmetlerinin uygulanması.

Veri yönetimi katmanının genellikle çeşitli üreticiler tarafından yazılım pazarına sağlanan hazır çözümler temelinde oluşturulduğuna dikkat edilmelidir. Geliştiriciler uygulamaları için CORBA mimarisini seçtiyse, bir Nesne İstek Aracısı (ORB) içerir, platform Windows ise hizmetlerinde çeşitli araçlar bulunur: COM + teknolojisi (Microsoft İşlem Sunucusu teknolojisinin geliştirilmesi, MTS ), işleme teknolojisi MSMQ mesaj kuyrukları, Microsoft BizTalk teknolojisi vb.

Veri depolama katmanı

Depolama katmanı, uygulama tarafından kullanılan SQL sunucularını ve veritabanlarını bir araya getirir. Aşağıdaki görevlere çözüm sağlar:

· Verilerin bir veri tabanında saklanması ve çalışır vaziyette tutulması;

· Veri işleme düzeyine ilişkin taleplerin işlenmesi ve sonuçların döndürülmesi;

· Dağıtılmış bir uygulamanın iş mantığının bir bölümünün uygulanması;

· Veritabanı sunucularının yönetim araçlarını kullanarak dağıtık veritabanlarının yönetimi.

Belirgin işlevlere ek olarak - veri depolama ve sorguları işleme, bir katman saklı prosedürlerde, tetikleyicilerde, kısıtlamalarda vb. uygulamanın iş mantığının bir bölümünü içerebilir. Ve uygulama veritabanının yapısı (tablolar ve alanları, dizinler, yabancı anahtarlar, vb.) ) dağıtılmış uygulamanın çalıştığı veri yapısının bir uygulaması ve bazı iş mantığı kurallarının uygulanması vardır. Örneğin, bir veritabanı tablosunda bir yabancı anahtarın kullanımı, tablonun yabancı anahtarıyla bağlantılı ilgili kayıtlar varsa, ana tablonun kayıtları silinemeyeceğinden, veri manipülasyonlarında karşılık gelen bir kısıtlamanın oluşturulmasını gerektirir.

Çoğu veritabanı sunucusu, dağıtılmış veritabanı yönetimi dahil olmak üzere çeşitli yönetim prosedürlerini destekler. Bunlar, veri çoğaltma, uzaktan arşivleme, uzak veritabanlarına erişim araçları vb. içerir. Kendi dağıtılmış uygulamanızın yapısını geliştirirken bu araçları kullanma olasılığı dikkate alınmalıdır.

SQL Server veritabanlarına bağlanma, öncelikle sunucu istemci yazılımı ile yapılır. Ayrıca, örneğin ADO (ActiveX Data Objects) veya ADO.NET gibi çeşitli veri erişim teknolojileri de kullanılabilir. Ancak bir sistem tasarlarken, işlevsel olarak ara veri erişim teknolojilerinin veri depolama düzeyine ait olmadığını dikkate almak gerekir.

Temel Seviye Uzantıları

Yukarıdaki dağıtılmış uygulama mimarisi seviyeleri temeldir. Oluşturulan uygulamanın yapısını bir bütün olarak oluştururlar, ancak aynı zamanda elbette herhangi bir uygulamanın uygulanmasını sağlayamazlar - konu alanları ve görevler çok geniş ve çeşitlidir. Bu gibi durumlarda, dağıtılmış bir uygulamanın mimarisi, oluşturulan uygulamanın özelliklerini yansıtacak şekilde tasarlanmış ek katmanlarla genişletilebilir.

Diğerlerinin yanı sıra, en yaygın olarak kullanılan temel seviye uzantılarından ikisi vardır.

İş arabirimi katmanı, kullanıcı arabirimi katmanı ile veri işleme katmanı arasında yer alır. İstemci uygulama program kodunun uygulama mantığının uygulama özelliklerinden soyutlanmasını sağlayarak, veri işleme katmanının iş kurallarının yapısının ve uygulamasının ayrıntılarını istemci uygulamalarından gizler.

Sonuç olarak, istemci uygulamalarının geliştiricileri, bir uygulama programlama arabiriminin (API) bir analogu olan belirli bir dizi gerekli işlevi kullanır. Bu, istemci yazılımını veri işleme katmanının uygulanmasından bağımsız hale getirir.

Tabii ki, sistemde ciddi değişiklikler yaparken, global değişiklikler olmadan yapamazsınız, ancak iş arayüzünün seviyesi, kesinlikle gerekli olmadıkça bunu yapmamanızı sağlar.

Veri erişim katmanı, veri depolama katmanı ile veri işleme katmanı arasında yer alır. Uygulamanın yapısını belirli bir veri depolama teknolojisinden bağımsız hale getirmenizi sağlar. Bu gibi durumlarda, veri işleme katmanının yazılım nesneleri, seçilen veri erişim teknolojisinin araçlarını kullanarak istek gönderir ve yanıtlar alır.

Windows platformunda uygulamalar uygularken, SQL sunucularından elektronik tablolara kadar çok çeşitli veri kaynaklarına erişmek için evrensel bir yol sağladığından, ADO veri erişim teknolojisi en sık kullanılır. .NET platformundaki uygulamalar için ADO.NET teknolojisi kullanılmaktadır.

Önceki bölümde, paylaşılan belleğe, paylaşılan çekirdek veri yapılarına ve süreçlerin çağrıldığı paylaşılan bir havuza sahip sıkı bir şekilde bağlanmış çok işlemcili sistemlere baktık. Bununla birlikte, çoğu zaman, işlemcileri, kaynak paylaşımı amaçları için işletim ortamından ve işletim koşullarından bağımsız olacak şekilde tahsis etmek arzu edilir. Örneğin, bir kişisel bilgisayar kullanıcısının daha büyük bir makinede bulunan dosyalara erişmesi gerektiğini, ancak aynı zamanda kişisel bilgisayar üzerindeki kontrolünü elinde tutması gerektiğini varsayalım. uucp gibi bazı programlar ağ dosya aktarımını ve diğer ağ işlevlerini desteklese de, kullanıcı ağı kullandığını bildiği için bunların kullanımı kullanıcıdan gizlenmeyecektir. Ayrıca, metin düzenleyiciler gibi programların, sıradan dosyalar gibi silinen dosyalarla çalışmadığına dikkat edilmelidir. Kullanıcılar, standart UNIX sistem işlevlerine sahip olmalı ve olası performans cezasının yanı sıra, makine sınırlarını aşmamalıdır. Bu nedenle, örneğin, uzak makinelerdeki dosyalarla açılan ve okunan sistem işlevlerinin çalışması, yerel sistemlere ait dosyalarla çalışmalarından farklı olmamalıdır.

Dağıtılmış sistem mimarisi Şekil 13.1'de gösterilmektedir. Şekilde gösterilen her bilgisayar, bir CPU, bellek ve çevre birimlerinden oluşan bağımsız bir birimdir. Bilgisayarın yerel bir dosya sistemi olmamasına rağmen model bozulmaz: diğer makinelerle iletişim kurmak için çevresel aygıtlara sahip olması gerekir ve ona ait tüm dosyalar başka bir bilgisayarda bulunabilir. Her makinenin kullanabileceği fiziksel bellek, diğer makinelerde çalışan işlemlerden bağımsızdır. Bu bakımdan, dağıtılmış sistemler, bir önceki bölümde tartışılan sıkı bağlı çok işlemcili sistemlerden farklıdır. Buna göre, her makinedeki sistemin çekirdeği, dağıtılmış ortamın harici çalışma koşullarından bağımsız olarak çalışır.

Şekil 13.1. Dağıtılmış mimari sistem modeli


Literatürde iyi tanımlanmış dağıtılmış sistemler, geleneksel olarak aşağıdaki kategorilere ayrılır:

Güçlü bir ortaklığa sahip olan ve bir (genellikle daha büyük) makineyle ilişkilendirilen makine grupları olan çevresel sistemler. Çevresel işlemciler yüklerini merkezi işlemci ile paylaşır ve işletim sistemine yapılan tüm çağrıları ona iletir. Bir çevre birimi sisteminin amacı, genel ağ performansını artırmak ve bir işlemciyi UNIX işletim ortamında tek bir işleme tahsis etme yeteneği sağlamaktır. Sistem ayrı bir modül olarak başlar; Diğer dağıtılmış sistem modellerinden farklı olarak, süreç gönderme ve yerel bellek tahsisi ile ilgili durumlar dışında, çevresel sistemlerin gerçek özerkliği yoktur.

Kütüphanedeki uzak dosyaların adlarıyla uzaktan iletişime izin veren "Newcastle" gibi dağıtılmış sistemler (ad "The Newcastle Connection" makalesinden alınmıştır - bkz.). Silinen dosyalar, arama yolunda özel karakterler veya dosya sisteminin kökünden önce gelen isteğe bağlı bir ad bileşeni içeren bir Malzeme Listesine (ayırt edici ad) sahiptir. Bu yöntemin uygulanması, sistem çekirdeğindeki değişiklikleri içermez ve bu nedenle bu bölümde tartışılan diğer yöntemlerden daha basittir, ancak daha az esnektir.

Dağıtılmış sistemler, diğer makinelerde bulunan dosyalara erişmek için standart ayırt edici adların yeterli olduğu tamamen şeffaftır; bu dosyaları silinmiş olarak tanımak çekirdeğe bağlıdır. Bileşik adlarında belirtilen dosya arama yolları, dosya sistemleri disklere monte edildiğinde bu tür kaç nokta oluşturulmuş olursa olsun, bağlama noktalarında makine sınırlarını geçer.

Bu bölümde, her modelin mimarisine bakacağız; sağlanan tüm bilgiler belirli gelişmelerin sonuçlarına değil, çeşitli teknik makalelerde yayınlanan bilgilere dayanmaktadır. Bu, protokol modüllerinin ve aygıt sürücülerinin adresleme, yönlendirme, akış denetimi ve hata algılama ve düzeltmeden sorumlu olduğunu, başka bir deyişle, her modelin kullanılan ağdan bağımsız olduğunu varsayar. Çevresel sistemler için bir sonraki bölümde gösterilen sistem işlevlerinin kullanım örnekleri, Newcastle gibi sistemler ve daha sonra tartışılacak olan tamamen şeffaf sistemler için benzer şekilde çalışır; bu nedenle, bunları bir kez ayrıntılı olarak ele alacağız ve diğer sistem türlerine ayrılan bölümlerde, esas olarak bu modelleri diğerlerinden ayıran özelliklere odaklanacağız.

13.1 ÇEVRESEL İŞLEMCİLER

Çevresel sistemin mimarisi Şekil 13.2'de gösterilmektedir. Bu yapılandırmanın amacı, çalışan süreçleri CPU ve çevresel işlemciler arasında yeniden tahsis ederek genel ağ performansını iyileştirmektir. Çevresel işlemcilerin her birinin emrinde, merkezi işlem birimiyle iletişim kurmak için ihtiyaç duyduğundan başka yerel çevre birimi aygıtı yoktur. Dosya sistemi ve tüm cihazlar merkezi işlemcinin emrindedir. Tüm kullanıcı işlemlerinin çevresel işlemcide yürütüldüğünü ve çevresel işlemciler arasında hareket etmediğini varsayalım; işlemciye aktarıldıktan sonra, tamamlanana kadar üzerinde kalırlar. Çevresel işlemci, sisteme yapılan yerel çağrıları, kesinti yönetimini, bellek tahsisini, ağ protokolleriyle çalışmayı ve merkezi işlemciyle iletişim için bir sürücüyle işlemek için tasarlanmış işletim sisteminin hafif bir sürümünü içerir.

Sistem merkezi işlemcide başlatıldığında, çekirdek, yerel işletim sistemini iletişim hatları aracılığıyla çevresel işlemcilerin her birine yükler. Çevre üzerinde çalışan herhangi bir işlem, merkezi işlemciye ait bir uydu işlemi ile ilişkilidir (bkz.); Bir çevresel işlemci üzerinde çalışan bir işlem, yalnızca merkezi işlemcinin hizmetlerini gerektiren bir sistem işlevini çağırdığında, çevresel işlem uydusu ile iletişim kurar ve talep, işlem için merkezi işlemciye gönderilir. Uydu işlemi bir sistem işlevi gerçekleştirir ve sonuçları çevresel işlemciye geri gönderir. Çevresel bir süreç ile onun eşlikçisi arasındaki ilişki, Bölüm 11'de ayrıntılı olarak tartıştığımız istemci-sunucu ilişkisine benzer: çevresel süreç, dosya sistemiyle çalışma işlevlerini destekleyen yoldaşının bir istemcisi gibi davranır. Bu durumda, uzak sunucu işleminin yalnızca bir istemcisi vardır. Bölüm 13.4'te birden çok istemcili sunucu işlemlerine bakacağız.


Şekil 13.2. Çevresel sistem yapılandırması


Şekil 13.3. Mesaj biçimleri

Çevresel bir işlem yerel olarak işlenebilen bir sistem işlevini çağırdığında, çekirdeğin uydu işlemine bir istek göndermesine gerek yoktur. Bu nedenle, örneğin, ek bellek elde etmek için bir işlem, yerel yürütme için sbrk işlevini çağırabilir. Ancak, örneğin bir dosya açmak için merkezi işlemcinin hizmetleri gerekiyorsa, çekirdek, çağrılan işleve iletilen parametreler ve işlem yürütme koşulları hakkındaki bilgileri uydu işlemine gönderilen bir mesaja kodlar (Şekil 13.3). Mesaj, sistem işlevinin müşteri adına uydu işlemi tarafından gerçekleştirildiğinin takip ettiği bir işareti, işleve iletilen parametreleri ve işlem yürütme ortamına ilişkin verileri (örneğin, kullanıcı ve grup tanımlama kodları) içerir. farklı işlevler için farklıdır. İletinin geri kalanı değişken uzunluklu verilerdir (örneğin, bir bileşik dosya adı veya yazma işlevi tarafından yazılacak veriler).

Uydu süreci, çevresel süreçten gelen talepleri bekler; bir istek alındığında, mesajın kodunu çözer, sistem işlevinin türünü belirler, yürütür ve sonuçları çevresel sürece gönderilen bir yanıta dönüştürür. Yanıt, sistem işlevinin yürütülmesinin sonuçlarına ek olarak, hata mesajını (varsa), sinyal numarasını ve örneğin bir dosyadan okunan bilgileri içeren değişken uzunluklu bir veri dizisini içerir. Çevresel işlem, bir yanıt alınana kadar askıya alınır, aldıktan sonra şifresini çözer ve sonuçları kullanıcıya iletir. Bu, işletim sistemine yapılan çağrıları işlemek için genel şemadır; şimdi bireysel işlevlerin daha ayrıntılı bir değerlendirmesine geçelim.

Çevresel sistemin nasıl çalıştığını açıklamak için bir dizi işlevi göz önünde bulundurun: getppid, open, write, fork, çıkış ve sinyal. Getppid işlevi, çevre birimi ve CPU arasında değiş tokuş edilen basit istek ve yanıt formlarıyla ilgilendiğinden oldukça basittir. Çevresel işlemcideki çekirdek, istenen işlevin getppid işlevi olduğunu izleyen bir işareti olan bir mesaj üretir ve talebi merkezi işlemciye gönderir. Merkezi işlemcideki uydu işlemi, çevresel işlemciden gelen mesajı okur, sistem işlevinin türünün şifresini çözer, yürütür ve ebeveyninin tanımlayıcısını alır. Daha sonra bir yanıt üretir ve bunu iletişim hattının diğer ucunda bekleyen bir çevresel sürece iletir. Çevresel işlemci bir yanıt aldığında, bunu getppid sistem işlevi olarak adlandırılan işleme iletir. Çevresel süreç, verileri (ebeveynin süreç kimliği gibi) yerel bellekte saklarsa, arkadaşıyla hiçbir şekilde iletişim kurması gerekmez.

Açık sistem işlevi çağrılırsa, çevresel süreç, dosya adını ve diğer parametreleri içeren uygun bir mesaj gönderir. Başarılı olursa, tamamlayıcı işlem dosya tablosuna bir dizin ve giriş noktası tahsis eder, kendi alanında kullanıcı dosya tanımlayıcı tablosuna bir giriş tahsis eder ve dosya tanımlayıcısını çevresel işleme döndürür. Bunca zaman, iletişim hattının diğer ucunda, çevresel süreç bir yanıt beklemektedir. Açılmakta olan dosya hakkında bilgi depolayacak herhangi bir yapısı yoktur; open tarafından döndürülen tanıtıcı, tamamlayıcı işlemin sahip olduğu kullanıcı dosyası tanımlayıcı tablosundaki bir girdiye yönelik bir işaretçidir. İşlev yürütmenin sonuçları Şekil 13.4'te gösterilmektedir.


Şekil 13.4. Açık işlevi çevresel bir işlemden çağırma

Yazma sistem işlevine bir çağrı yapılırsa, çevresel işlemci, yazma işlevinin bir işareti, bir dosya tanımlayıcısı ve yazılacak veri miktarından oluşan bir mesaj üretir. Ardından, çevresel sürecin uzayından, verileri iletişim hattı aracılığıyla uydu sürecine kopyalar. Uydu işlemi, alınan mesajın şifresini çözer, iletişim hattından verileri okur ve bunları ilgili dosyaya yazar (mesajda bulunan tanımlayıcı, hangi dizinin ve dosya tablosundaki kaydın kullanıldığı bir işaretçi olarak kullanılır. ); tüm bu eylemler merkezi işlemci üzerinde gerçekleştirilir. Çalışmanın sonunda, uydu işlemi çevresel sürece mesajın alındığını onaylayan ve dosyaya başarıyla kopyalanan veri baytlarının sayısını içeren bir mesaj gönderir. Okuma işlemi benzerdir; uydu, gerçekte okunan bayt sayısı hakkında çevresel süreci bilgilendirir (bir terminalden veya bir kanaldan veri okunması durumunda, bu sayı her zaman istekte belirtilen miktarla çakışmaz). Bir veya diğer işlevi gerçekleştirmek için, gönderilen veri miktarına ve ağ paketlerinin boyutuna göre belirlenen, ağ üzerinden birçok kez bilgi mesajları göndermek gerekebilir.

CPU üzerinde çalışırken değiştirilmesi gereken tek işlev çatal sistem işlevidir. Bir işlem CPU'da bu işlevi yürüttüğünde, çekirdek bunun için bir çevresel işlemci seçer ve özel bir işleme, sunucuya, mevcut işlemi boşaltmaya başlayacağını bildiren bir mesaj gönderir. Sunucunun isteği kabul ettiğini varsayarsak, çekirdek, bir işlem tablosu girişi ve adres alanı tahsis ederek yeni bir çevresel işlem oluşturmak için çatal kullanır. Merkezi işlemci, çatal işlevi olarak adlandırılan işlemin bir kopyasını çevre işlemcisine boşaltır, yeni tahsis edilen adres alanının üzerine yazar, yeni çevresel işlemle iletişim kurmak için yerel bir uydu oluşturur ve program sayacını başlatmak için çevre birimine bir mesaj gönderir. yeni süreç için. Uydu işlemi (CPU üzerinde), çatal adı verilen işlemin soyundan gelir; çevresel bir süreç, teknik olarak sunucu sürecinin bir alt öğesidir, ancak mantıksal olarak, çatal işlevi olarak adlandırılan işlemin bir alt öğesidir. Çatal tamamlandığında, sunucu işleminin alt öğeyle mantıksal bir bağlantısı yoktur; sunucunun tek işi, çocuğu boşaltmaya yardımcı olmaktır. Sistem bileşenleri arasındaki güçlü bağlantı nedeniyle (çevresel işlemcilerin özerkliği yoktur), çevresel işlem ve uydu işlemi aynı tanımlama koduna sahiptir. Süreçler arasındaki ilişki Şekil 13.5'te gösterilmiştir: sürekli çizgi ebeveyn-çocuk ilişkisini gösterir ve noktalı çizgi akranlar arasındaki ilişkiyi gösterir.


Şekil 13.5. Çatal işlevini CPU'da yürütme

Bir işlem, çevresel işlemcide çatal işlevini yürüttüğünde, CPU üzerindeki uydusuna bir mesaj gönderir ve daha sonra yukarıda açıklanan tüm işlem sırasını yürütür. Uydu yeni bir çevresel işlemci seçer ve eski sürecin görüntüsünü boşaltmak için gerekli hazırlıkları yapar: ana çevresel sürece görüntüsünü okuması için bir istek gönderir, buna karşılık olarak istenen verinin aktarımı diğer uçta başlar. iletişim kanalından. Uydu, iletilen görüntüyü okur ve çevresel alt öğeye bunun üzerine yazar. Görüntü yüklemesi tamamlandığında, uydu işlem çatalı, alt birimini CPU'da oluşturur ve program sayacının değerini çevresel çocuğa iletir, böylece ikincisi yürütmeye nereden başlayacağını bilir. Açıkçası, eşlik eden sürecin çocuğu bir ebeveyn olarak çevresel çocuğa atanmış olsaydı daha iyi olurdu, ancak bizim durumumuzda, oluşturulan süreçler sadece üzerinde oluşturuldukları değil, diğer çevresel işlemciler üzerinde çalışabilir. Çatal fonksiyonunun sonundaki işlemler arasındaki ilişki Şekil 13.6'da gösterilmiştir. Çevresel süreç işini tamamladığında, uydu sürecine karşılık gelen bir mesaj gönderir ve bu da biter. Tamamlayıcı bir işlem bir kapatma başlatamaz.


Şekil 13.6. Çevresel bir işlemcide çatal işlevi yürütme

Hem çok işlemcili hem de tek işlemcili sistemlerde, işlem sinyallere aynı şekilde yanıt vermelidir: işlem, sinyalleri kontrol etmeden önce sistem işlevinin yürütülmesini tamamlar veya tam tersine, sinyali aldıktan sonra askıya alınmış durumdan hemen çıkar ve askıya alındığı öncelik ile tutarlıysa, sistem işlevinin çalışmasını aniden kesintiye uğratır. Uydu süreci, çevresel süreç adına sistem işlevlerini yerine getirdiğinden, sinyallere ikincisiyle koordineli olarak yanıt vermelidir. Tek işlemcili bir sistemde bir sinyal, bir işlemin işlevi iptal etmesine neden oluyorsa, çok işlemcili bir sistemdeki eşlik eden işlem de aynı şekilde davranmalıdır. Aynısı, sinyal işlemin çıkış işlevini kullanarak çalışmasını sonlandırmasını istediğinde de söylenebilir: çevresel işlem sona erer ve ilgili mesajı uydu işlemine gönderir, ki bu da elbette sona erer.

Çevresel bir süreç sinyal sistemi işlevini çağırdığında, mevcut bilgileri yerel tablolarda saklar ve uydusuna belirtilen sinyalin alınması veya yok sayılması gerektiğini bildiren bir mesaj gönderir. Uydu sürecinde, sinyalin veya varsayılan eylemin durdurulması arasında hiçbir fark yoktur. Bir prosesin bir sinyale tepkisi üç faktöre bağlıdır (Şekil 13.7): proses bir sistem fonksiyonunu yürütürken bir sinyalin alınıp alınmadığı, sinyali yok saymak için sinyal fonksiyonu kullanılarak bir gösterge yapılıp yapılmadığı, sinyalin şu anda gerçekleşip gerçekleşmediği. aynı çevresel işlemci veya diğerinde. Çeşitli olasılıkları değerlendirmeye devam edelim.


sighandle algoritması / * sinyal işleme algoritması * /
if (mevcut süreç birinin arkadaşıysa veya bir prototipi varsa)
if (sinyal göz ardı edilir)
if (sinyal bir sistem işlevinin yürütülmesi sırasında geldi)
uydu işleminin önüne bir sinyal koyun;
çevresel bir işleme bir sinyal mesajı göndermek;
else (/ * çevresel süreç * /
/ * bir sistem işlevinin yürütülmesi sırasında bir sinyal alınıp alınmadığı * /
uydu sürecine bir sinyal göndermek;
uydu_end_of_syscall algoritması / * çevresel bir süreç tarafından çağrılan bir sistem fonksiyonunun sonlandırılması * /
giriş bilgisi: yok
çıktı bilgisi: yok
if (bir sistem işlevinin yürütülmesi sırasında bir kesinti alındı)
kesme mesajı göndermek, çevresel sürece sinyal göndermek;
else / * sistem işlevinin yürütülmesi kesintiye uğramadı * /
yanıt gönder: sinyalin geldiğini gösteren bayrağı etkinleştirin;

Şekil 13.7. Çevresel sistemde sinyal işleme


Uydu süreci onun adına bir sistem işlevi gerçekleştirirken, çevresel sürecin çalışmasını askıya aldığını varsayalım. Sinyal başka bir yerde meydana gelirse, uydu süreci bunu çevresel süreçten daha önce algılar. Üç vaka mümkündür.

1. Bir olayı beklerken uydu işlemi, bir sinyal aldıktan sonra çıkacağı askıya alınmış duruma girmediyse, sistem işlevini sonuna kadar yerine getirir, yürütme sonuçlarını çevresel işleme gönderir ve gösterir. hangi sinyali aldı.

2. İşleme bu tür bir sinyali yok sayması talimatı verilirse, uydu, longjmp tarafından askıya alınmış durumdan çıkmadan sistem işlevi yürütme algoritmasını izlemeye devam eder. Çevresel sürece gönderilen yanıtta, herhangi bir sinyal alındı ​​mesajı olmayacaktır.

3. Bir sinyal alındığında, uydu işlemi sistem işlevinin yürütülmesini kesintiye uğratırsa (longjmp ile), çevre birimini bu konuda bilgilendirir ve sinyal numarasını bildirir.

Çevresel süreç, sinyallerin alınması hakkında bilgi için alınan yanıta bakar ve varsa, sistem işlevinden çıkmadan önce sinyalleri işler. Bu nedenle, çok işlemcili bir sistemdeki bir işlemin davranışı, tek işlemcili bir sistemdeki davranışına tam olarak karşılık gelir: ya çekirdek modundan çıkmadan çıkar ya da özel bir sinyal işleme işlevini çağırır ya da sinyali yok sayar ve sistem işlevini başarıyla tamamlar.


Şekil 13.8. Bir sistem işlevinin yürütülmesi sırasında kesinti

Örneğin, bir çevresel işlemin, merkezi bir işlemciye bağlı bir terminalden bir okuma işlevi çağırdığını ve uydu işlemi işlevi yerine getirirken çalışmasını duraklattığını varsayalım (Şekil 13.8). Kullanıcı ara tuşuna basarsa, CPU çekirdeği uydu işlemine bir sinyal gönderir. Eğer uydu askıya alınmış durumdaysa, terminalden verinin bir kısmını bekliyorsa hemen bu durumdan çıkar ve okuma işlevini sonlandırır. Çevresel bir süreçten gelen bir isteğe yanıt olarak uydu, kesintiye karşılık gelen hata kodunu ve sinyal numarasını bildirir. Çevresel süreç yanıtı analiz eder ve mesaj bir kesmenin geldiğini söylediği için sinyali kendisine gönderir. Okuma işlevinden çıkmadan önce, çevresel çekirdek sinyalleşmeyi kontrol eder, uydu sürecinden bir kesme sinyali algılar ve her zamanki gibi işler. Bir kesme sinyalinin alınmasının bir sonucu olarak, çevresel süreç çıkış işlevini kullanarak işini sonlandırırsa, bu işlev uydu sürecini öldürmeyi önemser. Çevresel işlem kesme sinyallerini yakalarsa, kullanıcı tanımlı sinyal işleme işlevini çağırır ve okuma işlevinden çıktıktan sonra kullanıcıya bir hata kodu verir. Öte yandan, uydu, çevresel süreç adına stat sistem işlevini yürütürse, bir sinyal aldığında yürütmesini kesintiye uğratmaz (sınırlı bir kaynak bekleme süresine sahip olduğundan, stat işlevinin herhangi bir duraklamadan çıkması garanti edilir). ). Uydu, işlevin yürütülmesini tamamlar ve sinyal numarasını çevresel işleme döndürür. Çevresel süreç kendisine bir sinyal gönderir ve sistem fonksiyonundan çıkışta alır.

Bir sistem fonksiyonunun yürütülmesi sırasında çevresel işlemcide bir sinyal oluşursa, çevresel süreç, yakında uydu sürecinden kontrole geri dönüp dönmeyeceği veya uydu sürecinden süresiz olarak askıya alınmış bir duruma geçip geçmeyeceği konusunda karanlıkta kalacaktır. Çevresel süreç, uyduya bir sinyalin oluştuğunu bildiren özel bir mesaj gönderir. CPU'daki çekirdek mesajın şifresini çözer ve uyduya bir sinyal gönderir, sinyalin alınmasına tepkisi önceki paragraflarda açıklanmıştır (fonksiyonun anormal şekilde sonlandırılması veya tamamlanması). Çevresel işlem, uydu bir sistem işlevini yerine getirmekle meşgul olduğundan ve iletişim hattından veri okumadığından doğrudan uyduya mesaj gönderemez.

Okunan örneğe atıfta bulunarak, çevresel sürecin, yoldaşının uçbirimden girdi mi beklediğini yoksa başka eylemler mi gerçekleştirdiğini bilmediğine dikkat edilmelidir. Çevresel süreç uyduya bir sinyal mesajı gönderir: eğer uydu kesintiye uğrayabilir bir önceliğe sahip bir askıya alınmış durumdaysa, bu durumdan hemen çıkar ve sistem işlevini sona erdirir; aksi takdirde fonksiyon başarıyla tamamlanır.

Son olarak, bir sistem fonksiyonunun yürütülmesi ile ilgili olmayan bir zamanda gelen bir sinyal durumunu düşünün. Başka bir işlemciden gelen bir sinyal varsa, uydu önce onu alır ve sinyalin çevresel süreçle ilgili olup olmadığına bakılmaksızın çevresel sürece bir sinyal mesajı gönderir. Çevresel çekirdek mesajın şifresini çözer ve sürece her zamanki gibi tepki veren bir sinyal gönderir. Sinyal çevresel işlemciden kaynaklanıyorsa, işlem uydusunun hizmetlerine başvurmadan standart eylemleri gerçekleştirir.

Çevresel bir süreç diğer çevresel süreçlere bir sinyal gönderdiğinde, bir öldürme mesajını kodlar ve çağrılan işlevi yerel olarak yürüten uydu sürecine gönderir. Sinyalin amaçlandığı işlemlerden bazıları diğer çevresel işlemcilerde bulunuyorsa, uyduları sinyali alacak (ve yukarıda açıklandığı gibi tepki verecek).

13.2 NEWKASTE İLETİŞİMİ

Önceki bölümde, çevresel işlemcide ortaya çıkan dosya yönetimi alt sisteminin işlevlerine tüm çağrıları uzak (merkezi) bir işlemciye göndermekle karakterize edilen bir tür sıkı bağlı sistem ele aldık. Şimdi, diğer makinelerde bulunan dosyalara çağrı yapan makinelerden oluşan, daha zayıf bir bağlantıya sahip sistemleri ele alıyoruz. Örneğin, kişisel bilgisayarlar ve iş istasyonları ağında, kullanıcılar genellikle büyük bir makinede bulunan dosyalara erişir. Sonraki iki bölümde, tüm sistem işlevlerinin yerel alt sistemlerde gerçekleştirildiği, ancak aynı zamanda diğer makinelerde bulunan dosyalara (dosya yönetimi alt sisteminin işlevleri aracılığıyla) erişmenin mümkün olduğu sistem yapılandırmalarına bakacağız.

Bu sistemler, silinen dosyaları belirlemek için aşağıdaki iki yoldan birini kullanır. Bazı sistemlerde, bileşik dosya adına özel bir karakter eklenir: bu karakterden önce gelen ad bileşeni makineyi tanımlar, adın geri kalanı o makinedeki dosyadır. Yani, örneğin, ayırt edici isim


"sftig! / fs1 / mjb / rje"


"sftig" makinesindeki "/ fs1 / mjb / rje" dosyasını tanımlar. Bu dosya tanımlama şeması, UNIX sistemleri arasında dosya aktarımı için uucp kuralına uyar. Başka bir şemada, silinen dosyalar adına özel bir önek eklenerek tanımlanır, örneğin:


/../sftig/fs1/mjb/rje


burada "/../" dosyanın silindiğini belirten bir önektir; dosya adının ikinci bileşeni, uzak makinenin adıdır. Bu şema, tanıdık UNIX dosya adı sözdizimini kullanır, bu nedenle ilk şemadan farklı olarak, kullanıcı programlarının olağandışı yapıya sahip adları kullanmaya uyum sağlaması gerekmez (bkz.).


Şekil 13.9. Dosya sunucusuna (işlemci) istekleri formüle etme


Bu bölümün geri kalanını, çekirdeğin silinen dosyaları tanımakla ilgilenmediği bir Newcastle bağlantısı kullanan bir sistem modeline ayıracağız; bu işlev, bu durumda sistem arabirimi rolünü oynayan standart C kitaplığındaki alt programlara tamamen atanır. Bu rutinler, açıklanan tanımlama yöntemlerinin her ikisinde de dosyanın uzaklığının bir işaretini içeren dosya adının ilk bileşenini analiz eder. Bu, kütüphane rutinlerinin dosya adlarını ayrıştırmadığı rutinden bir sapmadır. Şekil 13.9, bir dosya sunucusuna yapılan isteklerin nasıl formüle edildiğini gösterir. Dosya yerel ise, yerel sistem çekirdeği isteği normal şekilde işler. Tam tersi durumu düşünün:


aç ("/../ sftig / fs1 / mjb / rje / dosya", O_RDONLY);


C kitaplığındaki açık alt yordam, dosya adının ilk iki bileşenini ayrıştırır ve dosyayı "sftig" uzak makinede aramayı bilir. İşlemin daha önce belirli bir makineyle bağlantısı olup olmadığı hakkında bilgi sahibi olmak için alt program, bu gerçeği hatırladığı özel bir yapı başlatır ve olumsuz bir yanıt durumunda uzak makinede çalışan dosya sunucusuyla bağlantı kurar. Proses uzaktan işleme için ilk talebini formüle ettiğinde, uzak sunucu talebi onaylar, gerekirse kullanıcı ve grup tanımlama kodları alanlarına kayıt yapar ve müşteri prosesi adına hareket edecek bir uydu prosesi oluşturur.

İstemci isteklerini yerine getirmek için uydunun uzak makinede istemciyle aynı dosya izinlerine sahip olması gerekir. Başka bir deyişle, "mjb" kullanıcısı hem uzak hem de yerel dosyalara aynı erişim haklarına sahip olmalıdır. Ne yazık ki, "mjb" istemci tanımlama kodunun, uzak makinedeki başka bir istemcinin tanımlama koduyla çakışması mümkündür. Bu nedenle, ağ üzerinde çalışan makinelerdeki sistem yöneticileri, ya her kullanıcıya tüm ağa özgü bir tanımlama kodu atanmasını sağlamalı ya da bir ağ hizmeti talebini formüle ederken kod dönüşümü gerçekleştirmelidir. Bu yapılmazsa, eşlik eden işlem uzak makinedeki başka bir istemcinin haklarına sahip olacaktır.

Daha hassas bir konu, uzak dosyalarla çalışmayla ilgili olarak süper kullanıcı hakları elde etmektir. Bir yandan, süper kullanıcı istemcisi, uzak sistemin güvenlik kontrollerini yanıltmamak için uzak sistem üzerinde aynı haklara sahip olmamalıdır. Öte yandan, bazı programlar, süper kullanıcı hakları verilmezse, basitçe çalışamazlar. Böyle bir programın bir örneği, yeni bir dizin oluşturan mkdir programıdır (bkz. Bölüm 7). Uzak sistem, istemcinin yeni bir dizin oluşturmasına izin vermez çünkü silme sırasında süper kullanıcı hakları geçerli değildir. Uzak dizinler oluşturma sorunu, mkdir sistem işlevini, kullanıcı için gerekli tüm bağlantıları otomatik olarak kurmada yeteneklerini genişletme yönünde revize etmek için ciddi bir neden olarak hizmet eder. Ancak, setuid programlarının (mkdir programı gibi) silinen dosyalar üzerinde süper kullanıcı hakları kazanması hala yaygın bir sorundur. Belki de bu soruna en iyi çözüm, dosyalara uzak süper kullanıcılar tarafından erişimi tanımlayan ek özellikler ayarlamak olabilir; ne yazık ki bu, disk dizin yapısında değişiklikler gerektirecektir (yeni alanlar ekleme açısından) ve mevcut sistemlerde çok fazla karışıklık yaratacaktır.

Açık altyordam başarılı olursa, yerel kitaplık, ağ düğümünün adresini, eşlik edenin işlem kimliğini, dosya tanıtıcısını ve diğer benzer bilgileri içeren kullanıcı tarafından erişilebilen yapıda bununla ilgili bir not bırakır. Kitaplık rutinleri okuma ve yazma, dosya tanımlayıcıya bağlı olarak dosyanın silinip silinmediğini belirler ve silinirse uyduya bir mesaj gönderir. İstemci süreci, uzaktaki bir makinenin hizmetlerini gerektiren sistem işlevlerine erişmenin tüm durumlarında yoldaşı ile etkileşime girer. Bir işlem aynı uzak makinede bulunan iki dosyaya erişirse, bir uydu kullanır, ancak dosyalar farklı makinelerde bulunuyorsa, iki uydu zaten kullanılır: her makinede bir tane. İki işlem uzak bir makinedeki bir dosyaya eriştiğinde iki uydu da kullanılır. Sistem işlevini uydu aracılığıyla çağırarak, işlem, işlev numarasını, arama yolunun adını ve çevre işlemcili sistemdeki mesaj yapısında bulunana benzer diğer gerekli bilgileri içeren bir mesaj üretir.

Geçerli dizinde işlem gerçekleştirme mekanizması daha karmaşıktır. İşlem bir uzak dizini geçerli dizin olarak seçtiğinde, kitaplık rutini uyduya bir mesaj gönderir, bu da geçerli dizini değiştirir ve rutin dizinin silindiğini hatırlar. Arama yolu adının eğik çizgi (/) dışında bir karakterle başladığı tüm durumlarda, alt program adı uzak makineye gönderir, burada uydu işlemi geçerli dizinden yönlendirilir. Geçerli dizin yerel ise, rutin arama yolu adını yerel sistem çekirdeğine iletir. Uzak bir dizindeki sistem chroot işlevi benzerdir, ancak yerel çekirdek için fark edilmez; Açıkça söylemek gerekirse, işlem bu işlemi görmezden gelebilir, çünkü yalnızca kitaplık yürütmesini kaydeder.

Bir işlem çatalı çağırdığında, uygun kitaplık rutini her uyduya mesaj gönderir. Uydular şubeleri işler ve alt kimliklerini ana istemciye gönderir. İstemci işlemi, kontrolü oluşturduğu çocuğa aktaran çatal sistemi işlevini çalıştırır; yerel çocuk, adresleri kütüphane rutini tarafından saklanan uzak uydu çocuğuyla diyalog halindedir. Çatal işlevinin bu yorumu, uydu işlemlerinin açık dosyaları ve geçerli dizinleri kontrol etmesini kolaylaştırır. Uzak dosyalarla çalışan işlem bittiğinde (çıkış işlevini çağırarak), alt program, mesajı aldıklarında aynı şeyi yapmaları için tüm uzak uydularına mesajlar gönderir. Yürütme ve çıkış sistemi işlevlerinin uygulanmasının belirli yönleri alıştırmalarda tartışılmaktadır.

Newcastle bağlantısının avantajı, işlemin uzak dosyalara erişiminin şeffaf hale gelmesi (kullanıcı tarafından görülmemesi) ve sistem çekirdeğinde herhangi bir değişiklik yapılması gerekmemesidir. Ancak bu gelişmenin bir takım dezavantajları vardır. Her şeyden önce, uygulanması sırasında sistem performansında bir düşüş mümkündür. Genişletilmiş C kitaplığının kullanılması nedeniyle, işlem uzak dosyalara erişmese bile her işlem tarafından kullanılan bellek boyutu artar; kitaplık, çekirdek işlevlerini çoğaltır ve kendisi için daha fazla bellek alanı gerektirir. İşlemlerin boyutunu artırmak, başlatma süresini uzatır ve bellek kaynakları için daha fazla çekişme yaratabilir, görevlerin daha sık boşaltılması ve sayfalanması için koşullar yaratır. Çekirdeğe yapılan her çağrının süresinin artması nedeniyle yerel istekler daha yavaş yürütülür ve uzak isteklerin işlenmesi de yavaşlayabilir, bunları ağ üzerinden göndermenin maliyeti artar. Uzak isteklerin kullanıcı düzeyinde ek olarak işlenmesi, bağlam anahtarlarının, boşaltma ve takas işlemlerinin sayısını artırır. Son olarak, uzak dosyalara erişmek için programlar yeni kütüphaneler kullanılarak yeniden derlenmelidir; eski programlar ve teslim edilen nesne modülleri onsuz uzak dosyalarla çalışamaz. Bu dezavantajların tümü, bir sonraki bölümde açıklanan sistemde yoktur.

13.3 "ŞEFFAF" DAĞITILMIŞ DOSYA SİSTEMLERİ

"Şeffaf ayırma" terimi, bir makinedeki kullanıcıların, bir dosya sisteminden diğerine geçerken, bağlama noktalarından geçerken makinelerinde olduğu gibi, makine sınırlarını geçtiklerini fark etmeden başka bir makinedeki dosyalara erişebilecekleri anlamına gelir. İşlemlerin uzak makinelerde bulunan dosyalara atıfta bulunduğu adlar, yerel dosyaların adlarına benzer: İçlerinde ayırt edici karakterler yoktur. Şekil 13.10'da gösterilen konfigürasyonda, B makinesine ait "/ usr / src" dizini, A makinesine ait "/ usr / src" dizinine "bağlıdır". Aynı sistem kaynak kodu, geleneksel olarak "/ dizininde bulunur. usr / src" dizini. A makinesinde çalışan kullanıcılar, B makinesinde bulunan dosyalara, bilinen dosya adlarını yazma sözdizimini kullanarak erişebilir (örneğin: "/usr/src/cmd/login.c") ve dosyanın uzak mı yoksa yerel mi olduğuna çekirdek kendisi karar verir. . B makinesinde çalışan kullanıcıların yerel dosyalarına erişimi vardır (A makinesinin kullanıcılarının aynı dosyalara erişebileceğinin farkında değildir), ancak sırayla A makinesinde bulunan dosyalara erişimleri yoktur. özellikle, tüm uzak sistemlerin yerel sistemin köküne monte edildiği sistemler, böylece kullanıcılar tüm sistemlerdeki tüm dosyalara erişebilir.


Şekil 13.10. Uzaktan bağlamadan sonra dosya sistemleri

Yerel dosya sistemlerini bağlama ile uzak dosya sistemlerine erişime izin verme arasındaki benzerlikler, bağlama işlevinin uzak dosya sistemlerine uyarlanmasını gerektirmiştir. Bu durumda, çekirdeğin emrinde genişletilmiş formatlı bir montaj tablosu vardır. Çekirdek, mount işlevini yürüterek, uzak bir makineyle bir ağ bağlantısı düzenler ve bu bağlantıyı karakterize eden bilgileri mount tablosunda depolar.

".." içeren yol adlarıyla ilgili ilginç bir sorun var. Bir işlem, geçerli dizini uzak bir dosya sisteminden yapıyorsa, addaki ".." karakterlerinin kullanılması, geçerli dizinin üzerindeki dosyalara erişmek yerine işlemi yerel dosya sistemine döndürür. Tekrar Şekil 13.10'a dönersek, A makinesine ait işlem, daha önce uzak dosya sisteminde bulunan "/ usr / src / cmd" dizini seçildiğinde komutu yürüteceğini unutmayın.



geçerli dizin, makine B'ye değil, makine A'ya ait kök dizin olacaktır. Uzak sistemin çekirdeğinde çalışan namei algoritması, ".." karakter dizisini aldıktan sonra, çağıran işlemin bir aracı olup olmadığını kontrol eder. istemci işlemi ve eğer öyleyse, istemcinin geçerli çalışma dizinini uzak dosya sisteminin kökü olarak görüp görmediğini ayarlar.

Uzak bir makineyle iletişim iki biçimden birini alır: bir uzak prosedür çağrısı veya bir uzak sistem işlev çağrısı. İlk formda, indekslerle ilgili her bir çekirdek prosedürü, indeksin uzak bir dosyaya işaret edip etmediğini kontrol eder ve eğer öyleyse, belirtilen işlemi gerçekleştirmek için uzak makineye bir istek gönderir. Bu şema, Bölüm 5'in son kısmında açıklanan, çeşitli türlerdeki dosya sistemlerine yönelik soyut destek yapısına doğal olarak uyar. Böylece, uzak bir dosyaya erişim, sayısı belirlenen ağ üzerinden birkaç mesajın transferini başlatabilir. ağda kabul edilen bekleme süresi dikkate alınarak, talebe yanıt süresinde karşılık gelen bir artışla dosyadaki zımni işlem sayısı. Her bir uzak işlem seti, en az indeks kilitleme, referans sayma vb. işlemleri içerir. Modeli geliştirmek için, birkaç işlemi tek bir sorguda (mesaj) birleştirmek ve en önemli verileri (cm. ).


Şekil 13.11. Uzak dosya açma


"/usr/src/cmd/login.c" uzak dosyasını açan bir işlem düşünün, burada "src" bağlama noktasıdır. Dosya adını ayrıştırarak (namei-iget şemasını kullanarak), çekirdek dosyanın silindiğini algılar ve kilitli dizini almak için ana makineye bir istek gönderir. İstenen yanıtı alan yerel çekirdek, uzak dosyaya karşılık gelen bellekte dizinin bir kopyasını oluşturur. Ardından çekirdek, uzaktaki makineye başka bir mesaj göndererek dosyaya (örneğin okuma için) gerekli erişim haklarını kontrol eder. Açık algoritma, algoritma tamamlanıp dizin serbest bırakılıncaya kadar, gerektiğinde uzak makineye mesaj göndererek, Bölüm 5'te özetlenen plana tam olarak uygun olarak devam eder. Açık algoritmanın tamamlanmasının ardından çekirdek veri yapıları arasındaki ilişki Şekil 13.11'de gösterilmektedir.

İstemci sistem okuma işlevini çağırırsa, istemci çekirdeği yerel dizini kilitler, uzak dizinde bir kilit, bir okuma isteği, verileri yerel belleğe kopyalar, uzak dizini boşaltmak için bir istek gönderir ve yerel dizini serbest bırakır. . Bu şema, mevcut tek işlemcili çekirdeğin semantiği ile tutarlıdır, ancak ağ kullanım sıklığı (her sistem işlevine birden fazla çağrı) tüm sistemin performansını düşürür. Ancak ağdaki mesaj akışını azaltmak için birden çok işlem tek bir istekte birleştirilebilir. Okuma işlevine sahip örnekte, istemci sunucuya bir genel "okuma" isteği gönderebilir ve sunucu, yürütüldüğünde dizini alıp bırakmaya karar verir. Ağ trafiğini azaltmak, uzak arabellekler kullanılarak da sağlanabilir (yukarıda tartıştığımız gibi), ancak bu arabellekleri kullanan sistem dosyası işlevlerinin düzgün bir şekilde yürütülmesini sağlamak için özen gösterilmelidir.

Uzak bir makineyle iletişimin ikinci biçiminde (uzak sistem işlevine yapılan bir çağrı), yerel çekirdek, sistem işlevinin uzak bir dosyayla ilişkili olduğunu algılar ve çağrısında belirtilen parametreleri uzak sisteme gönderir, bu da çağrıyı yürütür. işlevi ve sonuçları istemciye döndürür. İstemci makine, işlev yürütmenin sonuçlarını alır ve çağrı durumundan çıkar. Sistem işlevlerinin çoğu, yalnızca bir ağ isteği kullanılarak ve makul bir süre sonra yanıt alınarak gerçekleştirilebilir, ancak tüm işlevler bu modele uymaz. Örneğin, belirli sinyalleri aldıktan sonra, çekirdek süreç için "çekirdek" adı verilen bir dosya oluşturur (Bölüm 7). Bu dosyanın oluşturulması, belirli bir sistem işleviyle ilişkili değildir, ancak dosya oluşturma, izinleri kontrol etme ve bir dizi yazma gerçekleştirme gibi çeşitli işlemleri gerçekleştirmeyi sona erdirir.

Açık sistem işlevi söz konusu olduğunda, uzak makineye gönderilen işlevi yürütme isteği, uzak dosyayı ayırt eden arama yolu adı bileşenleri hariç tutulduktan sonra kalan dosya adının yanı sıra çeşitli bayrakları içerir. "/usr/src/cmd/login.c" dosyasını açmanın önceki örneğinde, çekirdek uzak makineye "cmd / login.c" adını gönderir. Mesaj ayrıca, uzak makinedeki dosya izinlerini doğrulamak için gerekli olan kullanıcı ve grup tanımlama kodları gibi kimlik bilgilerini de içerir. Uzak makineden başarılı bir açık işlevi belirten bir yanıt alınırsa, yerel çekirdek yerel makinenin belleğinde boş bir dizin alır ve onu uzak dosya dizini olarak işaretler, uzak makine ve uzak dizin hakkındaki bilgileri depolar ve rutin olarak tahsis eder. dosya tablosunda yeni bir giriş. Uzak makinedeki gerçek dizinle karşılaştırıldığında, yerel makinenin sahip olduğu dizin resmidir ve uzak prosedür çağrılırken kullanılan yapılandırmayla genel olarak aynı olan modelin yapılandırmasını ihlal etmez (Şekil 13.11). Bir işlem tarafından çağrılan bir işlev, tanımlayıcısı tarafından uzak bir dosyaya erişirse, yerel çekirdek (yerel) dizinden dosyanın uzak olduğunu bilir, çağrılan işlevi içeren bir istek formüle eder ve onu uzak makineye gönderir. İstek, uydu işleminin uzak dosyanın kendisini tanımlayabileceği uzak dizin için bir işaretçi içerir.

Herhangi bir sistem işlevini yürütmenin sonucunu alan çekirdek, onu işlemek için özel bir programın hizmetlerine başvurabilir (tamamlandıktan sonra çekirdeğin işlevle çalışmayı bitireceği), çünkü tek işlemcili bir sistemde kullanılan sonuçların yerel olarak işlenmesi birkaç işlemcili bir sistem için her zaman uygun değildir. Sonuç olarak, uzak sistem işlevlerinin yürütülmesine destek sağlamayı amaçlayan sistem algoritmalarının semantiğinde değişiklikler mümkündür. Bununla birlikte, aynı zamanda, ağda minimum mesaj akışı dolaşarak, sistemin gelen isteklere minimum yanıt verme süresini sağlar.

13.4 TRANSFER İŞLEMLERİ OLMAYAN DAĞITILMIŞ MODEL

Şeffaf bir dağıtık sistemde aktarım işlemlerinin (uydu işlemleri) kullanılması, silinen dosyaların takibini kolaylaştırır, ancak uzak sistemin işlem tablosu çoğu zaman boşta olan uydu işlemleriyle aşırı yüklenir. Diğer şemalarda, uzak istekleri işlemek için özel sunucu işlemleri kullanılır (bkz. ve). Uzak sistem, gelen uzak istekleri işlemek için zaman zaman atadığı bir dizi sunucu işlemine (havuza) sahiptir. İsteği işledikten sonra, sunucu işlemi havuza döner ve diğer istekleri işlemeye hazır bir duruma girer. Sunucu, aynı anda birkaç işlemden gelen istekleri işleyebildiğinden, iki çağrı arasında kullanıcı bağlamını korumaz. Bu nedenle, bir istemci sürecinden gelen her mesaj, yürütme ortamı hakkında bilgi içermelidir, yani: kullanıcı tanımlama kodları, geçerli dizin, sinyaller, vb. işlevler.

Bir işlem bir uzak dosyayı açtığında, uzak çekirdek, dosyaya sonraki bağlantılar için bir dizin atar. Yerel makine, özel bir dosya tanımlayıcı tablosunu, bir dosya tablosunu ve düzenli bir kayıt setini içeren bir dizin tablosunu, uzak makineyi ve uzak dizini tanımlayan bir dizin tablosu girişiyle birlikte tutar. Bir sistem işlevinin (örneğin, okuma) bir dosya tanıtıcı kullandığı durumlarda, çekirdek önceden atanmış uzak dizine işaret eden bir mesaj gönderir ve süreçle ilgili bilgileri aktarır: kullanıcı tanımlama kodu, maksimum dosya boyutu, vb. sunucu işlemi emrindeyken, istemci ile etkileşim daha önce açıklanan biçimi alır, ancak istemci ile sunucu arasındaki bağlantı yalnızca sistem işlevi süresince kurulur.

Uydu işlemleri yerine sunucuların kullanılması veri trafiğini, sinyalleri ve uzak cihazları yönetmeyi zorlaştırabilir. Yeterli sayıda sunucunun yokluğunda uzak bir makineye yapılan çok sayıda istek sıraya alınmalıdır. Bu, ana ağda kullanılandan daha yüksek bir katman protokolü gerektirir. Uydu modelinde ise tüm istemci istekleri eşzamanlı olarak işlendiği için aşırı doygunluk ortadan kaldırılmıştır. Bir istemcinin bekleyen en fazla bir isteği olabilir.

Bir sistem işlevinin yürütülmesini kesintiye uğratan sinyallerin işlenmesi, uzak makinenin işlevin yürütülmesine hizmet eden uygun sunucuyu araması gerektiğinden, sunucular kullanılırken de karmaşıktır. Hatta tüm sunucuların meşgul olması nedeniyle, bir sistem işlevi talebinin işlenmek üzere bekleme durumunda olması bile mümkündür. Sunucunun sistem işlevinin sonucunu arama işlemine geri döndürmesi ve sunucunun yanıtının ağ üzerinden karşılık gelen bir sinyal mesajı göndermeyi içermesi durumunda rekabetin ortaya çıkması için koşullar da ortaya çıkar. Her mesaj, uzak sistemin onu tanıyabilmesi ve gerekirse sunucu işlemlerini sonlandırabilmesi için işaretlenmelidir. Uyduları kullanırken, müşterinin talebinin yerine getirilmesini işleyen süreç otomatik olarak tanımlanır ve bir sinyal gelmesi durumunda talebin işlenip işlenmediğini kontrol etmek zor değildir.

Son olarak, istemci tarafından çağrılan bir sistem işlevi, sunucunun süresiz olarak duraklamasına neden olursa (örneğin, uzak bir terminalden veri okurken), sunucu, sunucu havuzunu boşaltmak için diğer istekleri işleyemez. Birden fazla işlem aynı anda uzak cihazlara erişiyorsa ve sunucu sayısı yukarıdan sınırlandırılmışsa, oldukça somut bir darboğaz vardır. Her istemci işlemine bir uydu tahsis edildiğinden, uydularda bu olmaz. Uzak cihazlar için sunucuların kullanılmasıyla ilgili başka bir sorun, Alıştırma 13.14'te ele alınacaktır.

Uydu süreçlerinin kullanılmasının sağladığı avantajlara rağmen, pratikte süreç tablosuna ücretsiz giriş ihtiyacı o kadar keskin hale gelir ki, çoğu durumda sunucu süreçlerinin hizmetleri hala uzak istekleri işlemek için kullanılır.


Şekil 13.12. Çekirdek düzeyinde uzak dosyalarla etkileşimin kavramsal diyagramı

13.5 SONUÇLAR

Bu bölümde, uzak makinelerde bulunan dosyalarla çalışmak için, uzak dosya sistemlerini yerel olanın bir uzantısı olarak ele almak için üç şema ele aldık. Bu yerleşimler arasındaki mimari farklılıklar Şekil 13.12'de gösterilmiştir. Hepsi de, önceki bölümde açıklanan çok işlemcili sistemlerden, buradaki işlemcilerin fiziksel belleği paylaşmaması bakımından farklıdır. Bir çevresel işlemci sistemi, merkezi işlemcinin dosya kaynaklarını paylaşan sıkı bir şekilde bağlanmış bir dizi işlemciden oluşur. Newcastle türünde bir bağlantı, uzak dosyalara gizli ("şeffaf") erişim sağlar, ancak işletim sistemi çekirdeği aracılığıyla değil, özel bir C kitaplığı kullanılarak. Bu nedenle, bu tür bir bağlantıyı kullanmayı amaçlayan tüm programlar, genel olarak bu şemanın ciddi bir dezavantajı olan yeniden derlenmelidir. Bir dosyanın uzaklığı, dosyanın bulunduğu makineyi tanımlayan özel bir karakter dizisi kullanılarak belirtilir ve bu, programların taşınabilirliğini sınırlayan başka bir faktördür.

Şeffaf dağıtılmış sistemlerde, uzak dosyalara erişmek için mount system işlevinde bir değişiklik kullanılır. Yerel sistemdeki dizinler uzak dosyalar olarak işaretlenir ve yerel çekirdek, istenen sistem işlevini, parametrelerini ve uzak dizini açıklayan uzak sisteme bir mesaj gönderir. "Şeffaf" bir dağıtılmış sistemdeki iletişim iki şekilde desteklenir: bir uzak prosedüre çağrı şeklinde (dizinle ilişkili işlemlerin bir listesini içeren uzak makineye bir mesaj gönderilir) ve bir çağrı şeklinde bir uzak sistem işlevine (mesaj istenen işlevi açıklar). Bölümün son kısmı, uydu süreçleri ve sunucular kullanılarak uzak isteklerin işlenmesiyle ilgili konuları tartışır.

13.6 EGZERSİZLER

*1. Çevresel işlemcilere sahip bir sistemde çıkış sistemi işlevinin uygulanmasını açıklayın. Bu durum ile yakalanmamış bir sinyal alındıktan sonra sürecin çıkması arasındaki fark nedir? Çekirdek, bellek içeriğini nasıl boşaltmalı?

2. İşlemler SIGKILL sinyallerini görmezden gelemez; Proses böyle bir sinyal aldığında çevresel sistemde neler olduğunu açıklayın.

* 3. Çevresel işlemcilere sahip bir sistemde exec sistem işlevinin uygulanmasını açıklayın.

*4. Merkezi işlemci, toplam yükü dengelemek için işlemleri çevre işlemciler arasında nasıl dağıtmalıdır?

*5. Çevresel işlemci, kendisine yüklenen tüm işlemleri barındırmak için yeterli belleğe sahip değilse ne olur? Ağdaki süreçlerin boşaltılması ve değiştirilmesi nasıl yapılmalıdır?

6. Dosya adında özel bir önek bulunursa, isteklerin uzak bir dosya sunucusuna gönderildiği bir sistem düşünün. İşlemin execl ("/../ sftig / bin / sh", "sh", 0); Yürütülebilir dosya uzak bir makinededir, ancak yerel sistemde çalışıyor olmalıdır. Uzak modülün yerel sisteme nasıl taşındığını açıklayın.

7. Yöneticinin Newcastle gibi bir bağlantıya sahip mevcut bir sisteme yeni makineler eklemesi gerekiyorsa, C kitaplığı modüllerini bu konuda bilgilendirmenin en iyi yolu nedir?

*sekiz. exec işlevinin yürütülmesi sırasında, çekirdek, uzak dosyalara olan bağlantıları izlemek için Newcastle bağlantısı tarafından kullanılan kitaplık tabloları dahil, işlemin adres alanının üzerine yazar. İşlevi yürüttükten sonra, işlemin bu dosyalara eski tanımlayıcıları ile erişme yeteneğini muhafaza etmesi gerekir. Bu noktanın uygulanmasını açıklayın.

*dokuz. Bölüm 13.2'de gösterildiği gibi, Newcastle bağlantısı olan sistemlerde sistemden çıkış işlevinin çağrılması, eşlik eden sürece bir mesaj gönderilmesiyle sonuçlanır ve ikincisini sonlandırmaya zorlar. Bu, kütüphane rutinleri düzeyinde yapılır. Yerel bir işlem, kendisine çekirdek modunda çıkmasını söyleyen bir sinyal aldığında ne olur?

*on. Bir Newcastle bağlantısına sahip bir sistemde, uzak dosyaların adı özel bir önekle önek eklenerek tanımlandığı bir sistemde, bir kullanıcı dosya adı bileşeni olarak ".." (üst dizin) belirterek uzak bağlama noktasından nasıl geçebilir?

11. Bölüm 7'den, çeşitli sinyallerin bir işlemin bellek içeriğini geçerli dizine boşaltmasına neden olduğunu biliyoruz. Geçerli dizin uzak dosya sisteminden geliyorsa ne olur? Sistem Newcastle gibi bir ilişki kullanırsa ne cevap verirsiniz?

*12. Tüm uydu veya sunucu süreçleri sistemden kaldırılsaydı, yerel süreçler üzerinde ne gibi etkileri olurdu?

*13. Bağlantı algoritmasının, parametreleri birkaç dahili okuma işleminin gerçekleştirilmesiyle ilişkili yürütme algoritmasının yanı sıra iki uzak dosya adı olabilen şeffaf bir dağıtılmış sistemde nasıl uygulanacağını düşünün. İki tür iletişim düşünün: bir uzak prosedür çağrısı ve bir uzak sistem işlev çağrısı.

* on dört. Aygıta erişirken, sunucu işlemi, aygıt sürücüsü tarafından çıkarılacağı askıya alınmış duruma girebilir. Doğal olarak, sunucu sayısı sınırlıysa, sistem artık yerel makinenin isteklerini karşılayamaz. Cihazla ilgili G / Ç'nin tamamlanmasını beklerken tüm sunucu işlemlerinin askıya alınmadığı güvenilir bir şema ile gelin. Tüm sunucular meşgulken sistem işlevi çalışmayı durdurmaz.


Şekil 13.13. Terminal Sunucusu Yapılandırması

*15. Bir kullanıcı sistemde oturum açtığında, terminal hattı disiplini, terminalin bir grup işlemi yöneten bir operatör terminali olduğu bilgisini saklar. Bu nedenle kullanıcı terminal klavyesinde "break" tuşuna bastığında gruptaki tüm işlemler kesme sinyalini alır. Tüm terminallerin fiziksel olarak bir makineye bağlı olduğu, ancak kullanıcı kaydının diğer makinelerde mantıksal olarak uygulandığı bir sistem konfigürasyonu düşünün (Şekil 13.13). Her durumda, sistem uzak terminal için bir getty işlemi oluşturur. Uzak bir sisteme yapılan istekler bir dizi sunucu işlemi tarafından işleniyorsa, açık prosedür yürütüldüğünde sunucunun bağlantı beklemeyi bıraktığını unutmayın. Açma işlevi tamamlandığında sunucu, sunucu havuzuna geri dönerek terminalle olan bağlantısını keser. Aynı grupta yer alan işlemlerin adreslerine "break" tuşuna basılarak kesme sinyali nasıl gönderilir?

*16. Belleği paylaşmak, yerel makinelerde bulunan bir özelliktir. Mantıksal bir bakış açısıyla, farklı makinelere ait işlemler için ortak bir fiziksel bellek alanının (yerel veya uzak) tahsisi gerçekleştirilebilir. Bu noktanın uygulanmasını açıklayın.

* 17. Bölüm 9'da tartışılan süreç sayfalama ve sayfalama algoritmaları, yerel bir çağrı cihazının kullanıldığını varsayar. Uzaktan yük boşaltma cihazlarını destekleyebilmek için bu algoritmalarda ne gibi değişiklikler yapılmalıdır?

* on sekiz. Uzak makinenin (veya ağın) çöktüğünü ve yerel ağ katmanı protokolünün bu gerçeği kaydettiğini varsayalım. Uzak bir sunucuya istekte bulunan yerel bir sistem için bir kurtarma şeması geliştirin. Ek olarak, istemcilerle iletişimi kaybeden bir sunucu sistemi için bir kurtarma planı geliştirin.

*19. Bir işlem uzak bir dosyaya eriştiğinde, işlemin dosyayı aramak için birden fazla makineyi geçmesi mümkündür. Örnek olarak "/ usr / src / uts / 3b2 / os" adını alın, burada "/ usr" A makinesine ait dizindir, "/ usr / src", B makinesinin kökünün bağlama noktasıdır, " / usr / src / uts / 3b2 ", C makinesinin kökünün bağlama noktasıdır. Birden çok makineden geçerek nihai hedefine gitmeye" multihop " denir. Ancak, A ve C makineleri arasında doğrudan bir ağ bağlantısı varsa, B makinesi üzerinden veri göndermek verimsiz olacaktır. Newcastle bağlantılı bir sistemde ve "şeffaf" dağıtılmış bir sistemde "çoklu alışveriş" uygulamasının özelliklerini tanımlayın.


L-Net yeniden yapılandırılabilir çok hatlı bilgi işlem ortamına dayalı

Kontrol sistemleri alanındaki acil görevlerden biri, dağıtılmış hataya dayanıklı kontrol sistemleri için yazılımların geliştirilmesidir. Bugün bu alanda var olan çözümler tescillidir, sonuç olarak pahalıdır ve her zaman etkili değildir.

Bu çözümler, yedekli taban, teknik ve yazılım kaynaklarının verimli kullanılmasını sağlamamakta, bu da bu tür çözümlerin hem hata toleransını hem de ölçeklenebilirliğini olumsuz yönde etkilemektedir. Ağ mimarisi ihlal edilirse, hem bilgi işleme süreçlerinin hem de veri akışlarının iletiminin (hem kontrol hem de bilgi) dinamik olarak yeniden yapılandırılması olasılığı yoktur. Belirli mikrodenetleyicilerin kullanımı, DCS / SCADA kullanımı, sistemlerin geliştirilmesini ve desteklenmesini, işlevlerinin genişletilmesini zorlaştırır.

Dağıtılmış kontrol sistemi mimarisi

Dağıtılmış bir kontrol sisteminin (DCS) genelleştirilmiş tipik mimarisi, hiyerarşik olarak ilişkili üç seviye içerir: operatör seviyesi, kontrol seviyesi ve G / Ç seviyesi (bkz. Şekil 1).

Operatör seviyesinin ana görevi, tüm sistemin işleyişinin konfigürasyonunu ve kontrolünü sağlamak için bir insan-makine arayüzü (HMI) sağlamaktır. Kontrol seviyesi, sensörlerden veri almaktan ve işlemekten, operatör seviyesine veri iletmekten ve aktüatörler üzerinde kontrol eylemleri geliştirmekten sorumludur. G / Ç seviyesi, kontrol edilen nesneye doğrudan bağlı sensörleri ve aktüatörleri temsil eder.

Yazılımın görevi, DCS'nin genelleştirilmiş mimarisi çerçevesinde, operatör seviyesinin işleyişini ve sistemin kontrol seviyesi ile bağlantısını sağlamaktır. Sonuç olarak, yazılım tasarımında ve donanımla etkileşiminin sorunlarını çözmedeki temel düzey, operatörün düzeyidir. Yazılım, donanımın iç mimarisinden mümkün olduğunca bağımsız olurken, sistemin mevcut donanım kaynaklarından en iyi şekilde yararlanmalıdır.

Donanım, bir sistemdeki düğümler arasında bilgi işlem kaynakları, bellek ve iletişim ortamı sağlar. Sistemin genel mimarisi tasarlanırken, belirli bir uygulamada kendisine bağlanacak G/Ç seviyesinin belirli düğümleri dikkate alınmaz; bu nedenle genel mimaride operatör seviyesi ve kontrol seviyesi dikkate alınır. Donanım yaygın olmalı, modern standartlara uygun olmalı ve mimariyi uygulamak için gerekli tüm özellik ve yeteneklere sahip olmalıdır.

DCS gereksinimleri

DCS gereksinimleri, yalnızca bir bütün olarak sistem için değil, aynı zamanda donanım ve yazılım bileşenleri için de ayrı ayrı geçerlidir, çünkü bu bileşenler için bu gereksinimleri karşılamaya yönelik özel yaklaşımlar temelde farklı olabilir. DCS her şeyden önce hataya dayanıklı olmalıdır. Hata toleransını artırmanın en basit yöntemi, işlevsel birimlerin veya bunların toplamının fazlalığıdır (çoğaltma). İkinci önemli özellik ölçeklenebilirliktir. Ölçeklenebilirlik, yazılımda özel algoritmaların uygulanmasına ve donanımın yeni düğümleri veya bileşen parçalarını değiştirme ve ekleme becerisine dayanır. Aynı zamanda, sistem çalışması, yeni düğümlerin veya modüllerin geliştirilmesi ve mimarisinin değiştirilmesi için basit kalmalıdır.

DCS Mimarilerine Genel Bakış

DCS mimarilerinin gözden geçirilmesi için Siemens SIMATIC PCS 7 DCS, piyasada en çok talep edilenlerden biri olarak ve RTS S3, DCS olarak QNX RTOS temelinde uygulandı.

Siemens SIMATIC PCS 7

Sistem mimarisi, genel bir DCS mimarisinin tüm özelliklerine sahiptir. Operatör istasyonları, bir HMI sağlayan Windows işletim sistemi ve Siemens WinCC paketi ile x86 işlemci mimarisine dayalı bilgisayarlardır. Veritabanları olan sunucular var. Operatör istasyonları, mühendislik istasyonları ve sunucular, Ethernet tabanlı bir yerel alan ağı ile birbirine bağlanır. Operatör seviyesi, yedekli Endüstriyel Ethernet ağının kontrol düzlemine bağlıdır. Kontrol seviyesinde, işlevselliğin çoğaltılması nedeniyle yedeklilik olasılığı olan programlanabilir mantık kontrolörleri (PLC'ler) vardır. Harici sistemlere ve ağlara bağlanmak ve sisteme uzaktan erişim düzenlemek mümkündür.

RTS S3

Bu mimari benzer şekilde DCS'nin genelleştirilmiş yapısının katmanlarından oluşur. Operatör istasyonları, SIMATIC DCS'dekiyle aynı donanım platformuna dayanmaktadır, ancak hem Windows hem de Linux işletim sistemleri altında çalıştırılabilir. Mühendislik istasyonları operatör istasyonları ile birleştirilmiştir. Sistem, birleşik bir uygulama geliştirme ortamı sağlar. Bir Ethernet ağı, taşıyıcı katman içindeki düğümleri birbirine bağlar ve operatör, TCP / IP protokol yığınını kullanarak kendisini kontrol düzlemine getirir. Kontrol seviyesinde, kendi veri tabanları ile QNX işletim sistemini çalıştıran endüstriyel bilgisayarlar ve düğümün işlevselliğini çoğaltarak yedeklilik imkanı bulunmaktadır.

Açıklanan sistemlerin dezavantajları

Yukarıda açıklanan sistemler, operatör seviyesi ve kontrol düzlemi için farklı bir donanım/yazılım platformu kullanır. Operatör düzeyinde, yalnızca bir işlemci mimarisi kullanılabilir ve kontrol düzeyini yapılandırmak ve geliştirmek için özel bir mühendislik istasyonu gerekir. Bu DCS'ler, hata toleransını artırmanın bir yolu olarak, yedekli donanımın irrasyonel kullanımı olan, yedekli düğümün işlevselliğinin çoğaltılmasıyla yalnızca donanım yedekliliği sunar.

L-Net sisteminin özellikleri ve işlevsel özellikleri

L-Net sistemini geliştirirken, görev aşağıdaki özelliklere sahip olacak bir kontrol sistemi oluşturmaktı:

  • Ana bilgisayar arızası veya ağ topolojisi kesintisi durumunda minimum kayıpla tam kurtarma ile dinamik yeniden yapılandırma.
  • Mevcut verimli ağ düğümleri arasında görevlerin verimli dağılımı.
  • Veri iletim akışlarının dinamik olarak yeniden yapılandırılmasıyla düğümler arasında iletişim kanallarının çoğaltılması.
  • Sistemin kullanım kolaylığı ve ölçeklenebilirliği.
  • Kontrol sistemleri ve gömülü sistemler oluşturmak için tasarlanmış herhangi bir donanım platformunda sistemin taşınabilirliği ve performansı.

Yukarıdaki özelliklere sahip bir sistem oluşturmak için öncelikle kontrol sistemleri ve gömülü sistemler oluşturmaya yönelik bir işletim sistemi gereklidir. Mevcut işletim sistemlerinin analizi, en uygun işletim sisteminin çok verimli kaynak tahsisi ve ağ yeteneklerine sahip QNX 6 (Neutrino) olduğunu gösterdi. Geniş ağ yetenekleri, Qnet ağ protokolü tarafından sağlanır. İletişim kanallarının güvenilirlik ve dinamik yük dengeleme sorununu çözer, ancak bir bütün olarak sistemin hata toleransı sorununu çözmez. Sonuç olarak, dağıtılmış yeniden yapılandırılabilir çok hatlı bilgi işlem ortamına dayalı yenilikçi bir kontrol sistemi geliştirildi. Geliştirilen sistem, üç mantıksal blok içeren bir eşler arası mimariye sahiptir: bir giriş-çıkış bloğu, bir genel amaçlı anahtar bloğu ve bir yeniden yapılandırılabilir bilgi işlem ortamı (RCS) bloğu (bkz. Şekil 2).

Bu mimarinin başlıca avantajları şunlardır:

  • Eşler arası tip
  • ademi merkeziyetçilik
  • ölçeklenebilirlik
  • mekansal dağılım

Bu mimarinin işlevsel özellikleri:

  • Boru hattı veri işleme
  • Donanım yedekliliği
  • Yük dağılımı
  • Anında yeniden yapılandırma

Mimarinin birinci seviyesinde, aşağıdakileri içeren bir giriş-çıkış (G/Ç) birimi vardır: giriş-çıkış düğümleri, bir giriş-çıkış düğümleri anahtarı, bir giriş-çıkış arayüzü, sensörler ve aktüatörler. Birim, yerel sensörlerden gelen verilere ve kontrol sisteminin diğer düzeylerinden alınan verilere dayalı olarak kontrol eylemleri oluşturmaya yönelik temel mekanizmalardan sorumludur. Atanan görevler, mevcut göreceli performanslarına göre veya operatör tarafından manuel olarak sağlıklı G/Ç düğümleri arasında dağıtılır. Sensörler ve aktüatörler, herhangi bir düğümün herhangi bir sensörü sorgulamasına veya herhangi bir aktüatör üzerinde bir etki oluşturmasına olanak tanıyan bir veri yolu aracılığıyla bloktaki tüm G / Ç düğümlerine bağlanır. I/O düğüm anahtarı, kontrol ve bilgi verilerini elde etmek için sistem mimarisinin diğer seviyeleri ile aralarında veri alışverişi yapmak için tüm I/O düğümleri arasında iletişim sağlar. Uygun donanım yetenekleriyle, düğümler birbirleriyle ve sistemin diğer seviyelerindeki düğümler ve anahtarlarla doğrudan iletişim kurar, bu da ağdaki yanıt süresini azaltır. G / Ç ünitesinin mevcut çalışma modundaki düğümler ve belirli bir düğüm yükü arasındaki doğrudan iletişim, ünitede, kontrol sisteminin harici hesaplama gücüne başvurmadan bu ünitenin çalışması için gerekli olan boru hattı hesaplamalarının düzenlenmesine izin verir ( DCS), arıza anında G / Ç ünitesinin artıklık düğümleri için sağlanan ücretsiz kaynakların etkin bir şekilde kullanılmasını mümkün kılar.

Mimarinin ikinci seviyesinde yer alan genel amaçlı anahtar bloğu, giriş-çıkış blokları ile DCS ve harici sistemler arasındaki iletişim hatlarını düzenler. Her bir anahtar, kontrol sistemi boyunca çeşitli bağları ve anahtarları birbirine bağlayabilir. İletişim hatlarının sayısı, bloklara dahil edilen düğümlerin ve anahtarların donanım yetenekleri ile belirlenir. Qnet ağı, veri akışlarını dinamik olarak dağıtmanıza izin verdiğinden, bu bloğun ölçeklendirmesi, yeni cihazlar bağlanarak gerçekleştirilir ve yapılandırma gerektirmez ve anahtarlardan biri arızalanırsa, düğümler arasındaki veri aktarımı kesintiye uğramaz. diğer anahtar, düğümler arasında benzer bir bağlantı sağlar veya doğrudan ilişkilidir. Aynı zamanda, başarısız bir anahtarı yedeklemek için gereken yeterli ağ bant genişliğine dikkat etmek gerekir.

Mimarinin üçüncü seviyesinde bulunan yeniden yapılandırılabilir bilgisayar ağı (RCN) bloğu, karmaşık bilgi işleme, karar verme, tanıma vb. sorunları çözmek için yüksek bir bilgi işlem gücü yönetim sistemi sağlar. Blok, tüm kontrol sisteminin başlatılmasından sorumludur: anahtarların ve düğümlerin çalışabilirliğinin kontrol edilmesi, ağ bütünlüğü, tüm sistemin ağ grafiklerinin oluşturulması, giriş-çıkış bloklarının çalışması için başlangıç ​​parametrelerinin ayarlanması. Bu bloğun düğümleri hem kendi verilerini hem de I/O bloklarından gelen verileri arşivlemeyi sağlar. Bu bloğun her bir düğümü, sistemin çalışmasını izlemek ve hem bu düğümün hem de sistemin tüm düğümlerinin çalışma programlarında ayarlamalar yapmak ve talep üzerine yeniden yapılandırma yapmak için tasarlanmış bir operatör makinesinin rolünü oynayabilir.

Yük dağılımı

L-Net sisteminin ana görevlerinden biri, ağ düğümleri üzerindeki hesaplama yükünün dağıtılmasıdır. Bu sorunun çözümü, hesaplamalı boru hatlarının inşasına dayanmaktadır. Hesaplamalı bir boru hattı oluşturmak için, bir kaynaktan bir alıcıya veri akışlarını değiştirmek için bir şema olan bir görev grafiği önceden oluşturulur. Sensörler bir kaynak görevi görür ve aktüatörler alıcı görevi görür. Hesaplamalı boru hattının kendisi, problemin gereksinimlerini sistemin hesaplama kaynaklarına ve mevcut durumuna göre dikkate alarak, görev grafiğinin (bkz. Şekil 3) bilgisayar ağı grafiğiyle (bkz. Şekil 4) eşleştirilmesidir.

Çözüm, alıcıya mevcut donanım, durumu ve ağ grafikleri ve görevleriyle iş yapan mevcut veri kaynakları hakkında kapsamlı bilgi sağlayan bir hizmet kullanmaktır. Sonuç olarak, hesaplamaların sıralanması nedeniyle performans artırılır ve sistem için mevcut tüm hesaplama kaynaklarının rasyonel kullanımı düzenlenir.

hata toleransı

Böyle bir sistemin işleyişinin ana sorunu, bu konveyörün herhangi bir düğümünün arızalanması veya aralarında veri aktarımının ihlali durumunda hesaplama boru hatlarının tamamen bozulmasıdır. Qnet protokolünün temel araçları, mimari tarafından sağlanan yedekleme hatları nedeniyle kısmi ihlal durumunda düğümler arasındaki bağlantıların geri yüklenmesini sağlar. L-Net sistemi, bilgi işlem sisteminin ana bilgisayarının tamamen arızalanması durumunda, bilgi işlem hattını dinamik olarak yeniden yapılandırarak çalışabilirliği geri yükleme sorununu çözer; bozuk bloğu değiştirmek için çalışma kaynaklarını kullanma. Sistem, arıza olgusuna yanıt süresi, kurtarma süresi ve kullanılan donanım kaynakları bakımından farklılık gösteren üç kurtarma (yeniden yapılandırma) senaryosu sağlar: arıza durumunda, pasif hazırlık ile, aktif hazırlık ile.

  • Arıza durumunda yeniden yapılandırma- bir arıza tespit edildikten sonra, mevcut donanım aranır ve görev grafiğine dahil edilir.
  • Pasif hazırlık ile yeniden yapılandırma- Yedekli donanım önceden belirlenir, görev grafiğinin üst kısmının bir düğüm üzerinde uygulanmasını sağlayan bir süreç başlatılır, bağlantılar kurulur ancak ana düğüm arızalanmadıkça süreç veri işlemez.
  • Aktif hazırlık ile yeniden yapılandırma- görev grafiğinin üst kısmı, paralel olarak veri işlemeyi gerçekleştiren ve sonucu ileten birkaç düğümde uygulanır.

Sonuç, sistemin hem yazılım hem de donanım seviyelerindeki hatalara karşı esnek bir hazırlığı, ağın, hesaplamalı boru hattının ve düğümün uygulanmasından bağımsız olarak, işi kesintiye uğratmadan ve performansı kaybetmeden düğümlerin konfigürasyonunu değiştirme yeteneğidir.

Çözüm

Geliştirilen L-Net sistemi, mevcut analogların aksine, tam yazılım uyumluluğu ile DCS düğümlerinin çok çeşitli donanım özelliklerinin kullanılmasını gerektirir. Düğümler tek bir işletim sisteminin (QNX Neutrino) kontrolü altında çalıştığında, bunları çeşitli arabirimler ve çevresel aygıtlarla çeşitli işlemci mimarileri (x86, ARM, MIPS, vb.) üzerine kurmak mümkündür. Düğümlerin uygulanması, masaüstü, endüstriyel PC'ler, giyilebilir PC'ler ve tek kartlı bilgisayarlar şeklinde mümkündür. Geliştirilen DCS'nin yazılım kompleksinin tüm bileşenleri, QNX OS ile herhangi bir düğümde başlatılabilirken, düğümleri farklı bir işletim sistemiyle kullanmak mümkün olmaya devam ediyor. Bu yaklaşım, her bir düğümün hem operatör seviyesindeki hem de kontrol seviyesindeki görevleri çözmek için kullanılmasına izin verir. Sonuç olarak, genelleştirilmiş DCS mimarisinde ve bu mimariyi temel olarak kullanan sistemlerde bulunan katı bir düzey hiyerarşisi olmayan eşler arasında esnek bir etkileşim sistemi vardır. Eşler arası ağ, bir sistemi dağıtma, çalıştırma, ölçeklendirme ve hata ayıklama işlemlerini basitleştirir.

Geliştirilen sistemdeki yedekli donanımın hesaplama potansiyelini gerçekleştirmek için, Qnet ağ protokolüne ve L-Net ağ yazılımına dayalı dinamik yapılandırma ve yeniden yapılandırma için algoritmalar önerilmiştir. Dinamik konfigürasyon algoritması, görevlerin sıralanması ve paralelleştirilmesi yoluyla hesaplama yükünün tüm düğümler arasında dağıtılmasına ve düğümler arasındaki veri iletim kanallarındaki yükün dinamik olarak dengelenmesine dayanır. Sistem yeniden yapılandırma algoritması, mevcut donanıma, önceliklere ve sisteme atanan görevlere bağlı olarak, arıza durumunda çalışabilirliği geri yüklemek için üç senaryonun varlığını varsayar: arıza durumunda, pasif hazırlıklı (kaynak tahsisi) ve aktif hazırlıklı (kaynak kullanımı) . Dinamik yapılandırma ve yeniden yapılandırma algoritmaları, sistemdeki donanım rezervlerini kullanarak performansı ve güvenilirliği artırır.

Sistemin önemli bir avantajı, içinde kullanılan hem donanım hem de yazılım teknolojilerinin maksimum şeffaflığıdır; bu, sistemin teknik desteğini ve bunun için yeni modüllerin geliştirilmesini ciddi şekilde basitleştirmeyi mümkün kılar.

Çıktı

Geliştirilen mimari çözümler, geniş bir donanım yelpazesi kullanma olasılığı, dinamik konfigürasyon algoritmalarının uygulanması ve sistem kaynaklarının rasyonel kullanımı nedeniyle dağıtılmış kontrol sistemlerinin bu tür göstergelerini güvenilirlik, performans, maliyet, ölçeklenebilirlik ve basitlik gibi iyileştirmeyi mümkün kılmaktadır.

  1. http://kazanets.narod.ru/DCSIntro.htm.
  2. http://kazanets.narod.ru/PCS7Overview.htm.
  3. http://www.rts.ua/rus/news/678/0/409.
  4. Zyl S. QNX Momentics: Uygulamanın Temelleri. - SPb: BHV-Petersburg, 2005.
  5. Krten R. QNX Neutrino'ya Giriş. Gerçek zamanlı uygulamalar geliştirmek için bir kılavuz. - SPb: BHV-Petersburg, 2011.

Anahtar Kelimeler: dağıtılmış kontrol sistemi, kontrol sistemleri için bilgi desteği, dağıtılmış yeniden yapılandırılabilir sistemler.

Yeniden yapılandırılabilir çok hatlı bilgi işlem ortamı L-Net'e dayalı dağıtılmış bir kontrol sistemi mimarisi

Sergey Yu. Potomskiy, Ulusal Araştırma Üniversitesi "Ekonomi Yüksek Okulu"nda Yardımcı Doçent.

Nikita A. Poloyko, Ulusal Araştırma Üniversitesi "İktisat Yüksek Okulu" beşinci sınıf öğrencisi. Çalışma asistanı. Programcı. Eğitim alanı: "Teknik sistemlerde kontrol ve bilişim".

Soyut. Makale, yeniden yapılandırılabilir çok hatlı bilgi işlem ortamına dayalı dağıtılmış bir kontrol sistemine ayrılmıştır. Sistemin mimarisi verilmiştir. Ayrıca sistemin temel karakteristikleri ve fonksiyonel özellikleri de verilmiştir. Makale, işletim sisteminin seçimi için bir gerekçe sunar. Sistemin mevcut benzer gelişmelere kıyasla temel avantajları makalede gösterilmiştir.

Anahtar Kelimeler: dağıtılmış kontrol sistemi, sistem yazılım desteği, dağıtılmış yeniden yapılandırılabilir.


Temas halinde

(Site materyali http://se.math.spbu.ru)

Tanıtım.

Günümüzde, neredeyse tüm büyük yazılım sistemleri dağıtılmaktadır. Dağıtımlı sistem- bilgi işlemenin tek bir bilgisayarda değil, birkaç bilgisayar arasında dağıtıldığı bir sistem. Genel olarak yazılım tasarımıyla pek çok ortak yanı olan dağıtık sistemler tasarlarken, dikkate alınması gereken bazı özellikler vardır.

Dağıtılmış sistemlerin altı ana özelliği vardır.

  1. Kaynakları paylaşmak. Dağıtılmış sistemler hem donanım (sabit sürücüler, yazıcılar) hem de yazılım (dosyalar, derleyiciler) kaynaklarının paylaşılmasına izin verir.
  2. Açıklık.Yeni kaynaklar ekleyerek sistemi genişletme yeteneğidir.
  3. paralellik.Dağıtılmış sistemlerde, ağ üzerindeki farklı bilgisayarlarda aynı anda birden fazla işlem çalışabilir. Bu işlemler çalışırken etkileşime girebilir.
  4. ölçeklenebilirlik . Altında ölçeklenebilirlik yeni özellikler ve yöntemler ekleme olasılığı anlaşılmaktadır.
  5. Hata toleransı. Birden fazla bilgisayarın varlığı, bilgilerin çoğaltılmasına ve bazı donanım ve yazılım hatalarına karşı direnç gösterilmesine izin verir. Dağıtılmış sistemler, hata durumunda kısmi işlevselliği destekleyebilir. Sistemin tam bir arızası yalnızca ağ hatalarıyla oluşur.
  6. Şeffaflık.Kullanıcılara sistemdeki kaynaklara tam erişim sağlanırken, aynı zamanda kaynakların sistem genelinde dağılımı ile ilgili bilgiler onlardan gizlenir.

Dağıtık sistemlerin de bir takım dezavantajları vardır.

  1. karmaşıklık... Genel olarak dağıtık sistemlerin özelliklerini anlamak ve değerlendirmek çok daha zordur ve tasarlamak, test etmek ve bakımını yapmak daha zordur. Ayrıca sistem performansı, bireysel işlemcilere değil, ağın hızına bağlıdır. Kaynakların yeniden tahsisi, sistemin hızını önemli ölçüde değiştirebilir.
  2. Güvenlik... Tipik olarak, sisteme birkaç farklı makineden erişilebilir, ağdaki mesajlar görüntülenebilir ve engellenebilir. Bu nedenle, dağıtılmış bir sistemde güvenliği sağlamak çok daha zordur.
  3. kontrol edilebilirlik... Sistem, farklı işletim sistemleri sürümlerinin kurulabileceği farklı bilgisayar türlerinden oluşabilir. Bir makinedeki hatalar, diğer makinelere öngörülemeyen bir şekilde yayılabilir.
  4. tahmin edilemezlik ... Dağıtılmış sistemlerin bazı olaylara tepkisi tahmin edilemez ve sistemin tam yüküne, organizasyonuna ve ağ yüküne bağlıdır. Bu parametreler sürekli değişebildiğinden, talebe yanıt verme süresi zamandan önemli ölçüde farklılık gösterebilir.

Bu eksikliklerden, dağıtık sistemler tasarlarken geliştiricilerin dikkate alması gereken bir takım sorunlar olduğunu görebilirsiniz.

  1. kaynak tanımlama ... Dağıtık sistemlerde kaynaklar farklı bilgisayarlarda bulunur, bu nedenle kaynak adlandırma sistemi, kullanıcıların ihtiyaç duydukları kaynaklara kolayca erişip başvurabilecekleri şekilde düşünülmelidir. Bir örnek, Web sayfalarının adlarını tanımlayan URL (Uniform Resource Locator) sistemidir.
  2. İletişim... İnternetin evrensel çalışabilirliği ve çoğu dağıtılmış sistem için İnternet üzerinde TCP / IP protokollerinin verimli bir şekilde uygulanması, bilgisayarlar arasındaki iletişimi organize etmenin en verimli yolunun örnekleridir. Ancak, özel performans veya güvenilirliğin gerekli olduğu bazı durumlarda özel araçlar kullanmak mümkündür.
  3. Sistem hizmet kalitesi ... Bu parametre performansı, sağlığı ve güvenilirliği yansıtır. Hizmet kalitesini etkileyen bir dizi faktör vardır: süreçlerin, kaynakların, donanımın dağılımı ve sistemin uyarlanabilirliği.
  4. Yazılım mimarisi ... Yazılım mimarisi, sistem işlevlerinin sistem bileşenleri arasında dağılımını ve bu bileşenlerin işlemciler arasında dağılımını tanımlar. Yüksek kaliteli bir sistem hizmeti sağlamanız gerekiyorsa, doğru mimariyi seçmek çok önemlidir.

Dağıtılmış sistem tasarımcıları için zorluk, dağıtılmış bir sistemin gerekli tüm özelliklerini sağlamak için yazılım ve donanım tasarlamaktır. Bu, çeşitli dağıtılmış sistem mimarilerinin avantajlarını ve dezavantajlarını bilmeyi gerektirir. Üç tür dağıtılmış sistem mimarisi vardır.

  1. İstemci / sunucu mimarisi ... Bu modelde sistem, sunucular tarafından istemcilere sağlanan hizmetler dizisi olarak düşünülebilir. Bu tür sistemlerde sunucular ve istemciler birbirinden önemli ölçüde farklılık gösterir.
  2. Üç katmanlı mimari ... Bu modelde sunucu, istemcilere doğrudan hizmet sağlamaz, iş mantığı sunucusu aracılığıyla hizmet verir.

İlk iki model hakkında bir kereden fazla söylendi, üçüncüsü üzerinde daha ayrıntılı duralım.

  1. Dağıtılmış Nesne Mimarisi ... Bu durumda, sunucular ve istemciler arasında hiçbir fark yoktur ve sistem, konumu gerçekten önemli olmayan bir dizi etkileşimli nesne olarak düşünülebilir. Servis sağlayıcı ve kullanıcıları arasında bir ayrım yoktur.

Bu mimari günümüzde yaygın olarak kullanılmaktadır ve aynı zamanda web hizmetleri mimarisi. Bir web hizmeti, İnternet üzerinden erişilebilen ve biçimi sağlayıcıdan (evrensel veri biçimi - XML ​​kullanıldığından beri) ve çalışma platformundan bağımsız olan bazı hizmetler sağlayan bir uygulamadır. Şu anda, dağıtılmış nesne sistemleri kavramını destekleyen üç farklı teknoloji bulunmaktadır. Bunlar EJB, CORBA ve DCOM teknolojileridir.

İlk olarak, genel olarak XML'in ne olduğu hakkında birkaç söz. XML, Web hizmetleri sağlamak için kullanılan genel bir veri biçimidir. Web hizmetleri, açık standartlara ve protokollere dayanmaktadır: SOAP, UDDI ve WSDL.

  1. SABUN ( W3C tarafından geliştirilen Basit Nesne Erişim Protokolü, Web servislerine yapılan istekler için bir format tanımlar. Bir Web hizmeti ve kullanıcısı arasındaki mesajlar, SOAP zarfları (bazen XML zarfları olarak da adlandırılır) olarak adlandırılan paketlerde paketlenir. İletinin kendisi, bir eylem gerçekleştirme isteği veya bu eylemin sonucu olan bir yanıt içerebilir.
  2. WSDL (Web Hizmeti Açıklama Dili).Web hizmeti arabirimi, WSDL belgelerinde açıklanmıştır (ve WSDL, XML'in bir alt kümesidir). Bir hizmeti dağıtmadan önce geliştirici, açıklamasını WSDL dilinde oluşturur, Web hizmetinin adresini, desteklenen protokolleri, izin verilen işlemlerin bir listesini ve istek ve yanıt biçimlerini belirtir.
  3. UDDI (Evrensel Tanımlama, Keşif ve Entegrasyon) -İnternet Web Hizmetleri Arama Protokolü ( http://www.uddi.org/). Web hizmet sağlayıcılarının hizmetleri kaydettiği ve geliştiricilerin uygulamalarına dahil etmeleri gereken hizmetleri bulduğu bir iş kaydıdır.

Rapora göre, Web servisleri en iyi ve tartışmasız çözüm gibi görünebilir ve tek soru geliştirme araçlarının seçimidir. Ancak öyle değil. WWW yaratıcısı Tim Berners-Lee'nin yaklaşık beş yıl önce bahsettiği Semantik Web, Web hizmetlerine bir alternatif var.

Web hizmetlerinin amacı uygulamalar arasındaki iletişimi kolaylaştırmaksa, Semantik Web çok daha karmaşık bir sorunu çözmek için tasarlanmıştır - Web'de bulunabilen bilginin değerinin verimliliğini artırmak için meta veri mekanizmalarını kullanarak. Bu, nesne yönelimli olanın lehine belge yönelimli yaklaşımı terk ederek yapılabilir.

bibliyografya

  1. SomervilleI. Yazılım Mühendisliği.
  2. Dranitsa A. Java ve .NET. - "Bilgisayar", # 516.
  3. İnternet kaynakları.