unix/linux

Unix

This post is also available in: İngilizce Azerbaycan Türkcesi Rusça

Bilgisayar dünyasıyla arası biraz iyi olan herkes Unix veya Unix türevlerinden en az birini en azından duymuş veya kullanmıştır.Bugün Unix dünyasının nimetlerinden herkesin mutlaka yararlandığını söylemek zorundayım. Günümüze yön veren bir çok ilk Unixle gelmiştir. Mesela C dili yazılım dünyasının dönüm noktasıdır ve Unix’in öz evladıdır. ArpaNet (ilk ağ bağlantısı) yine bu platform üzerinde test edilmiştir.Unix bir çoğu için sihirli bir ortamdır  ve İnkar edilemez bir gerçek varki ,kullanmasını bilen için Unix sihirli bir değnekdir.Unix derin dünyası ile arkadaş olun , ondan korkmayın.Unix kullanıcılarına çok fonksiyonel bir ortam sunar.Unix dünyasını anlamaya çalışmadan önce işletim sistemi  nedir, görevleri nelerdir gibi soruları cevaplarsak güzel bir başlangıç yapmış oluruz diye düşünüyorum.

 

110107-eniacGiris.hlarge
-*Eniac ( ilk bilgisayar sistemi)

 

işletim sistemi bir bilgisayarım en önemli parçasıdır. Bir bilgisayarı 3 parça olarak düşünebiliriz. Bu parçalar ; donanım, işletim sistemi ve uygulamalardır.İşletim sistemi donanım ve uygulamanın arasında bulunan parçadır.Bir yanda donanımları çalıştırıp kontrol ederken bir yandanda uygulamaları çalıştırır.Bilgisayarın başlangış durumuna gelmesi ve kullanıma hazır hale getirilmesi görevlerini işletim sistemi otomatik olarak üstlenir. Bir işlemi çalıştırdığınız zaman işletim sistemi bir takım mantık dizisi gerçekleştirir. Bir çok işlem sistem içinde eş zamanlı çalışabilir ancak işlemcinin bunların hepsini aynı anda işleme şansı yoktur. işlemler arasında öyle hızlı geçişler olurki tüm işlemler aynı anda işliyormuş gibi görürüz. Bu kavram zaman paylaşımı ( Time-sharing) veya çok görevlilik (Multi-asking) olarak tanımlanır. İşletim sistemi aynı zamanda sistemde işiniz bittiği zaman donanımların düzgün olarak kapatılmasınıda sağlar. Yani işletim sistemi bilgisayarda yapılan tüm işlerin kontrolünü sağlayan olmassa olmaz araçtır.

Bilgisayar ilk ortaya çıkmaya başladığı yıllarda bir çok sistem geliştirildi. Bu sistemler başlarda gelişmiş hesap makinalarından başka birşey değillerdi.Kullanımları karmaşık , büyük ve ağırlardı. Ev kullanıcıları için ilk başlarda çok cazip olmasalarda akademik araştırmalarda ve bazı endüstri sektöründe önemli yere sahiplerdi. Önemi gereği giderek geliştiler. En önemli gelişim ise bir telekominasyon şirketi olan At&t Bell labaratuvarlarında gerçekleştirildi.At&t esas amacı çok kullanıcılı bir işletim sistemi geliştirmekdi.

 

Screenshot_9c73bb
Dennis Ritchie (ayakta) ve Ken Thompson iki adet t teletype 33 terminali ile PDP-11 için UNIX geliştirirlerken çekilmiş bir resim.

 

Unix işletim sisteminin gelişim süreci 1960 lı yılların ortalarında başlar.At&t den Ken Thampson , Dennis Ritchie ve B. kernighan Multic isimli bir işletim sistemi projesinde Mit gibi üniversitelerle birlikte yer alıyorlardı ve 1969 da bu projeden ayrılarak yeni bir proje başlattılar. 1970 yılında Ken Thampson yeni projenin adını Multics den kelime oyunu yaparak Unix olarak belirledi.

