Bahar (işletim sistemi) - Spring (operating system)

İlkbahar
GeliştiriciSun Microsystems
Çalışma durumuÜretimden kaldırıldı
İlk sürüm1993; 27 yıl önce (1993)
Çekirdek tipMikro çekirdek

İlkbahar durdurulmuş bir proje / deneysel mikro çekirdek tabanlı nesne odaklı işletim sistemi geliştirildi Sun Microsystems 1990'ların başında. Teknolojiyi büyük ölçüde benzer şekilde kullanmak, Mach çekirdeği Bahar, daha zengin bir programlama ortamı sağlamaya odaklandı. çoklu miras ve diğer özellikler. Spring ayrıca, barındıracağı işletim sistemlerinden daha temiz bir şekilde ayrılmıştı ve onu Unix kökler ve hatta birkaç işletim sisteminin aynı anda çalıştırılmasına izin verir. Geliştirme 1990'ların ortalarında azaldı, ancak projeden birkaç fikir ve bazı kodlar daha sonra Java Programlama dili kütüphaneler ve Solaris işletim sistemi.

Tarih

Spring Research Distribution 1.0 CD kapağı

Bahar, Sun'ın bir parçası olarak 1987'de dolambaçlı bir şekilde başladı ve AT&T oluşturmak için işbirliği UNIX birleştirildi, her iki şirket de "UNIX'i nesne yönelimli bir şekilde yeniden uygulamak" için iyi bir fırsat olduğuna karar verdi.[1] Ancak sadece birkaç görüşmeden sonra projenin bu kısmı öldü.

Sun, ekibini bir arada tutmaya karar verdi ve bunun yerine öncü. Unix çeşitlerini birleştirmenin yanı sıra, yeni sistem aynı zamanda hemen hemen tüm diğer sistemleri de çalıştırabilir ve bunu dağıtılmış bir şekilde yapabilir. Sistem ilk olarak 1993 yılında "tam" bir şekilde çalışıyordu ve bir dizi araştırma makalesi üretti. 1994 yılında ticari olmayan bir lisans altında "araştırma kalitesi" yayını yapıldı, ancak bunun ne kadar yaygın olarak kullanıldığı belirsiz. Ekip dağıldı ve çeşitli diğer projelerde Bahar konseptlerinden bazılarını kullanarak Sun içindeki diğer projelere geçti.

Arka fon

Bahar projesi Mach 3'ün piyasaya sürülmesinden kısa bir süre sonra başladı. Önceki versiyonlarda Mach, mevcut BSD çekirdekler, ancak Mach 3'te Unix hizmetleri ayrıldı ve diğerleri gibi bir kullanıcı alanı programı olarak çalıştırıldı, Mach olarak adlandırılan bir kavram sunucu. Geleneksel bir Unix sistemi altında normalde çekirdekte özel olan veriler artık sunucular ve kullanıcı programları arasında bir arası iletişim (IPC) sistemi, ile biten bağlantı noktaları her iki programın da düzenlediği. Mach, bu bağlantı noktalarını çekirdekte uyguladı. sanal bellek verileri programdan programa taşımak için bellek yönetim birimi (MMU) ve yazarken kopyala bunu makul bir performansla yapmak için bir algoritma.

Nihai gelişiminde, Mach üzerindeki bir işletim sistemi, her biri belirli bir görevi yerine getiren bir dizi bu tür sunucudan oluşacaktır. Örnekler şunları içerir: dosya sistemi veya ağ yığını. Böyle bir sistemdeki işletim sistemi sunucusu oldukça küçüktür, bu işletim sistemine özgü hizmetler sağlar ve diğer çağrıların çoğunu diğer sunuculara iletir. İşletim sistemi tek bir ortak sunucu setinin üzerinde çalıştığından, birkaç işletim sistemi sunucusu aynı anda çalıştırılabilir ve tek bir sistemin "yerel" olarak desteklenmesine izin verir DOS, Unix ve diğer işletim sistemleri aynı anda.

