| Merhaba Arkadaşlar, Uzun zamandır, CETURK'un vizyonunda bulunan "Microsoft(c) İşletim Sistemleri dışındaki İşletim Sistemlerine destek" biraz geri planda kalmıştı. Ancak bu konudaki eksikliği gidermek için kolları sıvayarak, "GNU/Linux" ile ilgili bir yazı dizisine başlıyorum. Öncelikle sizi uyarayım "Windows - Linux Karşılaştırması" yapmayacağım. Herşeyden önce "GNU/Linux nasıl bir İS dir" sorusunu cevaplayarak başlamak istiyorum. Linux, 1991 yılında kendi işimi kendim yaparım felsefesi ile Fin'li bir genc olan Linus Torvalds tarafından yazılmaya başlamıştır. O günden bu güne kadar da milyonlarca gönüllü tarafından geliştirlmektedir. Bir çok işletim sisteminin aksine açık kaynak kodlu - Serbest bir yazılımdır. Burada ki kasıt, "GPL" kısa adlı "Genel kamu Lisansı" ile belirlenmiş temel ilkeler içerisinde size ve halka ait olmasıdır. Normalde bir yazılımı aldığınızda bu yazılım ile sadece "KULLANMA" hakkına sahip olmuşsunuzdur. Bu hakkınızı başkasına devretmeni,z bile yasaktır. Şimdide bir otomobil satın aldığınızı düşünün - bozulduğunda kaputu açmaya, canınız sıkıldığında koltukları değiştirmeye ve ya paraya ihtiyacınız olduğunda başkasına satmaya hakkınız bulunmuyor. Bana hiç iç açıcı gelmedi doğrusu. Ticari yazılımların bir çoğu bu şartlarla size sunulur. İşte GPL ile bu can sıkıcı sınırlarından kurtulabiliyoruz. Neyse bu başka bir yazının konusu. Bu konu ile ilgileniyorsanız www.freesoftware.org adresine uğrayabilirsiniz. Şimdilik teknik konulara dönelim. Bunlar bazıları için sıkıcı olabilir. Linux'un açık kaynak kodlu olduğunu daha önce belirtmiştim. Bu da istediğiniz anda kaynak kodları inceleme ve değiştirme şansına sahipsiniz demektir. Tabii Koskoca bir işletim sisteminin kaynak kodunun içine girmek sizi korkutuyor olabilir. Bu konuya daha sonra gelicem ama kısaca üzerinden geçmek istiyorum. Linux kaynak kodu bilgisayarlar sistemleri ile ilgili neredeyse herşeyi içermesi dışında bir çok açıdan, sizin yazdığınız "Merhaba Dünya" programından farklı değildir. Örnek vermek gerekirse: #AX 11FC MVA1D #BZ 12CF LXYDA :) Şaka tabi ki böyle saçma şeyler değil. Burada anlatmak istediğim Linux kaynak kodlarına baktığınızda kötü, göz boyayıcı hacker filmlerinde gördüğünüz anlamsız kodlara benzer şeyler görmeyeceğiniz. Aslında linux kaynak kodları şunlara benzer: #include <linux/kernel.h> #include <linux/mm.h> .... struct taskstruct *pidhash[PIDHASH_SZ]; for (a=0; a<10; a++) { ..... Bu kodlardan bir kısmı Linux kaynak kodu içinde geçiyor bir kısmı ise tamamen düzmece. Bunlardan başka linux işletim sistemi olarak ne tür teknik yeteneklere sahip bu konuya gelmek gerekiyor. Linux işletim sistemi basit olarak çok kullanıcılı, çok görevli bir işletim sistemidir. İşletim sistemleri ile ilglenmiş olanlarınız ya da ders olarak görmüş olanlarınız ne dediğimi tam olarak anlamış olabirler. Ama ya anlamayanlar? Biraz onlar için konuyu açmam gerektiğini düşünüyorum. Çok kullanıcılı sistem ya da Çok görevli sistem nedir? Çok kullanıcılı sistem adından da kolaylıkla anlaşılacağı gibi birden fazla kullanıcının sistemi aynı anda ve/ veya farklı anlarda kullanabilmesine izin veren sistemdir. Bu durumda en basit durum olarak evinizde kuracağınız sistemde anneniz, babanız kardeşleriniz ve hatta arkadaşlarınızın sizin çalışmalarınızı engellemeden aynı bilgisayar sistemini kullanmasını sağlayabilirsiniz. İsterseniz Anne ve babanızın gizli dosyalarınıza asla ulaşamamasını, kardeşinizin de cd sürücünüzü kullanamamasını sağlayabilirsiniz.Tabii bu durumu daha geniş tutarsak uygun bir sunucu sistemi kurarak bir çok aptal terminalin, bu sunucu sayesinde kendinden beklenemeycek işlemleri yapabilmesini sağlayabilirsiniz.Doğal olarak bu tür kullanımlar sadece çok kullanıcılı olmak ile sağlanamayabilir. Bu tür sistemlerde aynı anda birden fazla işlemi yapabilme yeteneği de gerekebilir. Bu tür aynı anda birden fazla işlemi yapabilme yeteneğine de "Çok görevlilik" diyoruz. Bunların yanısıra Linux bir çok işlemci ailesine destek veriyor. Hatta mikrolinux isimli bir proje ile mikrodenetleyiciler üzerinde bile çalışabiliyor. Bu işlemci ailelerini hızlıca geçersek: i386 Ailesi, DEC ALPHAlar, ARMlar, MC 68000 serileri (Atari ve Amigalar gibi mimariler), SUN SPARC'lar sayılabilir. Tabii bu hızlıca geçilen bir liste. Bunlar Linux'un dışarıdan en kolayca görülebilen yanları. Şimdi konuyu daha da sıkıcı hale getireceğim. Linux'un iç yapısı hakkında bilgilenmek istemeyen arkadaşlar daha ileride ki daha zevkli olan konulara geçebilirler. Linux günümüzde ki bir UNIX işletim sisteminin sağlaması gereken her türlü özelliğe sahiptir. Bunlardan bazıları şunlardır: Gerçek çok görevlilik, sanal bellek, paylaşılan dinamik kütüphaneler, ihtiyaç anında belleğe aktarma (demand loading), paylaşılan yazma-üzerine-kopyalanan (copy-on-write) çalıştırılabilir dosyalar, düzgün bellek yönetimi ve TCP/IP ağ işlemleri. Aslında bunları tek tek açıklamaya kalkarsam işletim sistemleri üzerine bir döküman çıkar. Kısaca geçeceğim; gerçek çok görevlilik : Gerçek bir çok görevlilik uygulaması, görevleri farklı işlemciler üzerine dağıtmak da mümkündür. Sanal bellek: Çalıştırılan programların gerçek fiziksel bellek miktarından daha fazla olduğuna inandırmanın bir yolu. Paylaşılan dinamik kütühaneler: Bir çok programda kullanılan program guruplarının tek sefer belleğe yüklenmesini sağlayan bir teknloji. İhtiyaç anında belleğe aktarma: Özellikle yazılım kütüphanelerinin herhangi bir çalışma anında belleğe yüklenebilmesine izin veren teknoloji. Paylaşılan yazma-üzerine-kopyalanan çalıştırılabilir dosyalar: Aynı programın bir den fazla çalıştırılması durumunda aynı bellek alanını kullanılabilmesini sağlayan teknolojidir. Eğer kod üzerinde değişiklikler boy gösterirse, kod farklı alana kopyalanır. Düzgün Bellek Yönetimi: Belleğin gerektiğinde gerektiği kadar kullanılması ve kullanılması gereksiz hale gelen belleğin sisteme geri kazandırılması. TCP/IP: Anlatmaya gerek duymuyorum. Internet bağlantısı olmadan bir bilgisayar ne işe yarar? (ve şu an öyle bir bilgisayar kullanıyorum :'( ) Linux bunları yapabilen, monolitic bir işletim sistemidir. Monolitic işletim sistemlerinde her şeyi yapan tek bir çekirdek vardır. Ancak Linux yavaş yavaş mikrokernel yapısına doğru kaymakta denebilir. Mikro Kernel mimarisinde ise her şey birbirinden bağımsız çekirdek parçaları tarafından yerine getirilir. Mikrokernel bu parçaların (modüller denebilir) aralarındaki ilişkileri sağlayan yazılımdır. Galiba biraz daha devam edersem linux çekirdeğinin veri yapılarına gireceğim. Sanırm daha zevkli sayılan yüzeysel konulara geçmem gerek. Yoksa buraya kadar okuma azmindeki son bir iki kişiyi de kaybedeceğim. Uzunca da oldu sanırım. E yazı dizisi lduğuna göre bir mola vermek gerek. İsterseniz değinmem gerektiğini düşündüğünüz konularda ya da yanlışlık yapmış olabileceğim konularda ve ya herhangi bir amaç ile bana özel mesaj veya e-posta gönderebilirsiniz. Teşekkürler. |