Unix’in ilk sürümü DECin PCB-7 makinalarında tamamen makina diliyle 1970 yılında yazıldı. Çekirdekle birlikde tüm uygulamalarda makina diliyle kodlanmıştır. Ken thampson Unix için yeni bir dil arayışına girmiştir. Başlarda bir Fortran derleyici yazmaya niyetlendiysede daha sonra tamamen BCPL dilinden esinlenerek alçak seviyeli işlemlerde kullanılabilecek B dilini tasarlamıştır.Dennis Ritchie 1971’de B dilini dahada geliştirerek c dilini oluşturmuş ve derleyicisini yazmıştır.

Dennis-Ritchie

1971 yılında ekip DECin PCB-11 makinaları için Unix’i tamamen c dilini kullanarak baştan yazmışlardır. Bu özelliğiyle Unix makina diliyle kodlanmayan ilk işletim sistemi olmuştur. Ayrıca makina diliyle kodlanmadığı için kodları diğer sistemlere rahatca taşınabilmiş ve ilk taşınabilir işletim sistemi özelliğini de kazanmıştır. Çok büyük bir tekel olan At&t nin Bilgisayar ve ürünlerini satma hakkı yoktu bu yüzden Unix’i ticari bir marka haline getirmek yerine araştırmacılara ücretsiz olarak açtı.Onlarca farklı ünivesite Unix’i mercek altına almış ve birçok Unix türevi bu sırada geliştirilmeye başlanmıştır.Bu Türevlerin en ünlüsü Berkeley üniversitesi tarafından geliştirilmiş olan Bsd (Berkeley Software Distribution) dur. Yıllar sonra At&t Unix’in ticari haklarına kavuşur ve diğer türevlere dava açar. Novell tarafından satın alınınca dava düşer ve Novell Unix sytem 5 ile yoluna devam eder. Unixin en büyük referansı unix sysem5 dir ve ticari bir markadır. At&tnin Unix’in telif haklarını alması üniversitelerdeki bir çok araştırmacıyı tedirgin etmiştir çünkü ünix bir çok araştırma için çok önemli bir araçtır. Hollandalı bir profosör olan Andrew Tanenbaum kendi derslerinde kullanabileceği küçük bir Unix türevi hazırlamıştır ve bunu minix olarak tanımlamıştır.

 

minix
– MINIX-

    Bütün bunların yanında 1984 yılında Richard Stallman Özgür yazılım fikrini ortaya atarak FSF( free software fundion) u kurmuştur. Amacı tamamen bedava ve özgür bir ünix türevi geliştirmektir. Bunun için Gnu lisanları geliştirilir ve bir çok özgür yazılım projesi başlatılır. Bunlardan en önemlisi Richard stallman tarafından tasarlanan -gcc ve emacs editörleridir. R. Stallman ne kadar çabalasada Özgür bir unix sistemini geliştiremez. Gnu Hurd çekirdeği* gibi çekirdekler üzerinde çalışılsada Hurd projesi yetiştirilemez( Bugün Linux/debian ekibi tarafından bu çekirdeğin geliştirilmesine devam edilmektedir.). çünkü 1991 yılında bir üniversite öğrencisi olan Linus Torvals bir forum sayfasında yeni bir işletim sistemi fikri ortaya atar ve Minix çekirdeğini yeniden derleyerek paylaşır. Forum sayfasından birisinin tavsiyesiyle yeni projenin maskotu Penguen olarak belirlenir ve o günden sonra Linux GPL lisansı alarak bir çok kullanıcı tarafından geliştirilmeye başlanır ve Gnu projesini tamamlanmış olur.Linux’un bir çok Türevi oluşmuştur ve tamamen açık kaynak kodlu bir sistemdir. Yazı serimizin diğer bölümlerine Linux üzerinden devam edeceğiz ama önce Unix’i ve diğer türevlerini tam olarak anlamamız iyi olur.

rms
Özgür yazılımın babası olarak anılan Richard stallman.

 