Bu özellik, aşağıdaki gibi şirketler için özellikle heyecan vericiydi: IBM, birkaç farklı sistemi zaten destekliyordu ve Mach'ı bunları ortak temel kodla birleştirmenin bir yolu olarak gördü. Aslında bu o kadar kolay olmadı. Mach, herhangi bir sistemin bir dereceye kadar Unix benzeri çalışmasına neden olan düşük düzeyde birkaç karar verdi. En önemlisi, Unix programlarının oldukça esnek olmayan kalıtsal modeline göre modellenen bir güvenlik sistemiydi. Buna ek olarak, IPC sistemi önemli bir performans sorunu olduğunu kanıtladı, ancak bu sorunun niteliği daha sonra netleşmedi. Performans o kadar zayıftı ki, mevcut işletim sistemlerini Mach'a taşıyan birçok ticari proje, özellikle IBM'in İşyeri İşletim Sistemi, sonunda terk edildi.

Gerekçe

Sun birden çok işletim sistemini desteklemekle de ilgilense de, ihtiyaçları IBM veya Apple kadar acil değildi. Bu noktada, platformları çoktan 68 bin tabanlı makineler SPARC tabanlı diziliş ve UNIX System V tabanlı Solaris işletim sistemi BSD tabanlı SunOS'larından devralıyordu. Sun'ın endişeleri biraz daha incelikliydi: geliştiricilerin Sun'ın Unix sürümüyle ilgilenmesini sağlamak; ve sistemlerinin aşağıdaki gibi daha küçük cihazlara ölçeklenmesini sağlar set üstü kutular. Mikro çekirdek tabanlı bir sistem bu ikinci rolde özellikle yararlı olacaktır.

Spring, "programlanabilirlik" üzerine yoğunlaştı; sistemin geliştirilmesini kolaylaştırır. Bu açıdan birincil katkı, zengin bir arayüz tanımlama dili (IDL), Mach'ta kullanılandan önemli ölçüde daha fazla bilgi içeren arabirimleri dışa aktarır. Fonksiyonlara ve parametrelerine ek olarak, Spring'in arayüzleri ayrıca hangi hataların ortaya çıkabileceği ve ad alanı onlar ait. Uygun bir dil verildiğinde, programlar, işletim sistemi sunucuları da dahil olmak üzere, birden çok arabirimi içe aktarabilir ve bunları o dile özgü nesnelermiş gibi birleştirebilir - özellikle C ++. Bir süre sonra Spring IDL, küçük değişikliklerle kabul edildi. CORBA IDL.

Spring ayrıca dosya sistemleri, sanal bellek ve IPC performansındaki bir dizi özel yazılım ilerlemesini de araştırdı. Sonuç, Mach'tan çok daha iyi performansa sahip tek bir Unix benzeri sistemdi. Bu değişikliklerden bazıları aşağıda ayrıntılı olarak açıklanmıştır.

Açıklama

Sun mühendisleri bir dizi ortak bileşen için standart olmayan terminoloji kullandılar, bu da sistemi tartışmayı biraz kafa karıştırıcı hale getiriyor. Örneğin, Mach görevler olarak anılır etki alanları, bağlantı noktaları gibi kapılar, ve çekirdek olarak çekirdek.

Çekirdek

Yay çekirdeği iki bölüme ayrıldı: bir sanal bellek sistemi ve çekirdek. Çekirdek, Mach çekirdeğinin yalnızca bir kısmına eşdeğer olsa da, her işletim sisteminin çekirdekleri aynı işlevi yerine getirecek kadar benzerdir.

Spring çekirdeği, yalnızca kullanıcı tarafı uygulamaları desteklemek için gereken en temel işlevselliği ve durumu içerir. Öncelikle bu, çalışan programların listelerini tutmak için durumu içerir (etki alanları) ve iş parçacığı ve aralarındaki iletişim bağlantıları (kapılar).

Yay çekirdeği çok iş parçacıklı değil. Normalde bu, onu kullanmaktan alıkoyar gerçek zaman ayarlar, ancak durum net değil. Disk gibi uzun süre çalışan bir görevi sağlamak için normalde çekirdeklerin iş parçacığına ihtiyacı vardır. G / Ç sistemi bağlamaz ve sonraki bir aramanın zamanında hizmet verilmesini engellemez; Spring altında çekirdek, isteklerin büyük çoğunluğunu neredeyse anında sunuculara iletir, bu nedenle bu modelde, teorik olarak yalnızca sunuculara iş parçacığı açılması gerekir.

