UNIX, POSIX ve SUS Kavramları Nedir?

UNIX… Bilhassa C ve C++ üzere, başka çağdaş programlama lisanlarına kıyasla daha düşük kalan lisanlarda programlama yapan bireylerin sıkça karşı karşıya kaldığı bir kavram. Pekala nedir bu UNIX?
UNIX’in ve C lisanının 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. Birinci olarak PDP-7’nin Assembly lisanı ile yazılmıştır. İsim olarak UNIX, MULTICS‘i çağrıştırması hedefiyle konmuştur. MULTICS ise, AT&T’nin MIT ve General Electric ile birlikte geliştirdiği bir sistemdi lakin 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 evrak sistemi, komut sürece için farklı program (kabuk) üzere fikirlerden kelam ediyoruz.
1970 yılında UNIX işletim sistemi, PDP-11 makineler için PDP-11’in Assembly lisanı ile tekrar yazıldı. Hatta, PDP-11’in izlerini bugün birden fazla UNIX implementasyonunda, hatta en çok kullanılan UNIX implementasyonu olan Linux üzerinde görmek bile mümkün.

C programlama lisanının logosu.
Kısa bir müddet sonra Ken Thompson‘ın iş arkadaşı ve UNIX’in yapımcılarından olan Dennis Ritchie, C lisanını ortaya çıkardı. C lisanı, B lisanından, B lisanı ise BCPL lisanından ilham alarak ortaya çıktı. 1973 yılında, C lisanı düzgünce olgunlaşarak UNIX’in neredeyse tamamının yine yazılabileceği bir lisan haline geldi. UNIX işletim sistemi böylelikle yüksek düzey lisan kullanılarak yazılan birinci işletim sistemi oldu ve öbür donanımlara UNIX’i portlamak çok daha kolay bir süreç haline geldi. C lisanı ile yazılan açık kaynaklı bir UNIX implementasyonunu çalıştırabilmek için, yalnızca amaç işlemcinin ISA’sına yönelik yazılan derleyici, linker ve Assembler programlar aracılığı ile makine lisanına çevirmeniz gerekli.
Bu sistem hala çağdaş 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, zira üst düzey lisanlarda yazılan kod (sistem çekirdeğinin kodu da dahil olmak üzere), belleğin ona nazaran hazırlandığını düşünür; ve Assembly lisanı ise, bu belleği hazırlama imkanını bizlere sunar.
POSIX ve SUS üzere standartların ortaya çıkması

POSIX’e ilişkin bir logo.
POSIX (Portable Operating System Interface for UNIX), UNIX implementasyonları ortasında yazılım birliğini sağlayabilmek gayesi 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 davetlerine ve C standart kütüphanesine dayanır. Bu da demek olur ki başka işletim sistemlerine rahatça port edilebilir. Ama diğer 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 takviyeli UNIX sistemler üzerindeki “Berkeley Sockets” üzerinde soket programlama, programcının gözünden neredeyse birebirdir ancak bir kaç temel fark bulunmakta. Örneğin, Berkeley Sockets‘te, UNIX’in temel fikirlerinden biri olan her şeyin belge olduğu görüşü bulunmaktadır. Bu sebep doğrultusunda Berkeley Sockets ile oluşturulan bir soket, kendine ilişkin bir “file descriptor“a sahiptir, lakin Winsock 2’de bu durum daha değişiktir.

Single UNIX Specification (SUS)’a ilişkin olan logo.
Novell, takvimler 1993 yılını gösterdiğinde, UNIX’in haklarını AT&T’den satın aldı. Çabucak 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ı birtakım testlerden geçebilen işletim sistemlerine vermeye karar verdi. Bu testlerde UNIX ile olan uyumluluk ölçülüp, uyumluluk derecesine nazaran amaç işletim sisteminin UNIX’in temel ideolojilerine ne kadar uyup uymadığına bağlı olarak birden fazla noktada karar verilirken, maksat işletim sisteminin temel ortamı, ağ yapılandırması, pencere sistemi, C lisanı takviyesi üzere şeyler test ediliyor. Bu test standartları ailesine Single UNIX Specification (SUS) denmektedir. SUS’a ilişkin 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, zira bu dağıtımların gayesi 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 hala daha The Open Group, IEEE ve ISO’nun ortak olduğu The Austin Group tarafınca sürmektedir.

POSIX ve SUS’un kıyaslaması: POSIX uyumluluğunda yalnızca 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, yalnızca gaye 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ı tabir ederken, SUS uyumluluğu ise maksat 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. Zira Windows, UNIX tabanlı bir işletim sistemi değildir ancak POSIX standartlarının kimilerini karşılamaktadır. Şayet büsbütün POSIX ahengini sisteminizde bulundurmak isterseniz, Windows Subsystem for Linux (WSL) kullanarak bu ahengi sağlayabilirsiniz.
Bir UNIX varyantı, her ne kadar POSIX’e hatta SUS’a uyumlu olsa da, öteki UNIX varyantlarına ilişkin olan programları çalıştıramayabilir. Örneğin Linux uygulamaları, birden fazla UNIX varyantında çalışmaz yahut derlenemez. Linux, her ne kadar bir UNIX varyantı olsa da üzerinde UNIX’ten farklı sistem davetleri, kütüphaneler, yapılar üzere özel şeyler bulunmaktadır. Bundan ötürü; şayet bir uygulama geliştiricisi, uygulamasında taşınabilirlik istiyorsa, POSIX yahut SUS standartlarına bağlı kalması daha düzgün 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 birden fazla sunucu, bir UNIX implementasyonu ile (genellikle Linux) çalışıyor. Misal formda, cep telefonlarımızdaki işletim sistemlerinin hepsi birer UNIX implementasyonudur. Hal bu türlü olunca, UNIX hakkında bilgi edinmek hoş bir şey olabilir.
Yazı hakkında eklemek istediklerinizi yahut görüşlerinizi yorumlarda belirtebilir, başınızdaki bir soruyu sormak için Technopat Sosyal‘i kullanabilirsiniz.
Kaynak: Technopat