1980 yıllarının sonlarına doğru Unix kodlarının kendi aralarında taşınabilirliğinin düzenlenmesine ihtiyaç duyulmuştur. Bir unix kodunun başka bir unix sisteminde rahatca çalışabilmesi öngörülmüş ve bu fikir Richard Stallman tarafından ortaya atılmıştır.Bu standarlaştırmayla IEEE ilgilenmiş ve 1003 numaraları standart ekibini kurmuştur.Bu standartlar POSİX Portable Operating System Interface for UNIX) olarak isimlendirilmiştir. Bugün bütün Unix ve Linux türevleri POSİX standarlarına uygundur. Posix standarlarına uymak için Unix/linux türevi olmak gerekmez bugün NT gurubu işletim sistemleride posix standartlarına uyum sağlamışlardır.

UNİX SİSTEMİNİN YAPISI

 

Screenshot_1931ff

Temel olarak Unix/Linux çekirdekleri monolitik yapıya sahiptirler. Monolitik sistemlerde işletim sisteminin çekirdek kısmı büyüktür ve neredeyse tek parçaya sahiptir. Monolitik sistemlerde çekirdek tek parça olduğu için modüller arası iletişim hızlı olsada çekirdeğe ekleme yapmak , düzenlemek zordur ve yeniden derleme gerektirir. Monolitik çekirdeklerden başka MikroKernel ,hybridKernel ve ExoKernel sistemleri vardır. Bunlardan MikroKernelden de kısaca bahsetmek gerekirse Mikro kernelde çekirdek küçük tutulur ve modüller parçalar halindedir.Modüllerin daha sonradan eklenip çıkarılması kolay olsada modüller arası iletişim ayrı oldukları için daha yavaş olacaktır. Win32 sistemleri tipik olarak MikroKernel yapıdadır.

Unix sistemi ilk açıldığında çekirdek tarafından oluşturulmuş bir login programıyla kullanıcı karşılanır ve kullanıcıdan kullanıcı adı ve parola girilmesini bekler.Kullanıcı bu bilgileri girdikden sonra bir komut yorumlayıcı ( command interpitter – shell) ile veya gui ( Grafik arabirim) kullanıma devam eder. Unix sistemlerinde Shell ( Kabuk) bir tane değildir ve shell kullanıcı oluşturulurken belirlenir. Unix sistemlerinde bir kullanıcı root ( Kök) kimliğiyle sistem içinde herşeyi yapabilir , süper kullanıcı olur.
Shell(kabuk) komutların yorumlandığı bölümdür ve kullanıcı login ekranına bilgilerini girerek sistemi açtıkdan sonra komutların yürütülmesini bu birim kontrol eder. Çekirdek kabukdan ayrıdır ve birden fazla olabilir. Zaman içinde birçok unix kabuğu geliştirilmiş. Unix kabuklarının yorumladığı kodlar aralarında farklılıklar gösterebilirler. Belli Unix türevleri belli Shell(kabuk) lar üzerinde gelişmiştir. Belli başlı kabuklar şunlardır:

C Shell (csh)
Bourne Shell (bsh)
Bourne Again Shell (bash)
Korne Shell (ksh)

Bunların en yaygın olarak kullanılanı Linux ortamlarında kullanılan Bash’dır.Unix sistemlerinde C kabukları da yaygın olarak kullanılmaktadır. Kabuklar işletim sistemi için sıradan birer process dir. Unix/Linux sistemlerinde içsel komur karamı yoktur. Her komut aslında çalışabilen bir dosyadır.Dolayısıyla her türlü komut yorumlayıcıya bu dosyalar eklenerek komutlar çalıştırılabilir.

    UNİX DOSYA YAPISI

 

Screenshot_35cc19

 