IPC modeli

Mach ve Spring arasındaki en büyük fark IPC sistemiydi. Mach'ta, sistem tek yönlü asenkron borular (bağlantı noktaları) programlar arasında, Unix boruları. Bununla birlikte, programlamada en yaygın iletişim yöntemi, prosedür çağrısı veya Mach'ın doğrudan desteklemediği çağrı / geri dönüş. Çağrı / dönüş semantiği, yalnızca altta yatan bağlantı noktası mekanizmasına dayalı olarak daha yüksek seviyeli kitaplıklarda ek kod aracılığıyla desteklenebilir ve böylece karmaşıklık eklenir.

Bunun yerine Spring, temel iletişim sisteminde çağrı / dönüş anlamını doğrudan destekledi. Bu, terminolojinin değişmesine neden oldu. bağlantı noktaları Mach'da kapılar baharda. Kapılar yalnızca çekirdek tarafından biliniyordu; programlara, o programa özgü bir tanımlayıcıya sahip kapıya bir "tutamaç" verildi. Sistem, ilk mesaj için bağlantı noktalarına benzer şekilde çalıştı; bir kapıya gönderilen mesajlar, hedef uygulamayı bulmak ve kapı kolunu çevirmek için çekirdek tarafından incelendi, ancak daha sonra çekirdek, verileri hızlı bir şekilde geri getirebilmek için arayandan küçük miktarlarda bilgi kaydetti. Bu, geri dönüşü yaklaşık% 40 oranında hızlandırdı.

Ek olarak, Mach modeli eşzamansızdı - sunucuda veri olduğunda çağrı geri dönüyordu. Bu, sunucu meşgul olduğunda diğer programların çalışmasına izin veren orijinal Unix boru modelini takip etti. Ancak, bir arama / dönüş sistemi için bunun ciddi dezavantajları vardır, çünkü görev zamanlayıcının hizmet verilecek bir sonraki programı seçmek için çalışması gerekir. Umarım bu, aramanın veri istediği sunucuydu, ancak bu garanti edilmedi. Bahar altında IPC eşzamanlıdır; kontrol, zamanlayıcı çalıştırılmadan hemen sunucuya geçirilir, bu da sunucunun hemen dönebileceği yaygın durumda gidiş-dönüş süresini iyileştirir.

Mach altında sanal bellek sistem tarafından desteklenen bellek yönetim birimi (MMU) 'nun, hafızadaki aynı verileri iki programa basitçe eşleyerek, verileri kopyalamak için hafif bir çözüm sağlaması bekleniyordu. Gerçekte bu çözüm, pek çok MMU'nun bu eşlemeyi yavaşlatan ve hatta imkansız kılan tasarım özelliklerine sahip olması nedeniyle, hiç de verimli değildi.

Mach'ın tek boyutlu IPC çözümünün aksine, Spring, programlar arasında fiziksel olarak veri aktarımı için çeşitli yöntemler kullandı. Bunlardan biri, toplu yol, temelde Mach'ın bağlantı noktaları ve mesajlarıyla aynıydı, ancak pratikte toplu yol, en az yaygın mesaj türü idi. Daha küçük mesajlar için Spring, vanilya yoluVerileri bir alandan diğerine doğrudan kopyalayan, gerçek dünyada 5k'den daha az veri için bellek haritalamasından daha hızlı olduğu kanıtlanan bir şey.

