Bir işletim sistemini “Unix-Like” yapan nedir?


20

Birçok web sitesinde sık sık "unix benzeri" terimiyle karşılaşıyorum.

Standart yok; sadece davranış biçimindedir.

Ama sıfırdan bir çekirdek geliştirirsem, onu "unix benzeri" olarak kabul eden şey ne olurdu?

Temel olarak, Unix gibi yazılı kod yapan şeyler nelerdir?


Yanıtlar:


15

Standart yok; sadece davranış biçimindedir.

Çoğu "unix benzeri" işletim sisteminin , "gerçek UNIX" i tanımlayan Tek UNIX Spesifikasyonunu da kontrol eden Open Group tarafından denetlenen POSIX standardına uymak için çok ciddi bir çaba gösterdiğine inanıyorum . Birincisi, daha geçinin çekirdeğidir.

Aslında, unix benzeri işletim sistemlerinin pratikliklerini tanımlayan bir standart var . POSIX'teki wikipedia makalesinin sonunda "tamamen" ve "çoğunlukla" uyumlu işletim sistemleri listesine bir göz atın.

Orada bazı bariz nedenler linux Single Unix Specification (SUS) tarafından tamamen uyumlu veya zırdeli dikkate alınmayacaktır özellikle kudretiyle, ancak herhangi bir linux sistemi onunla mutlaka uyumsuz olduğundan bunlar değildir. Vikipedi makalesi spesifikasyonu şu şekilde özetler:

SUSv3, tematik olarak dört ana bölüme ayrılan yaklaşık 3700 sayfadan oluşur:

Temel Tanımlar (XBD) - spesifikasyonlarda kullanılan tanımların ve kuralların bir listesi ve uyumlu sistemler tarafından sağlanması gereken C başlık dosyalarının bir listesi. Toplam 84 başlık dosyası sağlanmıştır.

Kabuk ve Yardımcı Programlar (XCU) - yardımcı programların bir listesi ve kabuğun açıklaması, sh. Toplamda 160 yardımcı program belirtilmiştir.

Sistem Arabirimleri (XSH) - sistem çağrıları veya kütüphane işlevleri olarak uygulanan çeşitli işlevlerin özelliklerini içerir. Toplam 1123 sistem arabirimi belirtildi.

Gerekçe (XRAT) - standardın arkasındaki açıklama.

Standart kullanıcı komut satırı ve komut dosyası arabirimi, Bourne Shell'in Korn Shell'in önceki bir sürümüne dayanan bir uzantısı olan POSIX kabuğudur.

Diğer kullanıcı düzeyi programlar, hizmetler ve yardımcı programlar arasında awk, echo, ed, vi ve diğer yüzlerce kişi bulunur. Gerekli program düzeyinde hizmetler temel G / Ç (dosya, terminal ve ağ) hizmetlerini içerir.

Standarda bir test takımı eşlik eder. PCTS veya POSIX Sertifika Test Paketi olarak adlandırılır.

Ayrıca SUS, 372 işlevi ve 3 başlık dosyasını belirten CURSES (XCURSES) belirtimini içerir. Sonuç olarak, SUSv3 1742 arayüzünü belirtir.

Bu açıkça linux çekirdeğinin bir parçası olmayan birçok kullanıcı alanı bileşenine (kabuk gibi) atıfta bulunmaktadır. Dolayısıyla linux.org ve ark. ark. çekirdeği yalnızca sertifikalı olabilir - bu anlamda bir işletim sistemi değildir. Tabii ki, çekirdeği kullanarak belirli bir sistemi sertifikalandırmaya çalışabilirler, ancak bu genel dağıtım şeması ışığında anlamsız olacaktır: çekirdek ve onu koruyan insanlar, kullanıcı ülkesi çekirdeğini (GNU) koruyan insanlardan bağımsızdır gerçek işletim sistemi dağıtımlarını (Debian, Fedora, vb.) sürdüren insanlardan bağımsız olan kişiler.

