Anasayfa Makale UNIX, POSIX ve SUS Kavramları Nedir?

UNIX, POSIX ve SUS Kavramları Nedir?

UNIX, POSIX ve SUS kavramları nedir?
UNIX'i ve C dilini mümkün kılan ikili: Ken Thompson ve Dennis Ritchie.

Bu yazımızda UNIX’in ne olduğuna, tarihi gelişimine ve UNIX felsefesini temel alan çoğu işletim sisteminde bulunan bazı standartlara göz atacağız.

UNIX… Özellikle C ve C++ gibi, diğer modern programlama dillerine kıyasla daha düşük kalan dillerde programlama yapan kişilerin sıkça karşı karşıya kaldığı bir kavram. Peki nedir bu UNIX?

UNIX’in ve C dilinin tarihçesi

UNIX, aslında 1969 yılında AT&T şirketinin Bell laboratuvarlarında PDP-7 makineler için geliştirilen bir işletim sistemidir. İlk olarak PDP-7’nin Assembly dili ile yazılmıştır. İsim olarak UNIX, MULTICS‘i çağrıştırması amacıyla konmuştur. MULTICS ise, AT&T’nin MIT ve General Electric ile birlikte geliştirdiği bir sistemdi fakat daha sonrasında AT&T projeden ekonomik bir işletim sistemi olmadığı için çekildi. Ken Thompson, MULTICS işletim sisteminden ilham aldığı birkaç fikri UNIX’e dahil etti; ağaç görünümünde dosya sistemi, komut işleme için ayrı program (kabuk) gibi fikirlerden söz ediyoruz.

1970 yılında UNIX işletim sistemi, PDP-11 makineler için PDP-11’in Assembly dili ile tekrar yazıldı. Hatta, PDP-11’in izlerini bugün çoğu UNIX implementasyonunda, hatta en çok kullanılan UNIX implementasyonu olan Linux üzerinde görmek bile mümkün.

UNIX, POSIX ve SUS kavramları nedir?
C programlama dilinin logosu.

Kısa bir süre sonra Ken Thompson‘ın iş arkadaşı ve UNIX’in yapımcılarından olan Dennis Ritchie, C dilini ortaya çıkardı. C dili, B dilinden, B dili ise BCPL dilinden ilham alarak ortaya çıktı. 1973 yılında, C dili iyice olgunlaşarak UNIX’in neredeyse tamamının yeniden yazılabileceği bir dil haline geldi. UNIX işletim sistemi böylece yüksek seviye dil kullanılarak yazılan ilk işletim sistemi oldu ve diğer donanımlara UNIX’i portlamak çok daha kolay bir işlem haline geldi. C dili ile yazılan açık kaynaklı bir UNIX implementasyonunu çalıştırabilmek için, sadece hedef işlemcinin ISA’sına yönelik yazılan derleyici, linker ve Assembler programlar aracılığı ile makine diline çevirmeniz gerekli.

Bu yöntem hala modern işletim sistemleri üzerinde geçerliliğini sürdürmekte. Her işletim sisteminde küçük ya da büyük bir Assembly kodu hala olmak zorundadır, çünkü üst seviye dillerde yazılan kod (sistem çekirdeğinin kodu da dahil olmak üzere), belleğin ona göre hazırlandığını düşünür; ve Assembly dili ise, bu belleği hazırlama imkanını bizlere sunar.

POSIX ve SUS gibi standartların ortaya çıkması

UNIX, POSIX ve SUS kavramları nedir?
POSIX’e ait bir logo.

POSIX (Portable Operating System Interface for UNIX), UNIX implementasyonları arasında yazılım birliğini sağlayabilmek amacı ile 1988 yılında IEEE (Elektrik ve Elektronik Mühendisleri Enstitüsü) tarafından ortaya çıkarılan bir standarttır. POSIX API’sini bulunduran işletim sistemlerine “POSIX uyumlu işletim sistemi” denmektedir.

POSIX API’si; aslen UNIX sistem çağrılarına ve C standart kütüphanesine dayanır. Bu da demek olur ki diğer işletim sistemlerine rahatça port edilebilir. Fakat başka işletim sistemlerinde de POSIX kütüphanesine yapılan birkaç küçük dokunuş ile çalışabilmektedir. Örneğin Winsock 2 üzerinde soket programlama ile POSIX destekli UNIX sistemler üzerindeki “Berkeley Sockets” üzerinde soket programlama, programcının gözünden neredeyse aynıdır fakat bir kaç temel fark bulunmakta. Örneğin, Berkeley Sockets‘te, UNIX’in temel düşüncelerinden biri olan her şeyin dosya olduğu görüşü bulunmaktadır. Bu sebep doğrultusunda Berkeley Sockets ile oluşturulan bir soket, kendine ait bir “file descriptor“a sahiptir, fakat Winsock 2’de bu durum daha değişiktir.