hızlı yolson derece hızlı çağrılar için izin verilir - en azından çalışırken SPARC tabanlı platformlar. Hızlı yol, çoğunu önlemek için benzersiz bir "yarı tuzak" kullandı. bağlam değiştirme Mach sistemlerini rahatsız eden ek yük. Tüm işlemci durumunu - çekirdeğe bir tuzak olması durumunda normal prosedür - kurtarmak yerine Spring, SPARC mimarisinin özel uygulama ayrıntılarıyla tanımlanan bir sayı olan yalnızca ilk 16 SPARC kaydını kaydetti. Kayıt yığınının diğer bölümleri SPARC'lar kullanılarak alıcıya görünmez hale getirildi. WIM bir miktar güvenlik sağlayan talimat. Hızlı yol, tek bir uygulama içindeki klasik bir prosedür çağrısına büyük ölçüde benzer. pencereleri kaydet SPARC'da, içeriği bir programdan diğerine taşımak için bazı MMU çalışmaları eklemek.

Hızlı yol, yalnızca çevrilmesi gerekmeyen basit değerleri (örneğin kapı referansları olmadan) toplamda 16 değere kadar geçen çağrılar için mevcuttu. Bu oldukça sınırlayıcı gibi görünse de, hızlı yol aslında ilkbaharda aramaların büyük çoğunluğu tarafından kullanılıyor - genellikle aramaların% 80'inden fazlası ve geri dönüşlerin yaklaşık% 60'ı. İadeler genellikle büyük veri bloklarıyla, örneğin bir disk bloğu ile yanıt verir ve geri dönüşlerin neden diğer IPC sistemlerini daha sık kullandığını açıklar.

Açık 32 bit SPARC V8 sistemleri, hızlı yolu kullanan eksiksiz bir gidiş-dönüş çağrısı 100'den fazla talimat aldı ve bu da onu tipik bir Mach çağrısından çok daha hızlı hale getirdi. Hızlı yolun diğer makinelerde uygulanıp uygulanamayacağı belirsizliğini koruyor, bu nedenle Yay'ın genel performans iyileştirmesini, tipik olarak ölçülen Mach ile karşılaştırmak zordur. IA-32 sistemleri. Spesifik olarak, bir 486DX-50'de tam sistem çağrısı, mevcut BSD Unix sistemleri ve Mach altında 114 µs. Bu,% 50 veya daha fazla performans artışına yol açtı ve çoğu Mach projesini mahkum etti. Buna karşılık, hızlı yolu kullanan Spring, IPC süresinin yalnızca 11 µs olduğunu gösterdi. SPARCstation 2.

Sanal bellek

Baharda bir diğer önemli iyileştirme alanı da sanal bellek (VM) sistemi, ayrıca çekirdeğin bir parçasıdır. Sanal bellek, fiziksel bellekleri birbirine bağlayan bir sistemdir. Veri deposu bir makinede, MMU'da ve disk sisteminde, sistemdeki her programın, makine ve işletim sisteminin destekleyebileceği maksimum değere eşit kendi RAM bloğuna sahip olduğu yanılsamasını yaratır. 1980'lerde ve 1990'larda kullanılan bilgisayarlarda ve işletim sistemlerinde en yaygın bellek adresleme modeli, 4'lük teorik sınıra erişim sağlayan 32 bitti.GiB ancak 2000'lerin başına kadar, yalnızca nispeten pahalı bilgisayarlar bu kadar fiziksel RAM'e sahip olacaktı. VM sistemi, daha fazlasının yanılsamasını yaratır. hard disk olarak Destek deposu RAM'in etkin olmayan kısımlarını boşaltmak için kullanılan çok daha yavaş bir bellek alanı.

Geleneksel Unix sistemlerinde VM, birbirine bağladığı disk ve bellek işleyicileri gibi çekirdeğin bir parçasıdır. Mach altında, VM sisteminin nereye yerleştirileceğine dair karar o kadar açık değildir - çekirdek RAM ve MMU'nun kontrolünde olmasına rağmen, disk işleyicileri harici istemci programlarının parçasıdır. Bu sorunu çözmek için Mach 3, çekirdekteki gerçek VM sisteminin kontrolüne sahip yeni bir iki katmanlı VM sistemi tanıttı ve bu sistem daha sonra harici bir istemci alanı ister. çağrı cihazı fiziksel olarak bellek kopyalamak için disk sistemiyle etkileşim kurmak. Ne yazık ki bu, VM sisteminin çeşitli katmanları birbirini çağırdığından, çekirdek içinde ve dışında (bununla birlikte ortaya çıkan bağlam anahtarları ile birlikte) birkaç gezinti gerektiren ciddi bir performans sorunu olduğunu kanıtladı.