Debian veya Fedora'nın kendilerinin sertifikasyon sürecine girebileceğini düşünüyorum (bu nedenle, örneğin, RedHat Enterprise bir "sertifikalı unix" olabilir), ancak bu aslında istenen bir sorudur. SUS sistemlerinin temel nedeninin, sadece linux niş değil, bunun için yazılmış (ticari ölçekli, tüketici olmayan) yazılımları çalıştırmak olduğunu varsayıyorum - bunu yapan insanlar, işletim sistemi için lotlar dahil olmak üzere lisans başına binlerce dolar ödeyecek destek, vb., çünkü sistemde çalıştırmak istedikleri ek yazılım için lisans başına on veya yüz binlerce dolar ödüyorlar. Linux ve diğer aykırı değerler, ticari amaçlar için basit uyumun ötesinde tasarım hedefleri izlemiştir ve bunun çeşitli örnekleri vardır, örneğin (http://en.wikipedia.org/wiki/STREAMS ):

STREAMS, Tek UNIX Spesifikasyonu sürüm 1 (UNIX 95) ve 2 (UNIX 98) ile uyumluluk için gerekliydi, ancak BSD ve Linux geliştiricilerinin STREAMS sağlamalarını reddetmesinin bir sonucu olarak, [alıntı gerekli] POSIX için isteğe bağlı olarak işaretlendi Austin Group tarafından sürüm 3'e (UNIX 03) uygunluk.

SUS ve The Open Group! = Linux,! = BSD, vb.


2
Sertifika almanın uymaktan farklı olduğunu unutmayın. Örneğin, Linux Foundation'ın maliyet ve geliştirme oranı nedeniyle her bir çekirdek sürümünü sertifikalandırması pratik değildir. Ama bu onun (çekirdek) tamamen veya çoğunlukla uymadığı anlamına gelmez.
Ağustos'ta Strugee

2
@strugee POSIX standardı çekirdeğe uygulanmaz ya da bu işle ilgilenmez. Standartlaştırılmış olan komutlar (kabuk, ls, cat, ...) ve API'lardır (libc'nin sağladığı, iş parçacıkları). Linux tabanlı bir dağıtım Unix'e benzeyen, çoğunlukla GNU bileşenleridir (komutlar ve glibc). Çekirdek, sertifikasyon / uyumluluk kapsamı dışındadır.
jlliagre

