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