Bahar ekibi, Mach modelinde neyin yanlış gittiğini inceleyip düzeltebilme avantajına sahipti. Sonuç, çok daha temiz bir şekilde ayrılmış bir sistemdi. adres alanları programlarda, VM tarafından çeşitli hafıza tarafından yönetilen nesneler çağrı cihazı mağaza işlemlerini desteklemek için. Bir program veri için bir talepte bulunduğunda, istek çekirdekteki VM sistemine iletildi, bu da uygun çağrı cihazını bulup ondan uygun bir bellek nesnesi oluşturmasını ve ayarlamasını ister. Buna karşılık, çağrı cihazı bir önbellek yöneticisi o bellek nesnesinin yerel önbelleğinin temiz / kirli durumunu takip etmekten sorumlu olan VM'den. Uygulama ayrıntıları bu modele önemli ölçüde karmaşıklık kattı, ancak bunların çoğu gizlendi. Sonunda, temel sistem hafızadan sorumlu çağrı cihazlarına ve önbellekten sorumlu olan adres alanlarına sahipti. İkisinin, verilerini senkronize tutmak için ileri geri komutları iletmelerine olanak tanıyan iyi tanımlanmış arayüzleri vardı.

Görevlerdeki bu bölünme, çok gerçek bir performans iyileştirmesine yol açtı. Programlar bellek nesnelerini paylaşabildiğinden ve Spring gibi mikro çekirdek sistemleri belleğin etrafta kopyalanması fikrine dayandığından, Spring belleği bu şekilde paylaşan programların bunu VM sisteminde de paylaşmasına izin verdi. Bu nedenle, bir ağ dosya sunucusu bir programa veri veriyorsa Mach altında her ikisi de programlar VM sisteminde belleği tüketirken, Bahar döneminde ikisi doğal olarak Aynı bellek nesnelerini paylaşın, çünkü bu bellek nesnesini uygulayan çağrı cihazı aynı belleğe başka bir tutamaç döndürür. Yalnızca sanal makinenin içinde farklı nesneler olarak kabul edilirler ve ayrı önbellek yöneticileri tarafından ele alınırlar. bu yüzden veri RAM'de yalnızca bir kez önbelleğe alınır. Teoride bu, önemli ölçüde daha iyi gerçek dünya RAM kullanımına yol açabilir.

Ek olarak, iyi tanımlanmış bir API'ye sahip harici çağrı cihazlarının kullanılması, ihtiyaç duyulduğunda sistemin temiz bir şekilde ayrılmasına izin verdi. Spring ayrıca, programların kendileri de dahil olmak üzere ihtiyaçlarına en uygun çağrı cihazını belirtmelerine izin vererek Spring programlarının bilinen iş yükleri için özel VM sistemlerini kolayca uygulamasına izin verdi. Gibi uygulamalar için dosya sunucuları, web sunucuları ve Veritabanı Yönetim Sistemleri, özel sanal makineler ve dosya sistemleri genellikle önemli ölçüde iyileştirilmiş performans sağlar.

İsim hizmeti

Çoğu işletim sistemi, çeşitli adlandırma hizmetleri. En temel örnek, dosyalara dahili olarak küçük bir sayı olan bir "tutamaç" ile başvurulan bir dosya sistemidir, ayrı bir dizin ise kullanıcıların etkileşimde bulunduğu dosya adlarını verir. Aynı türden ad / tanımlayıcı ikilemi, tipik Unix sisteminin diğer birçok parçasında meydana gelir; yazıcılar, etc / printcap dosya, ortam değişkenlerindeki küçük sayılar ve dizeler ve DNS'deki ağ konumları. Bu sistemlerin her biri, bir gelenekle kendi adlarını verdi. API, farklı nesnelerin konsept olarak bile tamamen farklı görünmesini sağlamak.

