POSIX, SUS ve LSB

Linux sistem programlama konuşulmaya başlandığı zaman masaya hemen “POSIX” kelimesi gelecektir, kaldı ki bir önceki yazıda ben de bahsettim durdum. POSIX ile beraber anılan iki terim daha var: SUS ve LSB. Bu yazıda, bu kavramlardan bahsedeceğim.

Her bir terimin bir tarihi var. İşin doğrusu tarihleri ile şu aşamada çok ilgili değilim. Biraz okumaya anlamaya çalıştım fakat maşallah bir Türk dizisi kadar karışıklar. O yüzden ben de çok kısa özet geçeceğim. Dilerseniz Michael Kerrisk’in The Linux Programming Interface kitabının ilk ünitelerine bakabilirsiniz.

70lerin sonu, 80li yılların başı Unix ve Unix türevi işletim sistemler için altın zamanlardır. Piyasada birçok Unix türevi işletim sistemi bulunuyordu [1]. Nerede çokluk orada ... ilkesinden yola çıkarsak bu çeşitlilik hemen bir takım problemler doğurmuştu. Her işletim sisteminin kullanıcıya sunduğu komutlar, programcılara sunduğu arayüzler birbirinden farklıydı. Tamam, belki tamamen ayrı değildi ama bu farklılıklar taşınabilir programların yazılmasının önüne geçiyordu. Bu da Unix ekosisteminde hem işletim sistemi satan hem de program geliştiren firmalar için bir problemdi. Hemen bir standartlaşma yoluna gidilmeye çalışıldı. İşte bu girişimlerin ilklerinden biri IEEE tarafından yürütülen POSIX, or Portable Operating System Interface olmuştu. Resmi olmasa da daha önceleri UNIX üreticileri /usr/group isimli bir topluluk altında bir şeyleri standartlaştırmaya çalışıyordu. İlk POSIX standartı, POSIX.1’in çalışmalarına 1984 yılında bu grup altındaki kurallar baz alınarak başlanıldı. 1988 yılında IEEE tarafından resmi olarak tanındı ve IEEE 1003 kodunu aldı. 1990 yılında ise ISO tarafından ISO/IEC 9945-1:1990 olarak tanındı. POSIX ismi, GNU’nun yaratıcısı Richard Stallman tarafından önerilmiştir.

POSIX, sadece C programcıları için standart arayüz fonksiyonları, API, tanınmlamamktadır. Sık kullandığımız kabuk komutları (cat, chmod, cp, tee gibi) ve bu komutların argümanları da POSIX tarafından standartlaştırılmıştır. Bir işletim sisteminin POSIX uyumlu (compliant) olması için çeşitli otonom kabul testlerini geçmesi gerekmektedir. Ayrıca sertifika için iyi miktarda bir ücret de gerekmektedir. Linux dağıtımlarının çok büyük bir kısmı resmi olarak POSIX uyumlu değildir. Fakat Linux dağıtımları, POSIX kurallarını çok sıkı şekilde takip ederler. POSIX kurallarının bir kısmı Linux tarafından gerçekleştirilmemiştir. Bazen de Linux, POSIX’te olmayan ek özellikleri programcılara sunar.

Günümüzde UNIX markası IEEE’ye değil The Open Group isimli oluşuma aittir. Bu yüzden IEEE, herhangi bir işletim sistemine resmi olarak UNIX ya da UNIX uyumlu diyememektedir.

SUS ya da Single Unix Specification ise burada devreye girmektedir, POSIX’e benzemektedir. Eğer geliştirdiğiniz işletim sistemine resmi olarak UNIX uyumlu ya da UNIX demek istiyorsanız işletim sisteminizin bu standarta uyması ve sertifikasyon süresini geçmesi gerekmektedir. Elbette sertifika için para da ödemelisiniz…

LSB ya da Linux Standard Base karşımıza çıkabilecek bir diğer kavramdır. Çıkış amacı POSIX ve SUS’a benzemektedir fakat Linux dağıtımlarının standartlaşması için ortaya çıkmıştır. POSIX ve SUS’un üzerine kurulmuştur ve daha geniş kapsamda (kütüphaneler, dosya sistemi düzeni gibi) bir standart oluşturmaya çalışır [2].

Tarihsel olarak baktığımızda tüm bu girişimlerin amacı hem kullanıcıların hem uygulama geliştiricilerin hem de işletim sistemi geliştiricilerin daha az korkuyla çalışabileceği uyumlu bir ortam yaratmakır.


POSIX gibi standartların amacı Linux, macOS gibi Unix türevi işletim sistemlerin arasında taşınabilir kodlar yazmaktır. Bu seride benim kişisel amacım sadece Linux üzerinde çalışacak kodlar yazmaktır. O yüzden şahsen POSIX ile taşınabilir kod yazmayı fazla önemsemiyorum. Konu bütünlüğü olması açısından standartlardan biraz bahsetmek istedim.

Günümüzde, son POSIX ve SUS sürümü pratikte aynı düşünülmektedir. Buradan son standarta erişebilirsiniz. Ben ise genelde POSIX veya SUS dokümanları yerine man Sayfaları na bakacağım.

Özet

  • Linux bir UNIX işletim sistemi değildir. UNIX türevi olarak bazı açılardan düşünülebilir. UNIX felsefesi ve yaklaşımı baz alınarak tasarlandığından UNIX sistemlere benzer.

  • Linux sistemlerin büyük bir çoğunluğu POSIX, SUS ya da LSB uyumlu değildir. Pratikte çok büyük ölçüde uyumludur.

Kaynaklar