Unix ve Linux’un Tarihçesi ve Gelişimi
1.1 UNIX’in oluşumu
1960’larda AT&T’nin Bell Laboratuarları,MIT ve General Electric’ın ortaklaşa yürüttükleri bir projede “Multics” isimli bir işletim sisteminin patentini aldılar. Bell Labaratuarı bu projeden çekilene kadar iki çalışanı , Dennis Ritchie ve Ken Thompson, bu proje de çalıştı. Bell Laboratuarları bu projeden çekildikten sonra bu iki kişi yeni bir projede bir işletim sistemi ortaya çıkardılar. İşletim sistemine “Multics” adından esinlenerek “Unics” ismi takıldıysa da daha sonraları bu isim UNIX olarak değiştirildi.
UNIX’in en temel özelliği Dennis Ritchie tarafından yaratılan C dili ile oluşturulmasıydı. İşletim sistemleri o güne kadar sistemin mimarisine bağlı olan makine dili ile yazılmaktaydı. UNIX işletim sistemi makine dili yerine C dili temel alınarak kodlanmıştı. Bu da işletim sisteminin diğer platformalara taşınmasını kolaylaştırıyordu.
UNIX işletim sistemi duyulmaya başladıktan sonra başta üniversiteler olmak üzere bir çok kişi ve kurumun ilgisini çekti. Özellikle üniversitelerin bilgisayar bilimleri bölümlerinde okuyan ve çalışan kişilerin desteği ile birlikte UNIX kısa zamanda büyük bir ilerleme kaydetti. Bunun sonucu olarakta en önemli bilgisayar işletim sistemi ünvanını eline geçirdi.
1980’lerin başında AT&T UNIX işletim sisteminden para kazanma yoluna gitti ve işletim sistemini özel lisanslar ile pazarlamaya başladı. UNIX’in ortaya çıktığı günden itibaren işletim sisteminin gelişmesine yardımda bulunan bir çok kişi bu karara karşı çıktı. Bunun üzerine amacı UNIX benzeri ve parasız dağıtılabilen bir işletim sistemi ortaya çıkarmak olan GNU projesi Richard Stallman tarafından başlatıldı.GNU’yu desteklemesi için 1984 yılında Stallman ve arkadaşları “Free Software Foundation (FSF)” projesini yarattılar. FSF’te “free” ile anlatılmak istenen bedava olan yazılımdan çok özgürce dağıtılan yazılım manasını taşımaktaydı. FSF’e göre herhangi bir amaç için kullanılabilen , kopyalanıp üzerinde gerekli değişiklik yapılabilen ve daha gelişmiş bir yazılım sistemine dahil edilebilen yazılım serbest yazılım(free software) olarak kabul edilmişti. Bu özgürlükler için temel olarak gereken şey yazılımın koduna erişimdi. Bu yüzden bu akım aynı zamanda “Kaynak Kodu Açık Yazılım – Open Source Software (OSS)” olarak da anılır.Linux günümüzde bulunan en büyük kaynak kodu açık yazılımdır.
1.2 Linux’un ortaya çıkışı
AT&T UNIX işletim sistemini para ile lisanslayana kadar , UNIX üniversitelerde bilgisayar bilimi öğrencilerine işletim sistemlerini öğretmek için kullanılan bir araçtı. AT&T’nin yaptığı değişiklik sonrası üniversitelerin yeni bir işletim sistemine ihtiyacı ortaya çıktı. Bunun üzerine Andrew Tannenbaum UNIX benzeri bir işletim sistemi olan MINIX işletim sistemini ortaya çıkardı.
1990 yılında Finli bilgisayar bilimi öğrencisi Linus Torvalds Intel mimarisindeki bilgisyarlar için hafıza yönetimi yapan bir yazılım üzerinde çalışmaya başladı. Bir zaman sonra bu projesinin genişletilmiş halinin UNIX çekirdeği gibi çalışabileceğini fart etti. 1991 yılında comp.os.minix haber grubuna üzerinde çalıştığı projeyi bildiren ve geliştirme için öneri isteyen bir mesaj gönderdi. Torvalds bu yeni işletim sistemine Linus’un MINIX’i olarak tanımladığı LINUX adını verdi. Unix üzerinde program geliştiren kişilerden Linux’un geliştirilmesi için yardım teklifleri gelmeye başladı. Linux’un bir önemli yanı ise GNU projesinin eksik olan bir parçasını doldurmasıydı. GNU projesi çerçevesinde yaratılacak olan Unix benzeri işletim sisteminin çoğu parçaları bitmişti. Yapılmayan en önemli parça işletim sisteminin çekirdeği idi. Bu eksikte Linux tarafından kapatılmış oldu. 1994 yılında Linux 1.0 serisi kernel GPL lisansı altında yayınlandığında , Linux 100,000 kullanıcıya erişmişti. Günümüzde Linux’un milyonlar ile belirtilen bir kullanıcı kitlesi bulunmakta. Son kullanıcı pazarında da gün geçtikce güçlenmesine rağmen Linux günümüzde çoğunlukla sunucularda kullanılan bir işletim sistemidir. Yapılan araştırmalarda Internet’te bulunan web sunucularının büyük çoğunluğu Linux işletim sistemi üzerinde çalışmaktadır.
1.3 Linus Torwalds’ın comp.os.minix Haber Grubuna attığı mesaj
From:
torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <
1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello everybOdy out there using minix –
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 368 (486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same pysical layout of the file-system (due to practical reasons) among other things).
I’ve currently ported bash(1.0 and gcc(1.40), and things seem to work. This implies that I’ll get something practical with in a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them :-)
Linus (
torvalds@kruuna.helsinki.fi)
PS. Yes – it’s free of ant minix code, and it has multi-threaded fs. It is not portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have.
Burtaya kadar linux un doğuşunu anlattık. Gelelim İnternette en Önemli olan konuya. Olmazsa olmazımız olan ağ ortamları...
2 TEMEL AĞ BİLGİSİ
2.1 ISO/OSI ve TCP/IP Referans Modelleri
LAN, MAN ve WAN’lar, geliştirilme süreçleri içindeki ilk uyarlamalarında oldukça karmaşık bir yapı arzetmekteydi. 1980 ‘lerde networklerin sayılarında ve büyüklüklerindeki inanılmaz artış olamaya başladı. Birçok kuruluş ve firma, sahip oldukları networkleri, daha yüksek verim almak amacıyla, yeni teknolojiler geliştirildikçe ve yeni ürünler üretildikçe, bunlardan faydalanarak geliştirmeye ve yeni networkler oluşturmaya başladılar.
1980’lerin ortalarında bu organizasyonlar, büyümenin getirdiği yeni bir takım problemlerle karşı karşıya kaldılar. Yeni ve değişik belirtimler (specifications) ve uyarlamalar kullanan networklerin birbiri ile iletişim kurmasıda giderek zorlaşmıştı. Bu yüzden patentli yada kuruluşa özel networklerden (proprietary) vazgeçmeye başlanmıştır. Patentli networkler, özel olarak geliştirilen, yönetilen ve kuruluşa özel networklerdir. Bu yüzden tüm teknoloji bu kuruluşların kontrolü altında ve yönetimi altındadır. Bunun tersi olarak “Serbest” ise, halk tarafından teknolojinin serbest olarak kullanımı anlamına gelir. Networklerin uyumsuz ve biribiri ile iletişim kurmama gibi sorunlarını çözmek için, International Organization for Standardization (ISO) DECNET, IBM SNA, ve TCP/IP gibi birçok network çeşitini inceleyerek, bir kurallar kümesi yaratmıştır. Bu araştırmanın bir sonucu olarak ISO, üretici firmaların kendi içlerinde ve diğerleri ile uyumlu olan, iletişim kurabilen ve birlikte çalışabilen networkler üretemelerine yardımcı olmuştur. ISO’nun 1984 de yayınladığı OSI (Open System Interconnectivity) referans modeli, dünya üzerinde değişik birçok üretici firmanın ürettiği değişik tiptteki networklerin biribiri ile daha uyumlu ve birlikte çalışabilir (interoperability) olmasını garantileyen bir dizi standartları belirleyerek, üretiçilere bu desteği vermiştir. OSI referans modeli network iletişimi için ilk modeldir ve bugün birçok üretici ürünlerine bu modele dayalı olarak geliştirmektedirler.
OSI referans modeli katmanlı yapıya sahip bir netwrok modelidir. Her katmandaki network fonksiyonlarının ayrı ayrı izlenmesine izin verir. Daha önemlisi, bilginin network üzerinde yolculuğunu nasıl gerçekleştirdiğinin anlaşılmasını sağlar. Yani, veri paketlerinin yada bir bilginin, uygulama programlarından (application programs-örneğin, hesap çizelgesi,döküman vs,..) bir ortam (media-örneğin kablo) ve nework yoluyla bir başka bilgisayardaki uygulama programına nasıl yolculuk ettiğini görselleştirerek anlamamıza olanak sağlar. OSI referans modelinde, 7 adet numaralandırılmış katman (layer) vardır.
7. Katman : Uygulama Katmanı
6. Katman : Sunum Katmanı
5. Katman : Oturum Katmanı
4. Katman : Taşıma Katmanı
3. Katman : Network Katmanı
2. Katman : Veri - Bağı Katmanı
1. Katman : Fiziksel Katman
Her katmanda network fonkiyonlarının o katmana göre belirlenmesine ve bir katmanın görevlerinin diğerlerinden ayrılmasına katmanlama (layering) denir. Katmanlı network yapısının birçok faydası vardır örneğin,
• Network iletişimini küçük ve basit parçalara ayırır. Böylece anlaşılması ve öğrenilmesi daha kolaylaşır.
• Farklı firmaların geliştireceği ve desteğini vereceği network parçalarını ve bileşenlerini standartlaştırır.
• Değişik tipte network donanım ve yazılımının birbiri ile iletişim kurmasına izin verir.
• Bir katmandaki olası bir değişikliğin başka katmanları etkilemesini engeller. Böylece daha çabuk geliştirilebilirler.
Verinin, bir network üzerinde herhangi bir kaynaktan bir hedefe yol alabilmesi için gerekli olan en önemli kriter, networkü oluşturan tüm elemanların aynı dili konuşması yada aynı kurallar ailesine uyarak haberleşmeleridir. Bu kurallar ailesine PROTOCOL adını veriyoruz. Ağ üzerindeki tüm host’lar aynı ağ protocolune uyarak iletişim kurarlar.
2.1.1 OSI KATMANLARININ YAPISI ve FONKSİYONLARI
Her OSI katmanı, verinin network üzerinde bir kaynaktan bir hedefe yolculuk edebilmesini sağlayan bir dizi fonksiyonlara sahiptir. Yine her katman kendine özel protokollere sahiptir, herhangi bir katmanı “ n ” ile gösterirsek, bu katmana ait protokole N. Katman Protokolü (Layer n Protocol) denir. Her OSI katmanı network üzerindeki tüm diğer cihazlarla (device) veya host’larla türdeş (Peer-to-Peer Communication) iletişim kurarlar. Veri katmanlar arasındaki yolculuğu esnasında her katmanda o katmana ait özelliklerini yansıtan bir isim alır. Bu şekilde isimlendirme sonucu veriye n. Katman Protocol Veri Elemanı adı verilir (N. Layer Protocol Data Unit - PDU).
Veri network üzerindeki iletilmeden önce kaynak üzerinde her katmanda ayrı ayrı o katmana özel bir takım bilgilerle (header ve trailer) sarılarak zarflanır (encapsulation). Hedefte ise aynı veri, her katmanda ayrı ayrı o katmana özel olan sargıları yada zarfları, ilgili her katmanda ayrı ayrı açıldıkça üst katmanlara iletilir (decapsulation). Bir katman ancak kendisine ait zarfı açabilir, bir üstündeki katmana ait zarfı açamaz. Aynı şekilde bir katman zarflama esnasında bir alt yada üst katman adına bu işlemi gerçekleştiremez.
Uygulama (Application) <----veri---> Uygulama (Application)
Sunum (Presentation) <----veri---> Sunum (Presentation)
Oturum (Session) <----veri---> Oturum (Session)
Taşıma (Transport) <- Segment-> Taşıma (Transport)
Ağ (Network) <---Paket--> Ağ (Network)
Ver Bağı (Data Link) <---Çerceve-> Veri Bağı (Data Link)
Fiziksel (Physical) <----- Bit-----> Fiziksel (Physical)