Diğer sistemler, mevcut Unix sistemlerine adlandırma sistemleri eklemeye çalışmışlardı, ancak bunlar genellikle, bu çeşitli hizmetlerden tüm adları basitçe toplayan ve bunları tek bir koleksiyonda sunan mevcut işlevselliğin "kapsamı" idi. Altta yatan sistem düzeni hakkında bilgi sahibi olmaya güvendikleri gerçeğinden dolayı, yeni hizmetlerin eklenmesini kolaylaştırmadan, oldukça esnek olmama eğilimindeydiler. Bunların pek işe yaramadığı görülüyor.

Yalnızca tamamen yeni bir işletim sisteminde evrensel bir hizmet sağlama umulabilir. Örneğin, Plan 9 dosya sistemini evrensel bir adlandırma hizmeti olarak kullandı; yazıcılardan pencerelere kadar her şeye dosya sistemi üzerinden ismiyle erişilebilir. Bu, yıllar içinde daha fazla işlevsellik eklendikçe yavaş yavaş ortadan kaybolan orijinal Unix konseptinin bir uzantısıdır.

Mach, bağlantı noktaları için herhangi bir adlandırma hizmetine sahip değildi. Bu ciddi bir sorun oldu, çünkü programlar, çekirdekten bir bağlantı noktası sağlamasını istemek için hangi sunucuları aramak zorunda olduklarını önceden bilmek zorundaydı. Bu, işlevselliği değiştirmenin olması gerekenden çok daha zor olduğu anlamına geliyordu; Örneğin eskisi ile aynı bağlantı noktalarında bulunması gereken yeni bir yazıcı sunucusu gerekiyordu: geliştirme için iki yan yana çalıştırmanın bir yolu olmayacaktı. Bağlantı noktaları bunun yerine adla anılırsa, sunucular farklı bağlantı noktalarında oturabilir ve yalnızca aynı adı kullanabilir. Bir ad sunucusu tarafından sağlanan bu işlevsellik, Spring altında oldukça önemli kabul edildi.

Spring'in yaklaşımı esasen Plan 9 sistemini tersine çevirdi: Spring altında dosya sistemi, tek birleşik ad hizmetini kullanan bir sunucu örneğiydi. Aynı hizmet, diskteki dosyaları, ortam değişkenlerini, donanım aygıtlarını, programları ve hatta programların içindeki nesneleri adlandırmak için kullanılabilir. Sistem hiyerarşikti, yalnızca sistemi ad alanı, önyükleme sırasında başlayan bir sunucu tarafından doğrudan destekleniyordu. Diğer sunucular daha sonra bildikleri adları sisteme "bağlayacaklar", yazıcı sunucusu yazıcıların bir listesini oluşturacak, dosya sistemi bağlı disklerin dizinlerine bağlanacaktı. Bu şekilde, sistemdeki tüm nesnelerin bir eşlemesi potansiyel olarak çalışma zamanında oluşturuldu ve Plan 9'a çok benzer bir dosya benzeri bir şekilde erişilebilir. Sistemin her ne kadar hepsi tek bir API kullanılarak erişilebilir. ayrıca, özellikle Unix öykünme sunucusunda klasik hizmetler olarak görünmesini sağlamak için çeşitli saplama kitaplıkları sağladı.

İsim servisi aynı zamanda güvenlik ve izin için de merkezi konumdu. İlkbahardaki gerçek erişimciler olan kapılar ad hizmeti tarafından dağıtıldığından, sunucuda eksiksiz bir erişim kontrol Listesi tabanlı izin kontrol sistemi. Bu nedenle, dosya sistemi üzerinde izinler sağlamanın yanı sıra, Spring altında herhangi bir nesne aynı izinler ve kullanıcı arabirimi kullanılarak kontrol edilebilir. Bunu şununla karşılaştır Windows NT örneğin, hepsi ayrı ayrı kurulması gereken yaklaşık bir düzine izin sistemini (dosya sistemi, DCOM, SQL erişimi, IIS, vb.) içeren. Performansı artırmak için sistem, ad sunucularının diğer sunuculardan gelen isteklerin geçerli olduğunu varsaymasına izin veren güven kavramını içeriyordu. Örneğin, bir kullanıcı dosya sunucusundan bir dosyaya erişmesini isterse, sistem ad sunucusu isteği dosya sistemine iletir ve bu da onu hemen kabul eder. Bununla birlikte, kullanıcı bilinmediğinden, ACL'ler erişilmekte olan dosyaya göre kontrol edilecektir.