İşletim sisteminin disk üzerindeki dosyaları takip edebilmesi için oluşturulmuş yöntem ve veri yapıları bütününe dosya sistemi denilir.Unix “Tekil hiyerarşik” dosya yapısını benimsemiştir. Dosya sistemi “/” simgesiyle ifade edilen root klasöründen başlar.
Unix dosya sisteminde Windowsdaki gibi C: D: gibi sürücüler bulunmaz. Windows ortamında dosyalarınızı C: D: E: gibi her yere koyabilirsiniz. Bu tür dosya sistemlerine” Hiyerarşik yapılı” dosya sistemi denmektedir.Unix sisteminde dosya sistemi / klasöründen başlayarak aşağıya doğru iner ve windows sisteminin aksine büyük küçük harf duyarlılığı vardır.Unix dosya sistemi ağaç dosya sistemi olarakda ifade edilmektedir ve her dizinin ayrı bir görevi vardır.

  • /bin : Olması şart komut dosyalarını içerir
    /boot : Başlangıç için gerekli dosyaları bulundurur
    /dev : Donanım dosyaları vardır
    /etc : Sistem ayarlarını barındırır
    /lib : Kütüphane dosyaları ve kernel modülleri bulunur
    /media : Kaldırılabilir aygıtların (CD-Rom, Flash bellek vs…)
    sisteme eklendiği klasördür.
    /mnt : Bir dosya sistemini geçici olarak eklemek için kullanılır.
    /opt : Ekstra programların kurulması içindir
    /sbin : Sistemi yöneticisiyle ilgili çalıştırabilir dosyaları tutar.
    /srv : Sistemin sunduğu hizmetlerle alakalıdır
    /tmp : Geçici dosyaları tutmak içindir
    /usr : İkincil bir hiyerarşi
    /var : Değişken verileri saklar

Bazı Önemli Aygıt Dosyaları:

  • /dev/ttyS0 : Fare, modem gibi aygıtların bağlandığı seri port. (COM 1)
    /dev/psaux : PS/2 girişi; fare ve klavyeler içindir.
    /dev/lp0 : Paralel port (LPT 1); yazıcı, tarayıcı vs…
    /dev/dsp : Birincil ses aygıtı
    /dev/usb : USB aygıtları
    /dev/sda : SCSI aygıtlar, Flash Bellekler, harici CD-ROM’lar vs…
    /dev/scd : SCSI CD-ROM’lar
    /dev/js0 : Joystick (Microsoft Türkçesiyle Eğlence Çubuğu)

 

unix

Bir çok unix türevi olduğundan bahsettik. Unix araştırma programlarında yer edindiği için daima türevleri gelişmiştir bunların en öne çıkanlarını sıralayalım Öncelikle Berkeley üniversitesi tarafından unix yeniden derlenerek unix kaynak kodunun %90nı nı değiştirdiler. TCP/İP , Sanal bellek , C shell gibi bir çok özellik BSD ile gelmiş ve BSD yeni bir akım başlatmıştır.

  • Linux,
    NextStep,
    (NeXT),
    Sun OS 4.x, ve
    ULTRIX (DEC)

At&t Bell labaratuarları ticari olarak unix’i lisansladı ve system 5 bir süre sonra ticari olarak en çok desteklenen ürün oldu.lisans hakkı Unix System Laboratories’e aittir.

  • AIX (IBM),
    Digital Unix (DEC),
    HP-UX (HP),
    IRIX (SGI),
    SCO UNIXware ve
    Sun OS 5.x/Solaris (SUN)

Baştan ele alındığında günümüzde bir bütün olarak kullanılabilen ve belli bir kitleye sahip olup desteklenebilen bütün Unix türevleri şunlardır.

  • Linux
    FreeBSD, OpenBSD, NetBSD
    Minix
    Sun Solaris
    IBM AIX
    HP-UX
    SGI IRIX
    SCO Unixware
    Digital UNIX
    Xenix
    Mac

 

1.resim29e15

 