UNIX, POSIX ve SUS kavramları nedir?
Single UNIX Specification (SUS)’a ait olan logo.

Novell, takvimler 1993 yılını gösterdiğinde, UNIX’in haklarını AT&T’den satın aldı. Hemen bir yıl sonra ise UNIX’in haklarını, 1984 yılında Avrupalı UNIX sistem üreticileri tarafından kurulan X/Open’a vererek UNIX işinden ayrıldı. Daha sonra X/Open, UNIX ticari hakkını bazı testlerden geçebilen işletim sistemlerine vermeye karar verdi. Bu testlerde UNIX ile olan uyumluluk ölçülüp, uyumluluk derecesine göre hedef işletim sisteminin UNIX’in temel felsefelerine ne kadar uyup uymadığına bağlı olarak birden fazla noktada karar verilirken, hedef işletim sisteminin temel ortamı, ağ yapılandırması, pencere sistemi, C dili desteği gibi şeyler test ediliyor. Bu test standartları ailesine Single UNIX Specification (SUS) denmektedir. SUS’a ait 5 adet sertifikasyon etiketi bulunuyor:

  • UNIX 93,
  • UNIX 95 (SUSv1),
  • UNIX 98 (SUSv2),
  • UNIX 03 (SUSv3),
  • UNIX V7 (SUSv4).

Bu testlerden çok az BSD ve Linux dağıtımı geçmeyi başarabilmiştir, çünkü bu dağıtımların amacı daha çok POSIX uyumluluğunu sağlayabilmek oldu.

X/Open, 1996 yılında Açık Yazılım Vakfı (OSF) ile birleşerek The Open Group‘u kurmuştur. UNIX ile ilgilenen neredeyse tüm kuruluşlar, The Open Group üyesidir ve UNIX API ve standartlarının gelişimi günümüzde halen daha The Open Group, IEEE ve ISO’nun ortak olduğu The Austin Group tarafınca sürmektedir.

UNIX, POSIX ve SUS kavramları nedir?
POSIX ve SUS’un kıyaslaması: POSIX uyumluluğunda sadece altta bulunan kısma bakılırken, SUS testlerinde görseldeki her şey test edilmekte.

Bir işletim sisteminin POSIX uyumluluğu, POSIX’i açıklarken bahsettiğimiz üzere, sadece hedef işletim sisteminin POSIX API’si ile ne kadar uyumlu olduğunu ve POSIX temelli yazılımların o işletim sistemi üzerinde çalışıp çalışmadığını ifade ederken, SUS uyumluluğu ise hedef işletim sisteminin, UNIX’in hangi standardına uyduğunu belirten bir etikettir. Örneğin, Windows işletim sistemi POSIX’e yarı uyumlu iken, SUS’un hiçbir standardına uygun değildir. Çünkü Windows, UNIX tabanlı bir işletim sistemi değildir fakat POSIX standartlarının bazılarını karşılamaktadır. Eğer tamamen POSIX uyumunu sisteminizde bulundurmak isterseniz, Windows Subsystem for Linux (WSL) kullanarak bu uyumu sağlayabilirsiniz.

Bir UNIX varyantı, her ne kadar POSIX’e hatta SUS’a uyumlu olsa da, diğer UNIX varyantlarına ait olan programları çalıştıramayabilir. Örneğin Linux uygulamaları, çoğu UNIX varyantında çalışmaz veya derlenemez. Linux, her ne kadar bir UNIX varyantı olsa da üzerinde UNIX’ten farklı sistem çağrıları, kütüphaneler, yapılar gibi özel şeyler bulunmaktadır. Bundan dolayı; eğer bir uygulama geliştiricisi, uygulamasında taşınabilirlik istiyorsa, POSIX veya SUS standartlarına bağlı kalması daha iyi olacaktır.

Özet

UNIX işletim sisteminin, bilgisayar dünyasına katkılarının çok fazla olduğu su götürmez bir gerçek. Technopat sunucusu dahil olmak üzere, internet dünyasındaki çoğu sunucu, bir UNIX implementasyonu ile (genellikle Linux) çalışıyor. Benzer şekilde, cep telefonlarımızdaki işletim sistemlerinin hepsi birer UNIX implementasyonudur. Hal böyle olunca, UNIX hakkında bilgi edinmek güzel bir şey olabilir.

Yazı hakkında eklemek istediklerinizi veya görüşlerinizi yorumlarda belirtebilir, kafanızdaki bir soruyu sormak için Technopat Sosyal‘i kullanabilirsiniz.