İlgili isim grupları şu şekilde biliniyordu: bağlamlar. Bağlamlar da isimlerdi ve bu nedenle bir dizinin dosya sistemi konseptine benziyordu. Kullanıcılar, görünüşte ilgisiz nesnelerden kendi bağlamlarını oluşturabilirler; Tamamen ayrı sürücüler (sunucular) kullanan yazıcılar tek bir listede toplanabilir, bir dosya farklı yerlerde (veya farklı kullanıcılar için) farklı adlara sahip olabilir veya arama amacıyla içindeki her kişisel dosyayı içeren tek bir etki alanı oluşturulabilir. Bu şekilde Spring, dosya dizinlerinin "birleştirilmesine" izin verdi, bu da geleneksel Unixen'den yoksun faydalı bir özellikti.

Bahar yerleşik bir nesne kalıcılığı sistem, ancak ad hizmeti kalıcıydı ve nesneleri bu tür bir şekilde bulmak için kullanılabilirdi. Bir dereceye kadar, önyükleme sırasında başlatılan sunucular dizisi, adlarını aynı sunucuya kopyaladıkları için önyüklemeden kurtulan kalıcı bir ad alanı sağladı. Teoride sistem, ad sunucusunun bir "yavaş başlatma" sistemi sağlamasına izin verebilir, örneğin birisi talep edene kadar ağ sunucusunu başlatmaz, ancak bu işlevselliği içerdiği görülmemektedir. Aslında ad alanlarının ayrılması, bunun, kapıların isimlendirilmesini fiilen uygulayan hizmete ayrılmasına izin vererek uygulamayı önemli ölçüde kolaylaştıracaktır.

Dosya sistemi

Daha önce belirtildiği gibi, Spring VM herhangi bir programın hangi çağrı cihazını kullanması gerektiğini tanımlamasına izin verdi. Ek olarak, Yay sistemi tek bir evrensel adlandırma sistemine dayanıyordu. Bu iki kavram, Spring dosya sistemini oluşturmak için birleştirildi.

Spring dosya sisteminin çalışmasının anahtarı, VM sistemiyle sıkı entegrasyondu. VM sisteminin, verinin yerel önbelleğini dosya sisteminden yöneteceği "bilindiğinden", dosya sistemi yalnızca bir komut yapısına indirgenmişti ve kendi çağrı cihazıydı. Yani, dosya sistemi, gerektiğinde bellek nesnelerinden veri yüklemek ve kaydetmekle sorumluydu, ancak bu verilerin önbelleğe alınması, bunun için VM tarafından ele alınacaktı. Daha önce bahsedildiği gibi, bu, sistemdeki programlar tarafından nasıl paylaşılırsa paylaşılsın, Spring altında bir dosyanın yalnızca RAM'de tek bir yerde bulunduğu anlamına gelir.

Spring iki tür dosya sistemi kullandı: yerel dosya sistemi en yaygın Unix sistemlerine benzeyen bir önbelleğe alma dosya sistemi ağ cihazları için. Önbelleğe alma sistemi, Spring'in VM / çağrı cihazı ayrımının, normal olarak kullanmak zorunda olduğu sanal makineden aynı fiziksel belleği kullanarak, CFS'nin tüm okuma isteklerini yerel önbelleğe kısa devre yaptırdığını ve her 30'da tembel geri yazma yaptığını gösterir. kaynak dosya sistemine saniye. Bu, özellikle ortak Unix dizinleri ağ üzerinden yüklüyse dikkate değer olurdu, laboratuvarlar için normal kurulum iş istasyonları. Çoğu Unix sistemi, aynı performans nedenleriyle benzer önbellekleme mekanizmaları kullanır, ancak RAM'i iki kez, bir kez önbellekte ve yine onu kullanan programlarda kullanır. CFS ayrıca uzak sistemden adları önbelleğe alarak ilk dizin geçişini ve açık istekleri çok daha hızlı hale getirdi.