1
Çürütmek değil açıklığa kavuşturmak değil (bunu illuminÉ'nin cevabı hakkındaki yorumumdan tekrarlıyorum): standartlar "ne", çekirdek "nasıl" dır. Ben sadece bit ve standart parçalarını okudum, ama onlar hiç bir "çekirdek" atıfta olduğunu sanmıyorum (sadece "sistem"). Yani WRT sertifikasyonu ve uyumluluğu: bir çekirdek / işletim sistemi "ne" yapar, "nasıl" yapmaz.
goldilocks

3
@strugee Tekli Unix Spesifikasyonu kullanıcı arayüzü için geçerlidir. Çekirdek elbette nihayetinde yer alıyor, ancak benim yorumum Linux Vakfı'nın çekirdeklerin onaylanmasıyla ilgili ifadenizle ilgiliydi. Çekirdek sertifikalandırılamaz, sertifika işleminin etkileşime girdiği tüm bileşenleri içermez. Sertifikalandırılabilen (veya en azından mümkün olduğunca uyumlu hale getirilmeye çalışılan) bir İşletim Sistemidir, yani Linux topluluğunda dağıtım olarak adlandırılan sistemdir.
jlliagre

2
@strugee Ancak bunun olası nedeni o kadar hızlı bir rollover değildir, ancak uyumsuz değişikliklerin eklenmesini sağlama taahhüdü olmadığı gerçeğidir. Örneğin Solaris 10 uyumludur, bu uyumluluğu garanti eder ve Unix03 sertifikasına sahip olduğu için bir düzine güncelleme yapıldı. Dahası, Gnu / Linux kombinasyonu olabildiğince / istediği kadar uyumlu olmaya çalışır, ancak daha fazlasını yapmaz. Her ikisi de pahalı bir süreç olduğundan ve neredeyse hiç uygun olmayacağından (neredeyse) hiçbir zaman onaylanmaya çalışmadı çünkü bazı gereksinimler (kasıtlı olarak) eksik ve bazı uzantılar uyumsuz
jlliagre 23:30 '

12

POSIX ile ilgili ilk cevabı genişletmek, "unix benzeri" nin ne anlama geldiğini anlamak için, önce UNIX'in tam olarak ne olduğunu anlamaya çalışmak gerekir. Unix ticari markasının sahibi olan Open Group'un belgelerine baktığınızda , Tek UNIX spesifikasyonunun evrimi hakkında ayrıntılar bulacaksınız - işte UNIX03 :

UNIX 03 Ürün Standardı, Tek UNIX Spesifikasyonunun Sürüm 3'üne uyan sistemlerin markasıdır. UNIX 98 Ürün Standardının önemli ölçüde geliştirilmiş bir sürümüdür. Zorunlu geliştirmeler arasında ISO / IEC 9989: 1999 C Programlama Dili, IEEE Std 1003.1-2001 ve ISO / IEC 9945: 2002 ile uyum bulunmaktadır. Bu Ürün Standardı aşağıdaki zorunlu Ürün Standartlarını içerir: Uluslararası Sistem Çağrıları ve Kütüphaneleri Genişletilmiş V3, Komutlar ve Yardımcı Programlar V4, C Dili V2 ve Uluslararası Terminal Arabirimleri.

UNIX98 :

UNIX 98 Ürün Standardı, UNIX 95 Ürün Standardının önemli ölçüde geliştirilmiş bir sürümüdür. Zorunlu geliştirmeler arasında (1) İş parçacığı arabirimleri, (2) Çokbaytlı Destek Uzantısı (MSE), (3) Büyük Dosya Desteği, (4) Dinamik Bağlantı, (5) donanım veri uzunluğu bağımlılıklarını veya kısıtlamalarını kaldırmak için değişiklikler ve (6 ) 2000 yılı değişiklikleri. Ayrıca, aşağıdaki isteğe bağlı geliştirmeler de dahildir: Yazılım Yönetimi olanakları ve gerçek zamanlı destek için bir dizi API. Bu Ürün Standardı aşağıdaki zorunlu Ürün Standartlarını içerir: Uluslararası Sistem Çağrıları ve Kütüphaneleri Genişletilmiş V2, Komutlar ve Yardımcı Programlar V3, C Dili, Taşıma Hizmeti (XTI) V2, Yuva V2 ve Uluslararası Terminal Arabirimleri. Ayrıca, Yazılım Yönetimi Ürün Standardına da uygun olabilir.

UNIX95 (benim vurgu):

Bu Ürün Standardı, sağlanan tesislere ek olarak UNIX İşletim Sistemi kodundan türetilen ve / veya orijinal olarak AT&T tarafından geliştirilen arayüzlerden türetilen işletim sistemleri sınıfından biri için orijinal olarak geliştirilen çok çeşitli uygulamaları desteklemek için birleştirilmiş bir platform tanımlar. Temel Ürün Standardı uyarınca. Base'den daha geniş bir kapsama sahiptir. Bu Ürün Standardı aşağıdaki Ürün Standartlarını içerir: Genişletilmiş Uluslararası Sistem Çağrıları ve Kütüphaneleri, Komutlar ve Yardımcı Programlar V2, C Dili, Taşıma Hizmeti (XTI), Soketler ve Uluslararası Terminal Arabirimleri.

Standardın sunucu sürümleri bazı durumlarda Internet Sunucusu ve IPv6 ekler.

Tabii ki AT&T Bell Laboratuvarlarına yapılan referansı görüyoruz ve C dili UNIX'in ne olduğunu gösteriyor: C dili, modüler taban araçları ve kabuk ve çekirdek, dosya sistemi ve diğer önemli işletim sistemi bileşenlerinin nasıl tasarlandığını ve uygulandığını .

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Maurice J. Bach'ın UNIX İşletim Sisteminin Tasarımı adlı kitabın değeri paha biçilemez bir okumaya dönüşüyor çünkü bu noktada tarihi meseleler. Tabii ki bunun gerçekten C dili gibi diğer icatlarla nasıl ilişkili olduğu . C, AT&T Bell tarafından Unix'i montaj kadar hızlı ancak farklı donanımlarda taşınabilir bir dilde uygulamak için geliştirildi ve birçok POSIX, standart C'nin bir uzantısıdır.

Çekirdeğin kendisi söz konusu olduğunda, UNIX çekirdeğinin geleneksel olarak neyle ilgili olduğunu göstermek için genellikle bunun gibi kavramsal bir diyagram bulacaksınız:

resim açıklamasını buraya girin

Bay Bach'ın UNIX Sistem V çekirdeğinin temellerini anlatan klasik kitabından (1986) bazı alıntılar:

Ancak, bunların [uygulama alt sistemleri ve programları] nihayetinde çekirdek tarafından sağlanan daha düşük düzeydeki hizmetleri kullanırlar ve sistem çağrıları kümesiyle bu hizmetlerden yararlanırlar. System V'de yaklaşık 32 sistem çağrısı vardır ve bunlardan 32'si daha az kullanılır. Kullanımlarını kolaylaştıran ancak kullanıcıya çok fazla güç sağlayan basit seçeneklere sahiptirler. Sistem çağrıları kümesi ve bunları uygulayan iç algoritmalar çekirdeğin gövdesini oluşturur [...]

[...] iki ana bileşeni dosya alt sistemi ve süreç alt sistemidir.

Dosyalar, mantıksal aygıtlar olarak ele alınan dosya sistemlerinde düzenlenir; disk gibi fiziksel bir aygıt birkaç mantıksal aygıt (dosya sistemleri) içerebilir. Her dosya sistemi, dosya sisteminin yapısını ve içeriğini açıklayan bir süper bloğa sahiptir ve bir dosya sistemindeki her dosya, dosyanın özniteliklerini veren bir inode tarafından tanımlanır. Dosyaları işleyen sistem çağrıları bunu inode ile yapar. [ve arabellek havuzu]

[...] inode'un iki sürümü vardır: dosya kullanılmadığında inode bilgisini saklayan disk kopyası ve aktif dosyalar hakkındaki bilgileri kaydeden çekirdek kopya.

UNIX sistemlerinde kullanıcı süreçlerinin yürütülmesi iki seviyeye ayrılır: kullanıcı ve çekirdek. Bir yöntem, bir sistem çağrısı yürütüldüğünde, işlemin gerçekleştirilmesi modu değişir kullanım modu için çekirdek modu : işletim sistemi tarafından uygulanan ve girişimler kullanıcı isteği hizmet [...]

[...] UNIX sisteminin felsefesi, kullanıcıların daha karmaşık programlar oluşturmak için yapı taşları olarak kullanılabilecek küçük, modüler programlar yazmalarını sağlayan işletim sistemi ilkelerini sağlamaktır. Kabuk kullanıcıları tarafından görülebilen böyle bir ilkel, G / Ç'yi yeniden yönlendirme yeteneğidir .

[...] Sistem çağrılarına hizmet vermenin yanı sıra, çekirdek kullanıcı topluluğu için genel defter tutma, işlem zamanlamasını denetleme, ana bellekte işlemlerin depolanmasını ve korunmasını yönetme, kesintileri giderme, dosya ve aygıtları yönetme ve sistem hatasıyla ilgilenme koşullar.

Unix benzeri işletim sistemlerinde farklı çekirdek uygulamaları ile ilgileniyorsanız, FreeBSD uygulamasına (4.4BSD) veya Mach çekirdeğine bakabilir veya özelliklerinin bu karşılaştırmasına bakabilirsiniz .

UNIX tasarımı hakkında ne kadar fazla bilgi sahibi olursanız, aşağıdaki diyagramda UNIX'in ataları ve tarihi hakkında neler olduğunu daha fazla anlarsınız . Bay Bach, kitabında çoğunlukla Sistem V hakkında konuşuyor, ancak BSD'yi de tartışıyor:

resim açıklamasını buraya girin

Bunun gözlerle buluşmasından çok daha fazlası var . Örneğin, Mac OSX UNIX03 sertifikalıdır, ancak saf UNIX'lerden birine (çoğunlukla kırmızı renkte) bağlı olduğunu görüyor musunuz?

resim açıklamasını buraya girin

Yukarıda BSD, GNU, Microsoft ve çeşitli bireylerin bu evrene nasıl katkıda bulunduğunu görebilirsiniz. Sonuçta linux GNU ve UNIX için doğrudan bir soyunu sahip olsa bile, bunu gördün GNU açık kaynak dünyasının kapalı olmuştu ticari UNIX araçları ve yazılım yeniden mühendisi bir çabadır. Böylece GNU bakım yazılımına bakmak, örneğin ilk prototip uygulamaları ve kütüphanelerinde bir fikir verir.

Lisans savaşları UNIX'in evriminde (ve bazen durgunluğunda) rol oynadı. Hemen UNIX'lerin lisans türüne göre sıralandığını görebilirsiniz - BSD'ye karşı kapalı ( BSD kodun kapalı kaynak yapılmasına izin verir ... OSX'e bakın) ve Linux ve GNU'nun copyleft dünyasında kendilerini tamamlamasına izin veren GPL . Linus Torvalds tarafından ilk olarak geliştirilen ve Unix benzeri bir işletim sisteminde bir çekirdeğin ne olabileceğini ortaya koyan linux çekirdeğinin klasik haritası:

resim açıklamasını buraya girin

Bu, " çekirdek " tasarım türünün UNIX standardını yapan veya unix benzeri bir işletim sistemi tanımlayan şey olmadığı fikrini ima eder . Bu, UNIX için klasik tasarım tipi olan birçok unix benzeri işletim sisteminin monolitik bir çekirdeğe veya mikro çekirdeğe sahip olabileceği kanıtlanmıştır. Aslında, saf UNIX'lerde bile, HPUX monolitik bir çekirdeğe sahipken, AIX bir mikro çekirdek kullanır. Tasarım hakkındaki bu tartışma performansla ilgilidir ve Unix soyları veya kimliği ile ilgili değildir. Öte yandan, UNIX / unix benzeri işletim sistemleri altında yazılıma hizmet sunma, dosya sistemleri vb. İle ilgili geleneksel kavramsal bir yaklaşım vardır.

Bu tür düşüncelerin sorunuzun işletim sistemi bölümüne bağlam katacağına inanıyorum.


3
+1 Buradaki bazı iyi noktalar: 1) C ve Unix arasındaki ilişki hakkında (eklemek için: C, AT&T Bell tarafından, Unix'i montaj kadar hızlı ancak farklı donanımlar arasında taşınabilir bir dilde ve bir çok POSIX ile uygulamak için geliştirilmiştir. C) standardının bir uzantısıdır. 2) Çekirdek tasarımı standartlardan bağımsızdır. Standartlar "ne", çekirdekler "nasıl" dır.
goldilocks

1
@goldilocks Teşekkür ederim, C kelimesi kelimesine hakkındaki yorumunuzu ekledim. Çekirdek kaygılarının standartla ilgisi olmadığını açıklığa kavuşturmaya çalıştım. Soru, unix benzeri çekirdek hakkında belirli bir şey olduğunu varsayar, ancak yoktur. Öte yandan tarihsel olarak ilk Unix çekirdekleri böyle ve böyle olabilirdi. Anlayışım sınırlı, ancak 70'lerden beri donanım çok değiştiği için çekirdeklerin çok değiştiğini varsayıyorum. Açık olan, çekirdeğin Unix / unix benzeri tanımlamamasıdır, çünkü linux çekirdeğinin GNU / Linux veya Linux'u açıkça tanımladığı düşünülmektedir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.