Mac ve Linux gibi türevler zaten çoğu kullanıcı tarafından biliniyor. Birde Solaris dağıtımından özel olarak bahsetmek istiyorum.
Vinod Khosla, Scott McNealy, Bill Joy ve Andy Bechtolsheim tarafından SUN Microsystems, 1982 yılında kurulur. Sun, Stanford University Network ( Stanford Üniversite Ağı ) anlamındadır. Bu elbette ki bir tesadüf değil. Kurucuların hepsi, Stanford kökenlidir ve firmanın temelini üniversitede atarlar.
Sun 1982 yılında kendi işletim sistemini piyasaya sunar ve sistemin adı SunOs 1.0 dır. SunOs büyük oranda BSD tabanlıdır. Yıllar içinde hızlı bir gelişme göstermiş ve 5. sürümüyle birlikte Solaris adını almıştır.Sun bilgisayar sektörünü önem ölçüde etkilemiştir. Unixin gelişimine katkıda bulunmuş , NFS, SPARCH, JAVA vb. ürünleri geliştirmiştir.Screenshot_5b6535
Bir firma desteğiyle sunulan en yaygın Unix türevi Solaris’dir denilebilir.Solarisin çalışma platforma uzunca yıllar RISC mimarili SPARC işlemcileri olmuştur.X86 altı tabanlı işlemcilere desteği de zaman zaman gelmiş zaman zaman kalkmıştır yani tam bir verim sağlanamamıştır.
Solaris 2005 yılında kaynak kodlarını halka açtı ve OpenSolaris koduyla dağıtıma sundu.OpenSolarisin amacı Solaris bünyesinde özgür yazılım hareketi başlatmaktı. İsteyen herkes opensolaris.org adresinden solarisin kaynak kodlarını indirebilir.Solaris kodları Cddl(Genel geliştirme e dağıtım lisansı ile dağıtılıyor.Solaris de kullanılabilen CDE , Java Desktop gibi masaüstü yöneticileri geliştirilmiş olmakla birlikde Gnome , kde masaüstü ortamlarıda dilenirse kullanılabilir. Donanım tanımlamada henüz sorunları olsada bu sorun aşılmaya çalışılmaktadır. NEVENTAOS gibi solaris türevleride ortaya çıkmıştır. NEVENTAOS , Linux/UBUNTU dağıtımını esas alır ve bu dağıtımla bir çok linux paketi rahatca Solaris ortamında da kullanılabilmektedir.

Unix’e  şöyle bir bakınca bir çok türevin arka arkaya sıralanıp gittiğini rahatca görebiliyoruz. Bu Unix’in karmaşıklığından değil üretkenliğindendir. Unix’in alt yapısı çok güçlü ve kullanışlı. Üstelik bolca Opensource(Açık kaynak) türevi var. Bu insanlık için büyük bir şans çünkü hiç bir hizmet ödemeden araştırmacılar böyle bir hazinenin üzerine oturdu. Bu durum sürekli yeni reaksiyonlara sebep oluyor. Eğer yazılımla uğraşıyorsanız özellikle açık kaynak dünyasıyla tanışın ve kodları inceleyip test edin. Gelecek yazımıza Linux üzerinden devam edeceğim ve artık Unix/Linux dünyasını  daha yakından anlatmaya çalışacağım.

      Özet

-Unix’ in temelleri 1965 yılında MIT, AT&T Bell Labs ve General Electric’ in birlikte geliştirmeye başladıkları MULTICS (Multiplexed Operating and Computing System) adı verilen bir deneysel işletim sistemi projesiyle atılmıştır

-C dili 1971 yılın Dennis Ritchie tarafından B dilinden türetilmiştir ve Unix C ile baştan kodlanmıştır.

-1981’de Bill Joy, Berkeley Unix’de TCP/IP’yi yazdı.

-California Universitesi ~ Berkeley, kendi UNIX dağıtımlarını duyurdu.

-At&t Unix kodları için telif hakkı isteyince hollandalı profosör Andrew Tanenbaum derslerinde kullanmak için Minix’i hazırladı..

-1991’de Linus Torvalds 32 bit işlemci mimarisindeki 80386 lar için Linux’u yazdı.

-Solaris İşletim Sistemi, Sun Microsystems firması tarafından geliştirilmiş açık kaynaklı bir UNIX işletim sistemidir.

-Unix çekirdeği Monolitik yapıdadır.

-Richard Stallman Açık kaynak  felfesesini geliştirmiş ve FSF yi kurmuştur. Gnu lisansıbu süreçde üretilmiştir.

-Unix türevleri arasındaki uyum’u sağlamak için Posix standartları IEE tarafından tasarlanmıştır.

 

Related Post

About esatnogayhan

Doğaya olan merakım herzaman çevremdeki insanlara oranla oldukca yüksekti. Doğadaki işleyişi merak ediyor , küçük deneyler yapıyor ve herşeyi sorguluyordum. Mesela elektrikle ilk tanıştığım zamanlar okula yeni başladığım zamanlardı. ....Devamını okumak için tıklayınız ;)