Spring dosya sistemi aynı zamanda, disk üzerindeki yapıdaki dizinleri ad hizmetindeki yeni bağlamlara tembel bir şekilde eşleyen bir ad hizmeti içerik sağlayıcısıdır. Bunlara daha sonra evrensel adlandırma API'si kullanılarak veya alternatif olarak onları geleneksel bir unix dosya sistemi olarak sunan bir Unix öykünme kitaplığı aracılığıyla erişilebilir.

Bahar'ın terimini kullandığına dikkat edin dosya sistemi biraz kafa karıştırıcı. Normal kullanımda bu terim, dosyaları bir diskte fiziksel olarak depolamanın belirli bir yolunu ifade eder.

Unix öykünmesi

Spring'in ayrıca Sun'ın işinin temeli olan mevcut Unix uygulamalarını desteklemesi gerekiyordu. Bunu yapmak için Spring ayrıca iki önemli uzantı ile birlikte geldi: tam bir Unix'i taklit eden bir Unix işlem sunucusu ve standardın yeniden yazılması libc kütüphane aradı libue Unix çekirdek isteklerini çeşitli sunuculara yönlendiren. Örneğin, dosya veya ağ hizmetleri gerektiren bir Unix uygulaması ilişkili Spring sunucusuna yönlendirilirken, o anda çalışan programları listelemek isteyen bir Unix işlem sunucusuna yönlendirilecektir. İşlem sunucusu ayrıca işlemden sorumluydu sinyaller, Spring altında analogu olmayan bir kavram - ne de geriye dönük uyumluluk dışında gerçekten gerekli değildi, çünkü sinyaller esasen esnek olmayan tek amaçlı bir IPC mekanizmasıdır.

Spring altında bir Unix uygulamasının çalıştırılması için yeniden bağlanması gerekir. libue; sistem, temel Unix yardımcı programlarının çoğuyla ve yeniden bağlanan ve kullanıma hazır bir X11 sunucusuyla birlikte gönderildi. Ancak bu uyumluluk yöntemi ne görünmezdi ne de çalışacağı garanti edildi; Spring belgeleri, "birçok" uygulamanın değiştirilmeden çalışacağını (muhtemelen yeniden bağlanma dışında), ancak yapmazlarsa geliştiricinin ne tür sorun alanlarını beklemesi gerektiğini belirtmediğini belirtmektedir.

Alt sözleşmeler

Doğrudan Spring ile ilgili olmasa da, proje üzerinde çalışan Sun mühendisleri, farklı arama türlerini desteklemek için mevcut mekanizmaların iyi tanımlanmadığını gördüler. Daha zengin bir arayüz sağlamak için şu kavramları geliştirdiler: alt sözleşmeler.

Diğer sistemler

Sun, "Unixified" sürümünü ekledi Kapılar Solaris'e.

Spring sistemi çalışmasının sona ermesinden bu yana geçen yıllarda, genel olarak işletim sistemleri üzerindeki çalışmalar esasen sona ermiştir. Pazar hızla Windows ve Unix benzeri işletim sistemlerinin hakim olduğu bir dünyaya doğru katmanlaşırken, başka herhangi bir sistem için sadece niş pazarlar var gibi görünüyor. Ek olarak, Mach 3'ün zayıf performansı birçok projenin rüzgarını kaçırmış gibi görünüyor.

Yine de bazı yeni sistemler var. Özellikle biri, L4 mikro çekirdek, Spring'in çekirdeğiyle bir dizi özelliği paylaşıyor. Özellikle IPC için eşzamanlı bir çağrı / geri dönüş sistemi kullanır ve benzer bir VM modeline sahiptir. L4 şimdiye kadar neredeyse yalnızca çekirdeğin kendisine odaklandı; Spring'in adlandırma hizmetine, güvenlik modeline veya dosya sistemine benzer hiçbir şey yoktur.

Referanslar

  1. ^ Jim Mitchell (2001). Yay Sistemine Genel Bakış "Giriş""". Sun Microsystems Laboratories: 10 Yıllık Etki. Sun Microsystems, Inc. Alındı 2008-06-28.