UNIX Türevi Sistemlerin Tarihsel Gelişimi

advertisement
UNIX Türevi Sistemlerin Tarihsel Gelişimi
Kaan Aslan-Sebahat Ersoy
2 Şubat 2009
UNIX işletim sistemi AT&T (American Telephone & Telegraph) Bell Lab.’da 19691970 yıllarında geliştirilmiştir. UNIX proje grubu Ken Thompson, Dennis Ritchie,
Douglas Mcllroy, Joe Ossanna gibi önemli kişilerden oluşuyordu. Aslında Bell Lab.
daha önce MIT ve General Electric gibi kurumlarla birlikte Multics projesi üzerinde
çalışmaktaydı. Bell Lab. ekibi çeşitli nedenlerden dolayı bu projeden çekildi ve kendi
işletim sistemlerini yazmak için harekete geçti. Zaten UNIX ismi Brian Kernighan
tarafından Multics isminden sözcük oyunu yapılarak uydurulmuştur.
UNIX işletim ilk kez DEC’in PDP-7 makinaları üzerinde gerçekleştirilmiş daha
sonra da DEC’in PDP-11 makinalarına aktarılmıştır. O zamanlar işletim sistemleri
sembolik makina dillerinde yazılıyordu. Zaten sistem programlamaya yönelik başka
bir araç da yoktu. Ken Thompson projede işleri kolaylaştırmak için B isimli bir dil
geliştirdi. B yorumlama yöntemiyle işlev gören bir dildi. B’de yazılan çeşitli kod
parçaları PDP makinalarının sembolik makina diline otomatik dönüştürülüyordu.
Böylece sembolik makina dilinde yazmanın bazı zahmetleri ortadan kaldırılmış
oluyordu. UNIX geliştirme çalışmaları devam ederken Dennis Ritchie gruptan
bağımsız olarak Ken Thompson tarafından geliştirilmiş olan B dilini temel alarak bunu
C biçimine dönüştürmüştür. Yani C Programlama Dili UNIX projesinin bir yan ürünü
olarak ortaya çıkmıştır.
Proje grubu UNIX işletim sistemini 1973 yılında C Programlama Dili ile yeniden
yazmıştır. O zamana kadar tüm işletim sistemleri belli bir donanımı hedef alarak o
donanımda kullanılan işlemcinin sembolik makina dilinde yazılıyordu. UNIX büyük
çoğunluğu yüksek seviyeli bir dilde yazılmış ilk işletim sistemidir. Bu çaba işletim
sistemlerinin geliştirilmesinde bir devrim niteliğindedir. UNIX işletim sisteminin C ile
yeniden yazılması onun çeşitli donanımlara uyumlandırılarak aktarılmasını ve
dolayısıyla yaygınlaşmasını sağlamıştır.
70’ler UNIX işletim sisteminin yaygınlaştığı yıllardır. İşletim sisteminin kaynak
kodlarının sembolik ücretlerle dağıtılması araştırmacılar ve uygulamacılar arasında
işletim sistemi yazımına ilişkin bir bilinç oluşmasına büyük katkıda bulunmuştur.
Ancak bu durum zamanla biribirinden az çok farklı UNIX sistemlerinin ortaya
çıkmasına da yol açmıştır. Kısa sürede farklı kaynaklar tarafından çeşitli UNIX türevi
işletim sistemlerinin yazılmış olduğunu görmekteyiz.
UNIX türevlerinin en önemlilerinden biri Berkeley California Üniversitesi tarafından
ilk kez 1975 yılında yazılmış olan BSD (Berkeley Software Distribution) sistemleridir.
BSD sistemleri orijinal UNIX sistemlerine pek çok katkılarda bulunmuş önemli bir
türevdir. Örneğin soket arayüzü ilk kez bu sistemlerde gerçekleştirilmiştir. Zamanla
AT&T’nin klasik UNIX’i ile BSD sistemleri eksik özellikleri birbirlerinden alarak ortak
noktada buluşmuşlardır.
Microsoft 1980 yılında XENIX ile UNIX dünyasına bir giriş yaptıysa da devamını
getirmemiştir. XENIX daha sonra SCO (Santa Cruz Operation) firması tarafından
1
Kaan Aslan Makale Arşivi – www.kaanaslan.net
alınmış ve SCO-UNIX biçiminde dağıtılmaya başlanmıştır. 1982 yılında AT&T UNIX
System III’ü çıkardı. Yine aynı yıl Sun firmasının SunOS’u (daha sonra Solaris
olacak) ve HP firmasının da HP-UX ‘i Unix piyasasındaki yerlerini aldılar. BSD’nin
1984’teki 4.2 sürümü önemli bir dönüm noktasıdır. Bu sistemlerde ilk kez TCP/IP
protokolleri de UNIX türevi sistemlerce gerçekleştirilmiştir. IBM şirketi UNIX pazarına
AIX ile 1986 yılında girmiştir. AIX sistemleri IBM ve Motorola’nın RS serisi ve
PowerPC serisi makinalarında uzunca bir süre kullanılmıştır.
Richard Stallman 1983 yılında tüm bileşenleri özgürce geliştirilebilen ve
dağıtılabilen bir işletim sistemi yazma projesini başlattı. GNU (GNU Not Unix) projesi
denilen bu proje kapsamında pek çok geliştirme aracı ve temel yazılım
gerçekleştirilmiştir. Fakat işletim sistemi çekirdeği bugün bile istenildiği biçimde
oluşturulamamıştır.
UNIX sistemlerinin gelişimi ele alınırken özgür yazılım ve açık kaynak kodlu
yazılım akımlarına da değinmek yerinde olur. Çünkü bu akımların yaratıclıları ve
destekçileri büyük ölçüde UNIX türevi sistemleri geliştirmeye çalışan kişilerden
oluşmaktadır. Bu akımların savunucuları da büyük ölçüde UNIX türevi sistemleri
kullanmaktadır. Bir akım olarak özgür yazılım hiçbir kısıtlama olmaksızın yazılımların
kullanılabilmesini, değiştirilebilmesini, kopyalanabilmesini ve yeniden dağıtılabilmesini
savunur. Aşağıdaki dört özgürlüğün sağlandığı yazılımsal ürünlere özgür yazılım
denilmektedir:
0) Programı herhangi bir amaçla çalıştırılabilme özgürlüğü.
1) Programı inceleme ve değiştirme özgürlüğü.
2) Programı kopyalama özgürlüğü.
3) Programı iyileştirme ve geliştirme özgürlüğü, iyileştirilmiş ve geliştirilmiş programı
dağıtma özgürlüğü.
Şüphesiz bir yazılımın özgür yazılım olabilmesi için kaynak kodlarının da açık
olması gerekir. Bu sayede biz bir özgür yazılımı alıp, onu değiştirerek geliştirebiliriz.
Ancak onu sahiplenemeyiz. Bizim de aynı hakkı başkalarına vermemiz gerekir. Özgür
yazılımın öngördüğü hakları veren çeşitli lisanslar vardır. Bunların en yaygını GPL
(GNU Public Liscence) dir.
Açık kaynaklı yazılım akımı da özgür yazılım akımına temel olarak benzemektedir.
Ancak iki akımın vurguladığı öğeler biraz farklıdır. Özgür yazılım akımı programın
serbest dağıtılabilmesini vurgularken, açık kaynak kodlu yazılım akımı iyileştirme
yoluyla etkin yazılım geliştirmeyi vurgulamaktadır. Pek çok durumda açık kaynak
kodlu yazılımlar aynı zamanda özgür yazılımlardır. İki akımın tipik lisansları arasında
farklılıklar olsa da her iki akım da öz olarak kaynak kodların açık olmasını
savunmaktadır.
UNIX sistemlerinin tarihsel gelişimi ele alınırken Hollanda’lı profesör Andrew
Tanenbaum’un katkılarını da göz ardı edemeyiz. AT&T de UNIX sistemlerine telif
uygulamaya başlayınca (eskiden sembolik bir telif uygulanıyordu) ucuz bir UNIX
sistemi kalmamıştır. İşte Tanenbaum öğrencilerin deneysel amaçla kullanabilmesi
için mini bir UNIX sistemi yazmıştır. Tanenbaum’un Minix İşletim Sistemi ticari olarak
ciddi anlamda kullanılmış olmasa da Minix kodları ve Minix üzerinden işletim
2
Kaan Aslan Makale Arşivi – www.kaanaslan.net
sistemlerini anlattığı Operating System Design and Implementation kitabı UNIX türevi
sistemlerin tasarım ve yazımına ilişkin teorik ve pratik önemli katkılar sağlamıştır.
90’lı yılların hemen başında Linus Torvalds açık kaynak kodlu bir işletim sistemi
yazımına başladı. Internet ortamı içerisinde pek çok kişinin katkısıyla oluşturulan
Linux çekirdeği özgür yazılımın en göz dolduran örneklerinden biridir. Linus Torvalds
Tanenbaum’un Minix sisteminden etkilenmiştir. Torvalds’ın mikro çekirdek yerine tek
parçalı çekirdek mimarisini savunmasının Tanenbaum’u kızdırdığı bilinir. Bugün Linux
biçiminde dillendirdiğimiz işletim sisteminin tüm bileşenlerini Linus Torvalds’a
bağlamanın haklı bir gerekçesi yoktur. Linux temel olarak bir çekirdek geliştirme
projesidir. Fakat bu çekirdek çeşitli özgür ve açık kaynak kodlu yazılımlarla
birleştirilerek çeşitli gruplar, şirketler, kurumlar ve dernekler tarafından Linux dağıtımı
(distribution) biçiminde dağıtılmaktadır. Linux dağıtımlarının çekirdeği aynı olsa da
içerdiği araçlar ve diğer kullanım öğeleri arasında farklılıklar vardır.
UNIX’in ortaya çıktığı yıllardan bu yana birkaç UNIX türevi sistemin yoğun olarak
tercih edildiğini görmekteyiz. Bu sistemler hakkında da bir parça bilgi verelim.
UNIX System V Release 4
Bell Lab’da geliştirilen kısa ismi UNIX olan sistemin uzun ismi aslında “Unix TimeSharing System” biçimindedir. UNIX sistemleri 1971’deki Version 1’den 1989’daki
Version 10’a kadar bu isim altında geliştirilmiştir. Bell Lab 1982’de UNIX
sistemlerinden ticari fayda sağlamak amacıyla onu System III ismiyle piyasaya sürdü.
Sonra eski versiyonlarını da benzer biçimde lisansladı. UNIX sistemleri en olgun
düzeyine UNIX System V ile erişmiştir. Bu sürümün 1988’deki çıkan modeli Unix
System V Release 4 klasik UNIX sistemlerinin en belirgin olanıdır.
4.4BSD, FreeBSD, NetBSD, OpenBSD, Sistemleri
UNIX sistemlerinin en önemli çeşitlemelerinden biri Berkeley’deki Kaliforniya
Üniversitesi’nde oluşturulan CSRG (Computer System Research Group) tarafından
geliştirilmiş olan BSD (Berkeley Software Distribution) sistemidir. BSD’nin öyküsü
AT&T UNIX’in 1974 yılında Kalifornia Üniversitesi’ndeki PDP 11 makinalarına
yüklenmesiyle başladı. Böylece buradaki araştırmacılar UNIX’le tanışarak onu
inceleme fırsatına buldular. BSD’nin ilk versiyonu AT&T UNIX’e bazı modüllerin
monte edilmesiyle oluşturulmuştur. BSD ancak 1983’te bağımsız bir işletim sistemi
niteliğine kavuşmuştur. BSD sistemleri daha sonra PDP makinalarından VAX
makinalarına aktarıldı. 1980’de oluşturulan 4 numaralı versiyonda (4BSD) çeşitli
yenilikler eklendi. 4 numaralı versiyonu 1981’de 4.1, 1983’te 4.2 ve 1986’da da 4.3
izledi. BSD sistemlerinin en gelişkin versiyonu 4.4’tür. 1994’te 4.4BSD iki farklı
versiyonla çıktı. Bunlardan biri hiç AT&T kodu içermeyen ve özgürce dağıtılabilen
4.4BSD-Lite versiyonu, diğeri ise AT&T kodu içeren dolayısıyla özgür dağıtılamayan
4.4BSD-Encumered versiyonudur. 1995’te 4.4BSD-Lite Release 2’den sonra CSRG
dağıldı ve böylece bu ilk kuşak BSD sistemleri de sonlanmış oldu. Bu tarihten sonra
BSD sistemlerinin kaynak kodları kullanılarak açık kaynak kodlu olacak biçimde yeni
BSD sistemlerinin geliştirilmesine hız verildi. FreeBSD, NetBSD ve OpenBSD farklı
gruplar tarafından paralel bir biçimde geliştirilmeye devam ediliyor. Aynı kod temelini
kullanan bu sistemler arasında amaç ve felsefe bakımından farklılıklar olsa da
programlama bakımından önemli bir farklılık yoktur.
3
Kaan Aslan Makale Arşivi – www.kaanaslan.net
Linux
Bugün Linux sistemleri en yaygın kullanılan UNIX türevi sistemleri oluşturmaktadır.
Linux çekirdeğinin 0.11 olarak numaralandırılan ilk sürümü 1991 yılında hazırlandı.
Çekirdeğin 1.0 sürümü 1994’te, 2.0 sürümü 1996’da, 2.2 sürümü 1999’da, 2.4
sürümü 2001’de ve 2.6 sürümü de 2008’de kullanıma geçmiştir. Kitabın yazıldığı
sıralarda 2.6’lı çekirdek versiyonları kullanımdadır. Linux sistemleri POSIX ve SUS’da
belirtilen özelliklere büyük ölçüde sahiptir.
Mac OS X
Günümüzde yaygın olarak kullanılan bir UNIX türevi de MAC OS X (me:k o es ten
biçiminde okunuyor) sistemleridir. Apple firması tarafından geliştirilmiş olan
Macintosh bilgisayarlarının ve Mac OS işletim sistemlerinin öyküsü oldukça
ayrıntılıdır. Biz burada yalnızca özet bir bilgi vereceğiz.
MAC OS X sistemlerinin çekirdeğine Darwin denilmektedir. Darwin açık kaynak
kodlu bir projedir. Darwin çekirdeği NeXTSTEP ve FreeBSD işletim sistemlerinin
kodlarından faydalanılarak oluşturulmuştur. NeXTSTEP çok kişi tarafından bilinmese
de yazılıma önemli katkılarda bulunmuş bir işletim sistemidir. İlk web tarayıcısının
Tim Berners-Lee tarafından NeXT bilgisayarlarında NeXTSTEP işletim sistemi
üzerinde yazıldığını belirtelim. NeXTSTEP, işletim sisteminin çekirdeğine XNU
denilmektedir. XNU, Carnegie Mellon Üniversitesi’nde Mach çekirdeği ile 4.3BSD
çekirdeğinin birleştirilmesiyle elde edilmiş hibrit bir çekirdektir. Mach çekirdeği de
Carnegie Mellon Üniversitesi kökenli bir mikro çekirdektir.
Solaris
Sun firması 1983’te gerçekleştirdiği ilk UNIX türevi sistemine SunOS ismini
vermişti. SunOS 1.0 versiyonundan 4.1.4 versiyonuna kadar BSD tabanlı bir
sistemdi. Daha sonra Sun firması SunOS’u 5.0 versiyonuyla birlikte UNIX System V
Release 4 kod tabanına geçirdi. Bu geçişle birlikte isim değişikliği de yapıldı, SunOS
yerine Solaris ismi kullanılmaya başlandı. (Solaris’in ilk versiyonu 2.0’dır ve bu
SunOS’un 5.0 versiyonuna karşılık gelmektedir. SunOS ismi de yine kullanılmaya
devam ediyor) Solaris halen Sun firmasının SPARC ve Intel’in 32 bit ve 64 bit X86
işlemcilerinin bulundğu makinalarda çalışmaktadır. Solaris sistemleri Open Solaris
ismiyle tamamıyla olmasa da büyük ölçüde açık kaynak kodlu bir proje haline
getirilmiştir. Solaris yüksek oranda POSIX ve SUS uyumlu bir sistemdir.
AIX
AIX (Advanced Interactive Executive) IBM tarafından UNIX Syetem V kod temeline
dayandırılarak geliştirilen bir UNIX türevidir. İlk versiyonu 1986’da yazılmıştır. AIX
önceleri IBM’in RS/6000 serisi bilgisayarlarında çalışıyordu. Daha sonra PowerPC
mimarisine de aktarıldı. 90’lı yılların sonlarına doğru IBM ile SCO firmaları güçlerini
birleştirerek ortak bir UNIX sistemi çıkartmak için işbirliği yaptılar. Fakat bu işbirliği
anlaşmazlıklar yüzünden mahkemede sonlanmıştır.
HP-UX
4
Kaan Aslan Makale Arşivi – www.kaanaslan.net
HP-UX Hewlett Packard firması tarafından geliştirimiş olan bir UNIX türevidir. Bu
sistem de UNIX System V kod temeline dayandırılmıştır. HP-UX HP-9000 PA-RISC
ve Itanium işlemcilerinde çalışabilmektedir. HP-UX’in ilk versiyonu 1983 piyasaya
sürüldü. Makalenin yazıldığı zaman diliminde 11. vesiyonlar kullanımdadır.
MINIX
Minix, Andrew Tanenbaum tarafından deneysel amaçla geliştirilmiş mikro
çekirdekli mini bir UNIX türevi sistemdir. Endüstriyel amaçla kullanılmamış olsa da
işletim sistemi geliştirme etkinliklerine yaptığı önemli katkılar inkar edilemez.
Tanenbaum, Operating System Design and Implementation isimli kitabında işletim
sistemlerinin çeşitli alt sistemlerini MINIX çekirdeği çerçevesinde açıklar. Linus
Torvalds ve pek çok çekirdek geliştiricisi (kitabın yazarları olarak bizler de) bu
kitaptan ve MINIX’in kaynak kodlarından faydalanmıştır. MINIX’in geliştirilmesine açık
kaynak kodlu bir sistem olarak devam ediliyor. Kitabın yazıldığı zaman diliminde
MINIX’in 3 numaralı versiyonu kullanımdadır.
CSD
Yukarıda açıkladığımız çok bilinen sistemlerin dışında ülkemizde de yürütülen bir
UNIX türevi çekirdek geliştirme projesi vardır. İsmine CSD İşletim Sistemi Geliştirme
Projesi denilen bu proje C ve Sistem Programcıları Derneği tarafından yürütülüyor.
Makalenin yazıldığı sıralarda çekirdeğin %60’lık bir kısmı bitmiş durumdadır. CSD
çekirdeği kod bakımından özgündür. POSIX.1 uyumlu olmasına ve Linux
programlarının doğrudan çalıştırılmasına gayret edilmektedir.
[1]
Apple şirketinin kurucularından biri olan Steve Jobs 1985 yılında Apple’dan
ayrılarak NeXT şirketini kurdu. Şirketin geliştirdiği NeXT bilgisayarları ticari başarı
sağlayamamış olsa da bu bilgisayarların işletim sistemi olan NeXTSTEP sistem
yazılımlarına önemli katkılarda bulunmuştur. 1996’da Apple NeXT şirketini ve
dolayısıyla da NeXTSTEP işletim sistemini satın aldı. Steve Jobs da Apple’a
danışman olarak geri döndü. 1997’de Jobs yeniden Apple’a CEO oldu.
5
Kaan Aslan Makale Arşivi – www.kaanaslan.net
Download