Linux2.4 ü kullandığımız günler daha dün gibi olsada kernel geliştirme grubu Linux2.6'yı duyurdu. Bu yazı i386 ağırlıklı olarak Linux2.6'nın yeniliklerini anlatıyor. Burada dikkat edilmesi gereken nokta, "yeni" olarak tabir edilen bazı şeylerin , resmi veya resmi olmayan dağıtımcılar tarafından kernel2.4'e uyarlanmış olabileceğidir. Quaalude arkadaşımızın çevirdiği bu yazıda, Kernel 2.6 sihirli dünyasına kısa bir bakış bulabilirsiniz. Gerçekten güzel bir yazı.
Linux2.6'nın Harikalar Dünyası
Linux2.4 ü kullandığımız günler daha dün gibi olsada kernel geliştirme grubu Linux2.6'yı duyurdu. Bu yazı i386 ağırlıklı olarak Linux2.6'nın yeniliklerini anlatıyor. Burada dikkat edilmesi gereken nokta, "yeni" olarak tabir edilen bazı şeylerin , resmi veya resmi olmayan dağıtımcılar tarafından kernel2.4'e uyarlanmış olabileceğidir.
Linux'un tarihi
Linux kernel projesi Linus Torvalds tarafından kendi 386 sında çalışacak Minix benzeri bir OS yapmak için başlatıldı. (Linus proje için Freax adını istiyordu ama en son bu oldu). İlk resmi sürüm olan Linux1.0 , 94 Mart'ında çıktı ama sadece tek işlemcili 386lar için desteği vardı.Bir yıl sonra diğer platformları (özellikle : Alpha , Sparc ve Mips) destekleyen Linux1.2 sürümü çıktı fakat hala tek işlemcili modeller için desteği vardı.
Haziran 1996'da birkaç platformu daha destekleyen ama daha da önemlisi Linux'u çok işlemcili makine(SMP) pazarına sokan Linux2.0 çıktı. 2.0 dan sonra göreceli olarak yavaş çıkan her sürüm (1999 Ocak 2.2 , 2001 Ocak 2.4) Linux'un yeni çıkan donanım ve sistemlere destek vermesini sağlarken ölçeklenebilirliğinide arttırıyordu. (Linux2.4 ayrıca ISA PnP , USB , PC Card gibi eklemeler ile Linux'u masaüstüne taşıyan kernel olarakta bilinir). 12/17/03 doğum tarihli Linux2.6 , küçük (PDA ve diğerleri) ve büyük sistemlere verdiği destekle önemli bir sıçrama noktasıdır.
Donanım Desteği
Linuxlu sistemlerin önemli özelliklerinden biri esneklikleri ve çok fazla donanımı desteklemeleridir. Bu belgenin, Linux'un PC tabanlı sistemlerde kullanımını açıklamak için hazırlanmış olmasından dolayı Linux2.6 'nın bu alanda getirdiği yeniliklere göz atacağız.
Küçülüyor-- Gömülü Sistemlerde Linux
En temel iki değişiklikten birisi uClinux projesinin kernele dahil edilmesidir. uClinux ( "you-see-Linux" veya Yunanca "mu" kelimesiyle) , mikrodenetçiler için Linux projesidir. Linux'un bu türevi zaten iyi bir donanım desteğine sahip , fakat resmi sürüme girişiyle bunun daha da genişleyeceğini söyleyebiliriz.
Bizlerin bildiği "normal" Linux sürümlerinin tersine , donanım kısıtlamalarından dolayı gömülü sistem(GS) uyarlamalarında (port) tüm özellikler mevcut değildir. Ana fark ise bu uyarlamaların MMU (memory management unit - bellek yönetim birimi)'yu desteklememesidir. Bellek yönetimi ve buna bağlı olan bazı özelliklerin olmamasına karşın bunlar multi-tasking OSlerdir(bellek yönetimi olmadan, bir işlem diğer bir işlemin verisini okuyabilir hatta bozabilir). Bu yüzden çok kullanıcılı sistemler için uygun olmasalarda PDA veya adanmış sistemler için mükemmel tercihlerdir.
Linux2.6 daki bu mimari iyileştirmeyi kelimelere dökmek zor ama şu ana kadarki tüm Linux sürümlerinin, Linus'un 80386sından bazı şeyleri miras aldığını söyleyebiliriz.
Hitachi H8/300 , Necv850 ve Motorola'nın m68k seriside dahil olmak üzere Linux2.6'nın desteklediği birçok GS işlemcisi mevcut. Motorola'nın sağladıkları, Palm1000'den PalmIII'e kadar işin arkasında olmalarından dolayı ortalama bir Linux kullanıcısına daha tanıdık. Diğer modellerin adları ise Motorola tarafından üretilen kartlar üzerindeki Dragonball ve ColdFire işlemcileri, Lineo , Arcturus diye uzayıp gidiyor.
MMUsuz m68k işlemcilerinin şu an desteklenmemeleri üzücü ama bu ve diğer eski işlemciler için desteğin , "hobi" projeleri tarafından çözüleceğine eminim.
uClinux'un bir parçası olmamasına karşın yeni Linux , Axis Communications'ın ETRAX CRISIS (Code Reduced Instruction Set - Kodu azaltılmış komut seti) işlemcisine de destek veriyor. (bu işlemci için de istek ilk olarak 2.4.0 sürümünde verilmişti , bu yüzden hatırlatılmayı hakediyor). Bu tip MMUlu işlemciler daha çok ağ aygıtlarında kullanılıyor. Bu işlemcilerin MMUsuz modelleri için destek kernel de verilmesede, dışarıdan bazı projelerle üstünde çalışılıyor.
Donanım desteğine ek olarak, gömülü işlemlerin ana kernele dahil edilmesi birkaç kazanım daha sağladı. Bu değişiklerin çoğu görünmeyen yerlrede olsada, artık bir sistemin swap olmadan kurulabilmesi gibi gelişmeler OSnin gücüne güç katıyor.
Büyüyor-- NUMA ve Bigger Iron
İkinci temel değişiklik ise diğer yönde oldu : Linux'u çok çok daha büyük sistemlerde kullanabilmek. (Bunların bazıları i386 tabanlı , bazıları değil). Bu alandaki en büyük değişim NUMA (Non-Uniform Memory Access - Çok Şekilli Bellek Erişimi) sunucu desteği oldu. NUMA , SMPlerin bir adım ötesi ve verimlilik alanında çok işlemcili sistemlerde büyük bir adımı temsil ediyor.
Şu anki çok işlemcili sistemler, tek işlemcili kardeşlerinin sahip oldukları, özellikle tüm işlemcilere tek bir bellek havuzundan hizmet sunulması gibi, limitlere sahipler. SMPlerde , işlemciler arasında tek veriyolu için olan rekabetten dolayı büyük bir darboğaz oluşuyor. NUMA , bazı işlemcilerin bazı belleklere yakın , bazılarına uzak olması mantığıyla bu sorunu çözüyor. Bunu anlamanın kolay bir yolu, sisteminizi her biri CPU, bellek ve diğer bileşenlerden oluşan kartlardan oluşturduğunuzu
düşünmenizdir. Bu kartlar birbirleriyle iletişime geçebilirler ama normal olarak, bir CPU'nun yerel
belleğe ulaşması başka bir karttaki belleğe ulaşmasından daha hızlı olur.
NUMA'yı donanımların alt seviyelerindeki çok sıkı bir zincire benzetebiliriz.
Yeni NUMA makineleri düzgün olarak destekleyebilmek , yeni modeli daha verimli kılabilmek amacıyla Linux'un bazı yönleri adapte edilmeliydi. İlk olarak, kernelin bir işlemci veya bir bellek havuzunun diğer bileşenlere göre konumunu hesaplayabilmesi için içsel bir topoloji APIsi oluşturuldu.
Böylece Linux işlem zamanlayıcısı, bu ilişkileri anlayarak kaynakların en etkili şekilde kullanılmasını sağlamak için işlemleri dizebiliyor. Ayrıca birçok NUMA makinesi, bellekler arasındaki birimlerde boşluklar olacak şekilde üretilmiştir. Yeni kernel bu boşluklarla da ilgileniyor.
Bu yüksek performanslı makineleri destekleyebilmek için daha birçok iç değişiklik yapıldı ve burası, kernelin genişlemesi için başlı başına bir alan gibi gözüküyor. Ama bununla birlikte kaynakların en etkili şekilde kullanılması konusu, Linux'un çok hızlı geliştiği ama daha, çok iş yapılması gereken bir alan. Gelecek yıl içinde, yüksek performanslı sistem desteği için Linux'ta birçok değişim olmasını bekleyebiliriz.
Altmimari Desteği
Yukarıdaki ikisi kadar önemli olmasada , yeni donanımlar için Linux , "altmimari desteği" adında yeni bir konsept duyurdu. Önceden, Linux aynı tipte donanım ve işlemcinin birlikte kullanılacağı varsayımıyla hareket ederdi(i386 işlemcilerin sadece PC/AT sunucularda kullanılmış olması gibi).
Linux2.4 te bu varsayım ; Intel chipli bir sistem için destek verilmesiyle , i386 ailesi için kalktı. (Gerçekte daha başka sistemler için çok önceleri kalktı. Örnek olarak m68k uzun süredir Amiga , Macintosh ve diğer platformları da destekliyor). Linux2.6'da bu alandaki en önemli değişim, bu özellik ve konseptlerin standardizasyonu.
Standartlaşma ile birlikte , ayrılması gerekli parçaların daha iyi ayrılabilmesi için , tüm mimariler bunu daha uygun biçimde ele alabilir.
Bu yeni standardizasyonla i386 destekli iki yeni sistem daha geliyor.İlki NCR'ın , 32x e kadar 486-686 destekleyen SMPli, Voyager mimarisi. Bu mimariye sahip sistemlerin satışı göreceli olarak az ve tüm makineleri için şu an destek mevcut değil(En eskilerinin desteği yok).İkinci mimari ise daha yaygın olan , NEC tarafından Japon pazarı için geliştirilen ve daha geniş kullanımlı PC-9800 platformu. Tek 8086 ya sahip sistem , Penitum sınıfı işlemcileri ve SMPyi destekler hale gelinceye kadar geliştirildi (Linux'un desteği 386 ve üstü için). Çok da bilinmemek üzere , Windows95'e kadar bazı Microsoft
ürünleri de bu sistemler için uyarlandı. Bu serinin üretimi , üreticinin daha "normal" sistemlere olan sempatisinden dolayı durduruldu.
Linux'un bu "biraz farklı" makinelere olan desteğinin biçimlendirilmesi ; adanmış sunucular, depolama sistemleri ve diğer endüstri tabanlı işlemcilere daha kolay uyarlanabilmesi sağlıyor. Daha kesin olabilmek için ayrımların çok ileri götürülmemesi gerekir. Bu altmimariler , sistemin düşük seviyedeki bileşenlerinin (IRQ dağıtımı gibi) ,az veya çok ,değişik olmasından dolayı ayrılmıştır.
Bu, sistemin bir i386dan farkının göreceli olarak birkaç küçük sürücüden oluştuğu X-Box gibi sistemlerde Linux çalıştırmaktan çok farklıdır. Bu yüzden X-Box desteği bir altsistem olmamalıdır.
Hyperthreading
Linux2.6 daki bir diğer önemli donanım desteği de hyperthreading adındaki ve şu an sadece yeni P4lerde olup bir işlemcinin kendini çok işlemci (donanım seviyesinde) olarak tanıtmasını sağlayan bir sistemdir. Bazı durumlarda performans artışı sağlamasına rağmen , zamanlamada karışıklık ve diğer bazı sorunları gündeme getirir. Bu desteğin anahtarı , kernelin sanal veya gerçek işlemciler üstündeki yükü nasıl ayarlaması gerektiğini bilmesidir.
Önceki sürümlerde , işlem yükünü bir bütün olarak etkileyememesinden dolayı kernel , işlemciyi aşırı yük altına rahatlıkla sokabilirdi. Bu konu hakkında söylenmesi gerek önemli birşeyde Linux'un bu desteği verme şekliyle piyasadaki benzerlerinin önünde olmasıdır.(Windows 2000 sunucuları sahte işlemcileri görebilir fakat bunları
sanal olarak tanıyamaz.
Bu özelliği kullanabilmek için ek CPU lisansları almanız gerekir. Microsoft'un bu özelliği ilk olarak tam desteklediği sürüm Windows XP dir)
Linux'un İçinde Ölçeklenebilirlik Gelişmeleri
NUMA ve hyperthreading'e ek olarak Linux2.6, besin zincirinin en üstünde olan Intel sunucuları içinde bazı değişikliklere sahip. İlk ve şimdiye kadarkilerin en önemlisi olarak , yeni 32bit x86 sistemlerde sayfalanmış modda 64GB a kadar ram kullanılabilmesini sağlayan Intel'in PAE (Physical Address Extension - Fiziksel Adres Genişlemesi)'sine desteği sayabiliriz. APIC desteğindeki gelişmelere bağlı olarak , çok işlemcili sistemlerde IRQ yönetimide gözle görülür biçimde geliştirilmiş.
Yeni özellikleri desteklerken , iç sınırlar da mümkün olduğunca genişletilmiş. Örnek olarak , bir Linux sistemindeki kullanıcı ve grup toplamı 65,000 den 4 milyara çıkarılmış (16-bit ten 32-bit e). Aynı şekilde, yoğun ve uzun süre çalışan sistmlerde program başlatma performansını arttıracak şekilde , PID (process ID - işlem numarası) sayısıda 32,000 den 1 milyara çıkarılmış. En fazla açılabilen dosya sayısı arttırılmış olmasada , bunun kernel tarafından otomatik olarak belirlenebilmesi sağlanmış. Son olarak Linux2.6 , i386 gibi 32-bit platformlarda bile 64-bit blok aygıt (block device) desteğini arttırmış. Bu , normal donanımlar üstündeki dosya sistemlerinin 16TB ye kadar çıkabileceği anlamına geliyor.
Diğer bir gelişme ise , kernelin sadece daha çok tip aygıtı değil , aynı tip aygıttan daha çok sayıda desteklemesidir. Tüm Linuxlarda , kullanıcı ve programlar bilgisayara bağlı donanımlarla /dev dizini altındaki aygıt düğümleriyle (device node) iletişim kurar. Bu düğümler 255 tane asli (genellikle , bir aygıt bir veya daha fazla düğüm alır) , ve 255 ikincil (aynı tip donanımlar) numara alır. Örneğin ,
/dev/sda2 aygıtı , ilk SCSI aygıtındaki ikinci bölüme aittir.
Asli numarası , tüm SCSI aygıtları için ortak olan 8 dir. Ayrıca ikinci bölümü ifade etmek için 2 ikincil sayısını alır. Değişik aygıtlar bu asli ve ikincil sayıları değişik yöntemlerle alırlar. Bu yüzden bir Linux sistemine kaç tane donanım bağlanabileceğini söylemek zor. Ne yazıkki bu sistem , aynı tip ve 255'ten daha çok aygıtın bağlı
olabileceği mesela depolama sistemleri gibi büyük sistemlerde çökebiliyor. Linux2.6 da bu sayılar 4,095 asli ve 1 milyondan daha fazla ikincil sayı olarak arttırılmış. Bu destek , şu anki yüksek performanslı sistemler için bile fazla.
İletişim ve Cevaplama
Büyümeye ek olarak , yeni sürümdeki diğer bir öncelikte sistemi daha çabuk cevap verebilir hale
getirmek. Bu sadece masaüstü kullanıcısı (herşeyin daha hızlı çalışmasını isteyen) için değil, tam
bir kesinlik gerektiren kritik uygulamalar için de önemlidir. Linux2.6 , işlemlerin tahmin edilen
zamanlarda gerçekleşebilmesi için çok sıkı kısıtlamalara sahip olan gerçek bir RTOS olmayacak
fakat cevap süresindeki iyileştirmeler tüm kullanıcıları memnun edecek.(RTOS fonksiyonunu
kazandırmak için bazı yamalar mevcut. Bu projelerin sonraki sürümlerde resmileştirilmesi
düşünülebilir)
Linux2.6'daki bir diğer önemli gelişmede kernelin artık ön-boşaltım (pre-empty) yapabilmesi. Önceki
sürümlerin tümünde , kernel bir işlem yaparken araya girilemezdi ( SMP sistemlerde , her işlemci
kendi başına mantığıyla doğru). Linux2.6 da artık kernel işlem ortasında durdurulabiliyor böylece
diğer programlar , daha düşük seviye ve arkaplandaki işlemler devam ederken çalışabiliyorlar. Tabii,
işlemin kesilemeyeceği bazı durumlar da mevcut. Gerçekte kullanıcıların büyük bir bölümü bu
gecikmeleri hissetmez. Buna rağmen böylece , kullanıcı bilgi girişi gibi interaktif işlemlerde sistem
çok yüklü olsa bile bir hızlanma görülecek.
Linux'un giriş/çıkış (Input/Output - I/O) altsistemi de her türlü isteğe daha iyi yanıt verebilmek için
büyük değişimler geçirdi. Bu değişimlere, işlemlerin hangi aygıta ne zaman ulaşacaklarını ileten I/O
zamanlayıcısının yeniden yazımı da dahil. Yeni kod , verimli bir okumanın gerçekleşmesini
sağlayan eski kod ile birlikte işlemlerin uzun süre sırada beklememesini garanti altına alıyor.
Yeni "futex" (Fast User-Space Mutexes) özelliğide (eğer kullanılırsa) programların daha hızlı cevap
vermelerini sağlıyor. Futexler , işlem ve threadlerin olayları dizerek kaynaklar üstündeki rekabeti
azaltmasını amaçlayan yöntemlerdir. Geleneksel mutex'in tersine , bu konsept kısmen kernele
bağımlıdır(sadece rekabet anlarında). Ayrıca uygulama ve threadlere öncelik seviyeleri vererek ,
yüksek öncelikli işlemin kaynaklara daha önce ulaşmasını sağlıyor. Bir programın bekleyen
işlemleri dizmesine izin vererek , kritik uygulamalardaki işlemler daha hızlı olabilir.
Yukarıdakilere ek olarak , birçok şekilde performansın arttırılmasını ve cevap sürelerinin
kısaltılmasını sağlayan küçük değişiklerde var. Bunlar arasında "Big Kernel Lock" (Büyük Kernel
Kilidi - Linux'un ilk günlerinde çok işlemcili sistemler için kullanılan kötü yapılı bir kilit)'ın
kaldırılması , dosya sistemlerinde okuma , yazma ve küçük dosyaların ele alınma şekillerinin
değiştirilmesi gibi şeylerde var.
Diğer Gelişmeler
Linux, Açık Kaynak hareketinin genelinde olduğu gibi , açık kaynağın nimetleri için her zaman bir
öncü olmuştur. 2.6 daki bir diğer önemli değişiklik ise NPTL (Native POSIX Thread Library) en üstte
çalışacak şekilde , kernelin içsel thread altyapısının tekrar yazılmasıdır. Bu , Pentium Pro gibi ağır
şekilde threadli sistemler için bir performans artışı sağlayabilir , ayrıca "şirket" piyasasındaki birçok
üreticide bu değişim için bağırıyorlardı. ( Aslında Redhat bunu Linux2.4 e uyarlayarak RH9 ve
Advanced Server 3.0 ile dağıtmaya çoktan başladı). Bu değişim ; thread grupları , özel threadler için
bellek , POSIX tipi sinyaller gibi birçok yeni konsepti içeriyor. Dezavantajlarından biri ise bu sistemi
desteklemeyen bazı uygulamaların (Sun Java'nın bazı sürümleri gibi) güvendikleri eski Linuxçuların
da bu yeni desteğe sahip olabilmesi. Bu kazanımların maliyetleri düşürmesiyle birlikte (ve çok fazla
büyük oyuncunun olmasıyla)önemli uygulamaların bunu , yeni kernel çıkmadan çok önce
destekleyecekleri açık.
Modül Altsistemi ve Birleşik Aygıt Modeli
Modern OSlerde , sayısız iç ve dış veriyolu tipiyle ve çok fazla üreticiden çok fazla aygıtla uğraşılma
ihtiyacı ortaya çıkınca , aygıtları ele alma yöntemleride yavaş yavaş değişti. Bu yüzden , yeni
kernelin modül kurucusunda ve aygıtların ele alınma yönemlerinde değişiklikler olduğunu görmek bir
süpriz olmaz. Değişimler , sadece makyaj seviyesinden (sürücü modülleri "kernel objesi" anlamında
artık ".o" yerine ".ko" uzantısına sahip) bütünleşik aygıt modelinin yeni baştan gözden geçirilmesine
kadar uzanıyor. Bu değişimlerin hepsi kararlılığı arttırıcı ve önceki sürümlerin kısıtlamalarını
kaldırıcı yönde.
Modül altsisteminde kararlılığı arttıran bazı değişiklikler yapılmış. Genelllikle çökmelere sebep
olan , bir modülün kaldırıldığı sırada hala kullanılması gibi sorunların azaltılması için modül
kaldırılması işlemi değişikliğe uğramış. Bu sorunun risk edilemeyeceği sistemlerde modülleri artık
toplu olarak kaldırmak bile mümkün. Ayrıca , modülün hangi donanım için kullanıldığını
belirtmesini sağlayabilmek için çok büyük bir emek harcandı. Önceki sürümlerde , modül hangi
aygıtları desteklediğini bilirdi , fakat bu bilgi modülün dışında mevcut değildi. Bu değişiklik ,
mesela RH'ın "kudzu"su gibi donanım yönetimi yazılımlarının tanıyamadığı aygıtlarda daha
akıllıca seçimler yapmasını sağlayabilecek. Tabii sürücünün hangi donanımı desteklediği bilindiği
durumlarda , modül o aygıt için zorlanabilecek.
Modül yükleme sisteminin dışında , aygıt modeli de kendi başına önemli değişimler geçirdi. Donanım
için gerekli kaynakların ayrılması için uğraşan modül yükleyicisinden ayrı olarak aygıt modeli ,
sistemdeki tüm donanımdan sorumlu olan ayrı bir konsept. 2.2 ve öncesinde Linux , bütünleşik aygıt
modeli için , birçok bilginin modül içinde bırakılmasına izin vererek , en az desteği sağlıyordu. Bu iyi
çalıştı ama günümüz donanımlarının tüm özelliklerini kullanabilmek için (özellikle ACPI ) sistemin ,
aygıtın sadece hangi kaynağı kullandığı bilgisinden daha çoğuna ihtiyacı var: hangi veriyoluna
bağlı , hangi altsistemlere sahip , güç durumu nasıl , rekabet durumunda tekrar ayarlanabilir mi gibi
şeyler, hatta modülü yüklenmemiş aygıtlar hakkında bile bilgi sahibi olabilmesi lazım. Linux2.4 PCI ,
PC Card , ISA Pnp veriyollarını ortak arabirimli bir aygıt yapısına bağlayan ilk kernel oldu.
Linux2.6 , yeni kernel objesi (kobject) altsistemiyle sadece tüm aygıtları bir sisteme toplamakla
kalmıyor , aynı zamanda referans sayımı , güç yönetimi ve kullanıcı alanı uzantısı gibi küçük
ayrıntılılar içinde merkezi bir arabirim sağlıyor.
Çok fazla sayıda donanım bilgisinin kernele girmesiyle birlite Linux , daha derin bilgi gerektiren
günümüz laptop ve masaüstü sistemlerine daha iyi destek veren bir hale geldi. En iyi görülen
uygulaması , gittikçe artan PC Cardları , USB ve Firewire aygıtları ve hot plug PCI gibi "hot plug"
aygıtlar için destektir. Bu kadar eskilere bakmak zor olsada , Linux'un 2.2 ye kadar bu tip aygıtlara
gerçekten destek verildiğini söylemek zor. Bu günlerde "hot-plug" aygıtların bir istisna değilde normal
hale gelmesi ile yeni aygıt altyapısının bir hot-plug aygıtla eski aygıtları aynı şekilde ele alması
örtüşüyor. Açılış zamanında algılanan bir aygıt ile açıldıktan sonra algılanan bir aygıtın kerel
altyapısı çok değişik olmasada , takılabilen aygıtlarla ilgilenen altyapı daha da basitleştirilmiş. Bu
yeni altyapıyla gelen bir diğer sürücü ise güç yönetimi için gelişmiş destekle ilgili. Son yıllardaki güç
yönetimi standardı olan ACPI (Advanced COnfiguration and Power Interface - Gelişmiş Ayarlama ve
Güç Arabirimi), kernelin bir önceki sürümünde ana hatlarıyla desteklendi. Eski APM (Advanced
Power Management - Gelişmiş Güç Yönetimi) 'nin tersine , bu sitemle açılan OSler tüm uyumlu
aygıtlara güç durumlarını değiştirmeleri gerektiği mesajını teker teker iletmek durumundalar.
Merkezi bir donanımsal algılama olmadan , kernelin hangi sırada ve hangi aygıtları kordine etmesi
gerektiğini bilmesi imkansız. Bunlar iki açık örnek olmakla birlikte bu yöntemden yararlanacak daha
birçok alan (donanım denetleme ve gözetleme) olduğu aşikar.
Yeni merkezi sistemin son ama en önemli dallarından biri "sysfs" adındaki yeni dosya sisteminin
(işlemler için "/proc" , aygıtlar için "devfs" ve UNIX98 pseudo-terminalleri için "devpts") yaratılmış
olmasıdır. Yeni dosya sistemi (/sys ye bağlanmış olmalı), kernelin aygıtları nasıl gördüğünü çok az
bir farkla bize aktarıyor. Bu görünüm ; aygıtın adı , IRQ ve DMA kaynakları ,güç durumu gibi bilinen
özelliklerini kapsıyor. Bununla birlikte , sistemin karışıklık yaratabilecek bir yönünü de "/proc/sys" i
kullanan birçok aygıtın yeni dosya sistemine aktarımı oluşturuyor. Bu değişiklik kesin olarak
yapılmadı bu yüzden bir süre daha geliştirme aşamasında kalabilir.
Sistem Donanımı Desteği
Linux ,popüler bir işletim sistemi haline gelirken kernelin her yeni sürümü , eskisine oranla donanım
desteği konusunda daha da ilerledi - hem yeni ( 2.4 deki usb gibi) hemde eski (2.2 deki McA)
teknolojiler açısından. 2.6 ya geldiğimizde linux'un desteklemediği donanımlar desteklediklerine göre
daha az durumda. Fethedilecek birkaç küçük donanım bölgesi daha kaldı. Bu yüzden , i386 donanım
iyileştirmeler daha fazla destekten çok hız için yapıldı.
İçsel Aygıtlar
İşlemciler kadar önemli mi olduğu tartışılsada , sistemi birbirine bağlayan şeyler veriyollarıdır. PC
dünyası , ISA dan başlayan ve, modern seri ve kablosuz yollara kadarki hiçbir zamanda veriyolu
kıtlığı çekmedi. Linux , aygıtlarla birlikte sıkça kullanılan teknolojilere çok hızlı adapte olsada ,
aynı hızı nispeten az popüler teknolojilerde gösteremedi.
Linux'un iç donanım desteği ise gerçekten geniş. Linux'un saklambaç oynadığı teknolojilere örnek
olarak eski ISA (Industry Standard Architecture - Endüstri Standardı Mimari) PnP sayılabilir. 2.4
sürümüne kadar Pnp ye herhangi bir destek verilmedi. Bu destek, yeni kernelle birlikte tam Pnp
BIOSu desteği , aygıt ismi veritabanı ve diğer uyumluluk değişimleri olarak geldi. Bunların
gösterdiği şey , Linux'un artık gerçek bir Pnp Os olup , uygun BIOSlarda da böyle ayarlanabileceğidir.
MCA (Microchannel Architecture - Mikrokanal mimarisi) ve EISA (extended ISA - genişletilmiş ISA)
gibi diğer teknolojilerde yeni aygıt modeline entegre edildi. Yakın geçmişle ilgili olarak Linux2.6 ,
PCI (Peripheral Component Interconnect - Bileşen Unsur Bağı) altsistemine Hot-Plug PCI , güç
yönetimi ve çoklu AGP (Accelerated Graphics Ports - Hızlandırılmış Grafik Yolu) de dahil olmak
üzere birçok yenilik getirdi. Son olarak , gerçek veriyollarına ek olarak Linux'a, bunlarla birebir
yapıda olan içsel veriyolları eklendi.Örnek olarak, bir PCde bunlar ; seri , paralel ve PS/2 portları --
varolan fakat gerçek veriyolu sayılmayan-- olabilir. Bu destek bazı platformlarda daha karışık
işlemlere (mesela bellenimi(firmware)sorgulamak) ihtiyaç duyabilir fakat genel olarak bu ,tüm
donanımların tek bir sürücü paradigması içine alınabilmesi için bir kılıf.
Dış Aygıtlar
İçsel aygıt veriyolları son geliştirmelerde çok fazla değişmiş olmasalarda bunu , yepyeni dış aygıtlar
için söylemek zor. Bu alandaki en önemli değişim USB2.0 olarak sayılabilir. "yüksek hızlı" olarak
tabir edilen bu aygıtlar 12 mbit/sec lik eski USB veriyolunun karşısında , 480 mbit/sec lik veriyolunu
destekliyorlar. Buna bağlı olarak ortaya çıkan ve USB aygıtların birbirlerine bağlanabilmeleri için
(Mesela arada PC olmadan bir kamera ve printerı bağlamak için) noktadan noktaya bir sistemle
çalışan USB On-The-Go (veya USB OTG) standardı ise Linux2.6da desteklenmiyor(Yamalar mevcut
ama resmi sürüme henüz dahil edilmedi). Aygıt desteğine ek olarak , ele alınma yöntemleride
güncelleştirilerek , birden çok aynı tip aygıtın aynı anda ulaşılabilir olması sağlandı. Tüm bu büyük
değişimler yanında Linux kullanıcılarının USBye desteğini arttırmak için , geliştirme aşamasında
basitliğe , kararlılığa ve uyumluluğa özel önem verildi.
Diğer taraftan Linux2.6 , bir makinenin USB host yerine USB aygıtı olarak davranabilmesini sağlıyor.
Bu , örnek olarak , Linux yüklü PDAların PC ye kolayca bağlanabilmesini sağlıyor. Bu destek çok yeni
ama Linux'un gömülü sistemlere girebilmesi için önemli bir adım.
Kablosuz Aygıtlar
Kablosuz teknoloji geçen yıllar boyunca insanlar arasında gerçekten sevildi. Birkaç yıl içinde
kabloların (güç hariç..belki) geçmişe ait anılar haline geleceği anlaşılıyor. Kablosuz aygıtlar , hem
ağ aygıtları (en yaygın olanlar) hemde PDA gibi aygıtları kapsıyor.
Kablosuz ağ alanına baktığımızda , Linux2.6'nın geliştirilmesi sırasında uzun-menzilli -- amatör
radyo aygıtlarında AX.25 gibi-- ve kısa menzilli -- genellikle 802.11 fakat daha eski protokoller
mevcut-- aygıtların güncellendiğini görürüz. En büyük değişim kısa-menzilli sistemlerin önemli
parçaları ve bu aygıtlardaki protokollerin tek API'ye bağlanması olmuştur. Bu birleşme bazı ufak
uyuşmazlıkları ortadan kaldırıp genel bir kalıp oluşturarak , Linux'un bu sistemlere olan desteğini
güçlendirmiştir. Standardizasyona ek olarak Linux , durum değişimlerini -- "roaming" durumundaki
bir aygıt gibi -- algılayabilmek ve kablosuz aygıtlardaki periyodik gecikmeleri daha iyi kontrol
edebilmek gibi bazı iyileştirmelere sahip.
Son sürümden beri , IrDA da güç yönetimi ve yeni kernel sürücü modeline entegre edilmesi gibi
ilerlemeler kaydedildi. Bununla birlikte asıl ilerlemeler Bluetooth alanında yapıldı. Bluetooth ,
heryerde kullanılmak için yaratılan bir protokol ve PDAlardan cep telefonlarına , yazıcılara hatta
otomobil parçalarına kadar uygulama alanları var. Bu protokol , çok kayıplı ses programları için
olan SCO (Synchronous Connection Oriented - simultane bağlantı tabanlı) ile yeniden iletim gibi
özellikleri olan ve daha sağlıklı bağlantılar yapılabilmesi için L2CAP (Logical Link Control and
Adaptation Protocol - Mantıksal bağlantı kontrolü ve adaptasyonu protokolü) , veri bağlantı
çeşitlerinden oluşur. L2CAP protokolü birçok alt-protokolüde (noktadan noktaya ağlar için RFCOMM
ve , Ethernet tipi ağlar için BNEP gibi) destekler. Linux'un Bluetooth'a olan desteği artıyor ve
insanlar bu tip aygıtlardan daha çok kullandıkça desteğinde en üst seviyeye çıkacağını düşünebiliriz.
Ayrıca Bluetooth'a ilk desteğin 2.4'ün sonraki sürümlerinde verildiğinide belirtmek gerek.
Blok Aygıt Desteği
Depolama Veriyolları
IDE/ATA (Integrated Drive Electronics/Advanced Technology Attachment - Entegre Sürücü Elektroniği/
Gelişmiş Teknoloji Eklemesi)ve SCSI(Small Computer System Interface - Küçük Bilgisayar Sistemi
Arabirimi) gibi adanmış veriyolları , 2.6da güncelleştirildi. En önemli güncelleştirmeler birçok
ölçekleme problemini gidermek için baştan yazılan IDE altsisteminde oldu. Örnek olarak , IDE/CDRW
sürücüleri artık direkt olarak IDE arabiriminden kullanılabiliyor (Önceden özel bir SCSI-taklit
sürücüsü kullanmak gerekiyordu).Ek olarak , 150MB/sec aktarım hızına sahip olan Seri-ATA (SATA)
desteği eklendi. SCSI cephesinde , daha geniş destek ve ölçeklenebilirlik etrafında toplanmış birçok
küçük geliştirme yapıldı. Eski sistemler için desteklerden biri Linux'un artık , aynı aygıtta 2 den
fazla LUN'a sahip olan SCSI-2 çokyollu aygıtlarına desteğini sayabiliriz ( SCSI-2 , SCSI 'nin 1994
yılında çıkmış eski bir sürümü).Bir diğer önemli değişimde Linux artık Windows'un yaptığı gibi ,
şartlara tam olarak uymayan donanımlara uyum için , sürücü değişikliklerini test edebiliyor. Bu
teknolojiler yerine oturdukça Linux'unda onlara desteği artıyor.
Bir veriyolu olmasada , Linux artık yeni makinelerin EDD (Enhanced Disk Device - Geliştirilmiş Disk
Aygıtı) BIOSlarına , sunucunun kendi sürücülerini nasıl gördüğünü anlamak için direkt olarak
ulaşabiliyor. EDD BIOS'u , sisteme bağlı olup BIOS'un haberdar olduğu tüm sürücülerin(IDE ve SCSI)
bilgilerini içerir. Ayar ve diğer bilgileri sağlamanın yanında bunun başka yararlarıda var.Mesela yeni
sistemlerde pekte belli olmayan Linux'un hangi diskten açıldığı bilgisini verebiliyor. Böylece bazı
akıllı yükleyicilere , örnek olarak Linux boot loader'ı nereye koymaları gerektiği bilgisi sağlanıyor.
Tüm bunlara ek olarak , bütün veriyolu tiplerinin (donanım , kablosuz , depolama) Linux'un yeni aygıt
modeline entegre edildiğini vurgulamak gerekir. Bazı yerlerde tamamiyle makyaj iken bazı yerlerde ise
daha önemli değişiklikler(Mesela aygıtların nasıl tanınması gerektiğinin mantığı bile değişti)
yapıldı.
Dosya Sistemleri
Linux'ta veya başka OSlerde bir blok aygıtını kullanmanın yolu , üstünde bir dosya sistemi
oluşturmaktır ve Linux'un dosya sistemi desteğide 2.4 den beri birçok yönden gelişti. Bunların altında
ise genişletilmiş özellikler ve POSIX stili erişim kontrolleri desteği yatıyor.
Normal bir Linux sistemiyle uğraşırken karşılaşılabilecekler ext2 veya ext3 gibi genişletilmiş
sistemlerdir (ReiserFS , en yaygın üçüncü seçenek). Bunların kullanıcıların en çok ilgisini çeken
sistemler olmasından dolayı , en çok ilerleyende bunlar olmuştur. Bu değişimlerdeki prensip "
genişletilmiş özellik" desteği veya dosya sisteminin kendisinde her dosya için ayrı ek bilgi
saklanabilmesi olmuştur. Bu özelliklerin bazıları sistem tarafından kullanılıp sadece root tarafından
okunup-yazılabilir. Windows ve MacOS gibi diğer sistemler bu özelliği çoktan kullanmaya başladılar.
Ne yazıkki , UNIX ekolündeki OSler bu özelliklere iyi destek sağlayamadılar ve birçok program ("tar"
gibi) bu tip bilgileri yazıp-değiştirmek için tekrar güncellenmek zorunda. Bu özelliklerin ilk kullanımı ,
daha iyi kontrol sağlayan POSIX tipi erişim kontrollerinin kullanımıdır. ext3tekilere ek olarak birkaç
değişiklik daha var: dosya sistemi günlüğünün yazım zamanı (disk güç koruma modundayken
çalışmasına neden olabilen)laptop kullanıcıları için daha uygun hale getirilebiliyor , varsayılan
bağlama (mount) parametreleride artık dosya sisteminde saklanabiliyor (böylece her seferinde girmek
zorunda kalmayacağız), ve artık bir dizin "indeksli" olarak işaretlenerek dosya aramalarında bir
hızlanma sağlanabilecek.
Klasik dosya sistemlerine ek olarak kernel , XFS (Linuxta) sistemine de tam destek sağlıyor. Bu dosya
sistemi , Irixlerdeki sistemle blok-seviyesinde uyumlu. Genişletilmiş sistemler ve Reiser gibi root-disk
dosya sistemi olarak kullanılabiliyor hatta yeni özellikler ve ACLleri bile destekliyor. Bazı dağıtımlar ,
Linux2.4 lü sistemlerinde bunu desteklemeye başladılar ama zaten kalabalık olan Unix tipi dosya
sistemi mabedinde XFS'in yerinin ne olacağını bilemiyoruz.
Bunun dışında Linux , önemli PC OSleriyle uyumlu olabilmek için dosya sistemi katmanının içinde ve
dışında geliştirmelere gitti. Başlangıç olarak , Windows'un Logical Disk Manager (Dynamic Disk -
Mantıksal Disk Yöneticisi)'ına desteği sayabiliriz. Bu , Windows2000 ve sonrasında olup bölüm
boyutlandırma ve yaratma işlemlerinde kolaylık sağlayan yeni bir bölümleme tablosu şemasıdır
(Tabii Linux , yeni sürümlerinde hemen bu şemayı kullanamaz). Ayrıca Linux artık daha gelişkin
NTFS desteğine sahip ve artık bir NTFS bölümünü yazılabilir/okunabilir olarak bağlamak mümkün
(Yazma desteği hala deneysel ve geliştiriliyor ama en son sürümde aktif olabilirde olmayabilirde).
Son olarak , bunu kullanan bazı MP3 oynatıcılarındaki sorunlara bağlı olarak FAT12 (çok eski
sistemlerde kullanan bir DOS dosya sistemi) desteğide geliştirildi. Piyasada çok yaygın olmasada ,
genişletilmiş özellik desteğini HPFS dosya sistemine ekleyerek OS/2 desteğide geliştirildi. Önceki
sürümlere benzer olarak Linux2.6 daki gelişmeler de , diğerleriyle iyi geçinmenin önemini birkez daha
gösterdi ve Linux'un "İsviçre Çakısı" rolünü güçlendirdi.
Dosya sistemi desteğinde ek olarak , dağınık olarak büyük değişiklikler yapıldı. Kota desteği , daha
çok sayıda kullanıcı desteği için tekrar yazıldı. Artık klasörler tek başlarına "senkronize" olarak
işaretlenerek aralarındaki farkların ( ek dosyalar vb.) en aza indirilmesi sağlanıyor( En çok posta
sistemleri ve dizin tabanlı veritabanı sistemleri için yararlı , aynı zamanda disk hatalarından daha
kolay sıyrılmayı sağlayacak). ISO9660 dosya sistemine ( CD-ROMlarda kullanılır) , transparan
sıkıştırma (sadece Linux'ta) özelliği eklendi. Son olarak paylaşımlı belleklerin daha iyi kullanımı
için yeni bir bellek tabanlı dosyasistemi (hugetlbfs) yaratıldı.
Giriş/Çıkış Desteği
Bilgisayarın daha da dışında , olduklarından daha önemsiz gözüken , giriş/çıkış aygıtları vardır.
Bunların arasında tanıdık olan fare ve klavye , ses ve görüntü kartları ,ve biraz yabancı olan
joystick (oyun çubuğu) ile erişim cihazlarını sayabiliriz. Linux2.6'nın geliştirme aşamasında birçok
son-kullanıcı altsistemi iyileştirildi ama genel aygıtlar için olan destek zaten yeterince olgundu.
Çoğunlukla Bluetoothlu klavye desteği gibi iyileştirmeler dış veriyolu desteğine bağlı olarak oldu.
Buna rağmen daha önemli ilerlemelerin olduğu bazı alanlarda mevcut.
Human Interface Devices (HID - İnsan Arabirimi Aygıtları)
HID ; görüntü , mouse ve klavye kullanılan bir Linux deneyiminin merkezindedir. Yeni kernelde , HID
yeniden işlendi ve eskisinden çok daha modüler hale getirildi. Artık , görüntü veya diğer araçların
desteği olmayan bir linux kurmak mümkün. Mesela , önceden bir PC sahibi olduğunuzda standard
AT (i8042) klavye kontrolcüsü desteğinin gerekli olduğu söylenirdi . Yeni Linux bu ihtiyacı ortadan
kaldırarak , arabirimsiz sistemlerdeki gereksiz kod fazlalığını engelleyecek.
Linux'un monitör çıktılarını ele alma yöntemi birkaç değişikliğe uğrasa da bunlar genelde kernel'in
iç framebuffer sistemini kullanan sistemlere yarar sağlayacak (Birçok Intel-Linux sistem bu şekilde
ayarlanmış olmasada bu diğer yapılar için geçerli değil). Bana sorarsanız en yararlı özellik , açılış
logosunun (şirin bir penguen) artık 24bpp çözünürlüğe kadar desteklemesi. Sonunda Linux ,
VESA (Video Electronics Standard Association - Video Elektronikleri Standartları Kurumu)
monitörleri , özelliklerini öğrenmek için sorgulayabilecek. Bununla birlikte XFree86 ve birçok sistem ,
bu ayrıntıyı ele aldılar bile.
Büyük değişikliklere ek olarak , Linux2.6 kullanıcı etkileşiminde birkaç küçük değişiklik daha yaptı.
Mesela dokunmatik ekranlar artık destekleniyor. Klavye ve mouse sürücüleri de donanım ve
protokolden bağımsız olarak sadece bir aygıt düğümü kullanacak şekilde
(Mesela "/dev/input/mouse0") güncellenip standarda bağlandı. Artık biraz "ilginç" mouse türleride
(çoklu kaydırma topuna sahip olanlar mesela) destekleniyor. Genişletilmiş tuş takımında Windows
"standard"ını yakalayabilmek için klavye tuş haritalarıda güncellendi. Joystick desteğinde yeni
sürücülerin dışında (X Box gamepadide dahil olmak üzere) , şükür ki force-feedback desteğide
eklendi. Son olarak (ama en önemsizi değil) , kör kullanıcıların Linux'a daha kolay erişebilmelerini
sağlamak için Tieman Voyager braille TTY aygıt desteği eklendi (Bu özellik , çoktan 2.4 e
uyarlanacak kadar önemli).
Bir yan not olarak , Linux'un sysrq (System Request - Sistem İsteği) arabirimi , yerel klavyesi
olmayanların ihtiyaçlarına cevap verebilecek şekilde değiştirildi. Sysrq arabirimi , yöneticilerin
debug bilgilerine ulaşmasına , sistemi yeniden başlatmasına , dosya sistemlerini bağlamasına ve diğer
işleri yapmasına yarayan bir metotdur. Linux2.6 , tamamiyle girişsiz bir sistemi desteklediği için bu tür
işleri artık /proc tan yapmak mümkün( Tabii sistem kitlenipte siz birşeyler yaptırmak isterseniz bu pek
yararlı olmaz).
Ses & Çoklu Ortam
Linux2.6'nın en çok beklenen özelliklerinden biride eski sistemin yerine , ALSA ( advanced linux sound
architecture - gelişmiş linux ses mimarisi)'nın konulmasıydı. OSS (open sound system - açık ses
sistemi) , linux'un ilk günlerinden beri hizmet versede birçok mimari kısıtlamaya mevcut. Buradaki ilk
önemli iyileştirme , "masaüstü tek işlemci demektir" paradigması dışında düzgün çalışmayı
reddeden eski sürücülerin birçok problemini , yeni baştan thread ve SMP korumalı olarak yazılmış
olmasıyla çözülmüş olmasıdır. Daha da önemlisi sürücüler en baştan modüler olarak hazırlandı
(eski kullanıcılar , ses sistemi modülerliğinin Linux2.2 de eklendiğini hatırlar) ve bu ,farklı türde
birden çok ses kartının olduğu sistemler için daha iyi destek demek. İçyüzü ne kadar sağlam olsada ,
yeni özellikler eklenmedikten sonra bu kullanıcılar için birşey ifade etmez ve bu yüzden ses sistemi
birçok yeni özelliğe sahip. Bunlardan en önemlileri yeni donanımlar için destek ( USB ses ve MIDI
aygıtları) , full-duplex çalma ve kayıt , kesintisiz mix ve en yeni ses sitemleri için destekler denebilir.
Bir müzik hastası olsanızda , sadece birkaç mp3 dinlemeyi sevsenizde linux'un geliştirilmiş ses
desteği hoşunuza gidecektir.
Sadece ses dışında , kullanıcıların aradıkları diğer şeyler ise webcam , radyo , tv kartları ve dikital
kayıt cihazları için destektir. Her üçü için de linux'un desteği arttırıldı. Linux her zaman (az veya çok)
radyo kartlarını destekledi , tv kartları ve video kameralar için destek ise son bir iki sürümde eklendi.
Video4Linux (V4L) olarak bilinen altsistem , API temizlenmesi ve kartlardaki daha çok özelliği
desteklemekte dahil olmak üzere birçok önemli işlemden geçti. Yeni API eskisiyle uyumlu değil ve eski
APIyi destekleyen programlarında yeni kernelle birlikte güncellenmeleri gerek. Yeni bir alan da ,
Linux2.6 ilk kez DVB (Digital Vide Broadcasting - Dijital görüntü yayını) aygıtlarını destekliyor.Bu
tip bir donanım ve uygun yazılımlarla bir Linux makinesini TiVo (TV in Video out)'ya çevirebilirsiniz.
Yazılım Geliştirmeleri
Ağ
Linux bir OS olarak zaten TCP/IP(v4 ve v6),AppleTalk , IPX gibi dünyanın sayılı protokollerine destek
veriyor.Diğer sistemlerdeki değişimler gibi , ağ donanımlarındaki değişiklikleri de Linux2.6
destekliyor. Bunlar , aygıtın model avantajlarını kullanmak ve sürücü güncellemeleri gibi düşük
seviye değişiklikler. Örneğin, Linux artık bir kısım ağ sürücülerinin kullandığı MII (media
Independent Interface veya IEEE 802.3u - MEdya Bağımsız Arabirim) için ayrı bir altmimariye sahip.
Bu yeni sistem ; her sürücünün , aygıtların MII desteklerini değişik ele almasının böylece gereksiz kod
ve zaman harcamanın önüne geçiyor.Diğer iyileştirmeler ISDN ve diğer bzı şeyleri içeriyor.
Yazılım tarafında Linux'a eklenen en önemli desteklerden biri de IPsec protokolleridir. IPsec veya IP
Security (güvenlik), IPv4 ile protokol bazında şifreleme yapan IPv6'nın birleşimidir. Şifrelemenin
protokol bazında yapılıyor olmasından dolayı, programların bu işe karışmaları gerekmiyor. Bu ,
SSL ve diğer tünelleme/güvenlik protokollerine benzer fakat daha düşük seviyelidir. Şu anki kernel içi
desteklenen şifreleme teknikleri , SHA(security hash algorithm) , DES (data encryption standard) ,
bunların türevleri ve diğer bazılarıdır.
Lİnux2.6 ayrı bir LLC kümesine sahip. LLC (Logical Link Control , IEEE 802.2 - Mantıksal Bağlantı
Kontrol) protokolü ; MS NetBeui , IPX ve AppleTalk gibi yüksek seviye protokollerle kullanılan düşük
seviye bir protokoldür. Bu değişikliğe bağlı olarak , IPX , AppleTalk ve Token Ring sürücülere yeni
altsistemin avantajlarından yararlanabilmek için tekrar yazıldı. Ayrıca , bir NETBEUI yığını
yazıldı ama bunun kernele eklenip eklenmeyeceği merak konusu.
Bunlara ek olarak bazı ufak değişikliklerde yapıldı. Ipv6 üstünde biraz çalışıldı ve artık Token Ring
ler üzerinde kullanılabiliyor. Linux'un NAT/masquerading desteği , H.323 ve PPTP gibi çoklu bağlantı
gerektiren protokolleri kontrol için genişletildi. "Router olarak Linux" cephesinde ise VLAN ayarlama
desteği artık deneysel olmaktan çıktı.
Ağ Dosya Sistemleri
Linux'un sağlam ağ protokol desteğinin üstünde aynı derecede sağlam ağ dosya sistemleri desteği var.
Bir ağ dosya sistemini bağlamak (veya aktarmak) kernelin ilgilendiği çok az yüksek seviye ağ
işleminden birisi. Diğer birçok işlem , kernel geliştiricilerinin alanı dışında olup , kullanıcıya
bırakılmış.
Linux ve UNIX-klon dünyasındaki en yaygın kullanılan dosya sistemi olan NFS(Network File System -
Ağ Dosya Sistemi) , UNIx içinde derin kökleri olan (ve özellikle Sun Solaris'in mükemmel
kullanımında) karmaşık bir dosya paylaşım protokolüdür. Birincil aktarım protokolü , TCP veya
UDP yi kullanabilir ama her biri ayrı RPC (remote procedure call) üstünde çalışan birkaç
alt-protokolde gerekebilir. Bunlar kimlik doğrulamak için ayrı ve dosya kitlemesi için NLM (network
lock manager - ağ kilit yöneticisi) yi kapsar. ( Genel kullanım , NIS (network information service - ağ
bilgi servisi) de dahil olmak üzere bazı RPC tabanlı protokollere kapatılmıştır. NIS ve türevleri ,
Linux makinelerinde güvenlik sorunlarından dolayı kullanılmıyorlar). Belkide NFS bu kadar karışık
olmasından dolayı hala bir "Internet" protokolüne dönüştürülemedi.
Linux2.6'da Linux dosyasisteminin çekirdeği güncellemelere ve birçok geliştirmelere maruz kaldı. En
önemlilerinden biri ise Linux'un artık yeni ve çok kullanılmayan NFSv4 protokolüne sunucu ve istemci
uygulamalarında destek vermesi(Önceki sürümlerde v2 ve v3 için destek vardı). NFSv4 tam olarak
desteklenmese de şu an nispeten kararlı ve programlarda kullanılabilir durumda. Ek olarak , Linux'un
sunucular için NFSv4 çözümü çok daha genişleyebilir bir sistem vadediyor ve (64 kat fazla anlık
kullanıcı ve daha büyük bir istem sırası desteği) , daha eksiksiz (UDP ye ek olarak TCP üstünden
hizmet) , daha sağlam ( normal dosya sistmelerinin , bunlara adapte olma yollarıda kendi ihtiyaçlarına
cevap verebilmesi için geliştirildi) , ve daha da sürdürülebilir ( sistem çağrıları yerine yeni nfsd dosya
sistemi üzerinden yönetim). Ek olarak , ayrık lockd ve nfsd , uygun arabirimlerle zero-copy ağ
desteğini de kapsıyor. Yöneticilerin lockd port numaralarını elle değiştirmesine izin verilerek, NFS
biraz daha güvenli hale gelmiş. NFS istemcileri ise önbellek yapısı , UDP üstünden bağlantı kontrolü
ve TCP iyileştirmelerinden RPC protokolündeki değişikler sayesinde yararlanıyor. Kernel , TCP
üstünden NFS yi desteklerken NFS - paylaşımlı sürücülerin root dosya sistemi olarak
kullanılabilmesi de sağlanmış (diski olmayan sistemler için).
Unix stili dosyasistemleri kadar Windows tipi sistemlerde de iyileştirmeler yapıldı. Windows'un (OS/2
ve diğerlerininde) standard ağ dosyasistemi olan SMB ( sever message block - sunucu mesaj bloğu)'ye
Linux'un zaten mükemmel bir desteği vardı. Windows2k ile bunun geliştirilmiş sürümü olan CIFS
(common internet filesystem - genel internet dosyasistemi) ortaya çıktı. SMB'nin ayakbağı olan bazı
yerlerini düzeltmek için bu iyileştirme yapıldı( Protokol tam olarak tanımlanmamıştı ve Win
95/95/ME sürümünün Win 2k/XP ile uyuşmadığı yerler oluyordu). CIFS bu amaç için çıkarıldı ve
UNICODe desteği , iyileştirilmiş dosya kilitleme , katı bağ ile Win kullanıcıları için birkaç şey daha
eklenip son NETBIOS kalıntılarıda temizlendi. Linux kullanıcıları karanlıkta uzun süre kalmayı
sevmediklerinden (Kutuplarda 6 ay gece olur!) Linux2.6 daki CIFS dosyasistemini bağlama metodu
yeniden yazıldı. Artık Linux2.6 , desteklenen sunucularda (Samba gibi) standart dışı Windows dosya
sistemlerini (aygıt düğümleri ve sembolik bağlantılar gibi) bağlayabilmek için SMB ve CIFS'in
SMB-Unix uzantılarını destekliyor.Bugünlerde çok fazla ortada gözükmeseler de Linux , Novell
NetWare kullanıcılarını da unutmamış. Artık içsel NCP (Netware Core Protokol - Netware Çekirdek
Protokolü) sürücüsü kullanılarak aynı sisteme 256 paylaşımlı aygıt bağlanabiliyor.
Ayrıca 2.6 , bir birimdeki bilginin birçok birime gitmesi gereken yayılmış ağlar için de geliştirmeler
içeriyor. 2.4 te verilen CODA desteğinin yanında artık AFS ve InterMezzo desteği var. AFS , the
Andrew filesystem olarakta bilinir (orjinali CMU da geliştirildiği için bu ismi aldı) , çok kısıtlı ve
sadece okuma işlemlerine izin veriyor(Tüm özellikleri destekleyen bir sürümü ayrı olarak mevcut).
İkinci olarak ise InterMezzo (yine CMUda geliştirilen)var. InterMezzo'nun getirileri arasında
bağlantı kesme metodu (böylece yerel olarak önbelleğe alınmış dosyalarda çalışabiliyorsunuz) var
ki bu metot , birim kapalı olduğunda bilgilere erişilebilmesinin ve o birimin sahtesinin olmaması
gereken durumlarda işe yarıyor. Laptop-PDA-masaüstü ağı gibi birçok aygıt arasında verilerin
senkronize olmasını sağlama özelliği de var. Yeni dosyasistemlerini desteklemek için olan projelerin
büyük bir bölümü ilk kez Linux altında başladı ,ve bu yeni özellikleri desteklemede Linux'u diğer
OSlerin arasından sıyırıyor.
Diğer Özellikler
Güvenlik
Linux2.6da hakettiği kadar ilgi görmeyen birşey de güvenlik güncelleştirmelerinin fazlalığı. Olayın
özünde kernel tabanlı güvenlik ( Unix türevi OSlerde root'un güçleri) sistemlerin tek başlarına
seçilebilmesini olanaklı kılmak amacı ile bunları modüler hale getirilmesi var (Şu anda sadece
varsayılan bir model ve kendi modelimizi nasıl yapabileceğimiz hakkında bir örnek var). Bu
değişimin bir parçası olarak kernel , eski "süper kullanıcı" sistemi yerine yeni , kullanıcı erişimi
bazlı sistemin yeteneklerini kullanabilmek için güncellendi. Hemen hemen tüm linux sistemleri tam
yetkili bir "root" a sahip olmaya devam edecek ama bu değişikliğin yararı artık bu varsayımdan
hareket etmeyen sistemlerin de yapılabilecek olması. Diğer bir değişiklik , binary modüllerin ( aygıt
sürücüleri gibi) artık kendi sistem çağrıları ile aşırı yük yaratmalarının ve sistem çağrı tablosuna
erişemelerinin önlenmesidir. Böylece kapalı modüllerin kernel içinde yapabilecekleri kısıtlanıp GPL'
deki bazı geçerli kaçış noktalarını kapatmaları engelleniyor. Son değişiklik ise , bir şekilde güvenlik
ile ilgili olarak Linux artık donanım dalgalanmalarına dayalı çağrışım havuzu (entropy pool) yerine
donanımsal rastgele sayı üreteçlerini kullanabiliyor(Bazı yeni işlemcilerde olanlar gibi).
Sanal Linux
Linux2.6 daki en ilginç özelliklerden birisi yeni "kullanıcı-modu" mimarisidir. Aslen Linux'un kendi
kendine uyarlanmasıyla sanal bir "Linux üstünde Linux"(Linux-on-Linux) sistemi kurulabilir.Burada,
Linux'un yeni kopyası normal bir program gibi çalışır. Bu programın "içinde" sahte ağ arabirimleri ,
dosyasistemleri ayarlanıp özel sürücüler yardımıyla platform görevinde olan Linux'la haberleşebilen
aygıtlar eklenebilir. Bunun hem geliştirme amaçları için (profilleme vb.) hem de güvenlik analizleri için
çok yararlı olduğu kanıtlandı. Birçok kullanıcının bu tür bir kullanıma hiç ihtiyacı olmasa da çok
hoş bir özellik. (Arkadaşlarınızı etkileyin!)
Diz üstüler
YUkarıda belirtilen diğer tüm genel amaçlı desteklere (iyileştirilmiş APM , ACPI , kablosuz desteği
iyileştirmeleri vs.) ek olarak Linux, laptop kullanıcıları için yararlı olacak özelliklere sahip. İlk
olarak yeni kernel , yazılımın disk üzerine aktarılarak askıya alınabilmesini sağlıyor. Bu özellik
birkaç hata içerse de birçok sistemde sorunsuz çalışıyor. İkinci olarak , sistemin takılı olup
olmadığına bakarak modern mobil işlemcilerin hızlarını ayarlayabiliyor (güç koruması için).
Ayar Yönetimi
Linux2.6 , bazılarına önemsiz gözükebilecek fakat kernel geliştiricilerinin , son kullanıcıların kernel
sorunlarını daha kolay debug edebilmelerini ve sistem yöneticilerinin çoklu sistemlerdeki ayarları
görebilmesini sağlayan bir özelliğe sahip. Kısaca , kernel artık ayar bilgilerinin hepsini , kernel
dosyası içine ekleyebiliyor. Genel olarak hangi ayarların seçildiği , hangi derleyicinin kullanıldığı
gibi şeyler ve birisinin aynı tip kerneli yaratması için gerekli diğer bilgiler burada olacak. Bu bilgiler
/proc arabiriminin yardımıyla kullanıcı tarafından da görülebilecek.
Geriye Uyumluluk
Linux2.6 büyük bir güncelleme sürümü olsa da kullanıcı-modu uygulamalarında pek bir fark yok. En
büyük istisna ise threading olarak gösteriliyor : bazı programlar 2.4 ve 2.2 de çalışmasına rağmen
2.6 da desteklenmeyen işlemler yapıyor olabilir. Ama bununla birlikte bu uygulamalar da kurallarda
istisna olabilir fakat modüller gibi düşük-seviyeli uygulamalar yinede çalışmayacak. Ek olarak ,
/dev ve /proc daki bazı dosyalar ve biçimler değişti bu yüzden buraya bağımlı programlar düzgün
çalışmayabilir (/sys üstündeki yük arttıkça bu cümle doğrulanacak. "/dev" durumunda ise geriye
uyumlu aygıt isimleri kolayca değiştirilebilecek).
Bu standart değişimlere ek olarak bazı uygulamalarda sorun çıkartabilecek , birkaç küçük değişiklik
daha yapıldı. İlkin , çok eski swap dosyaları (Linux2.0 ve öncesi)Linux2.6 da kullanılabilmek için
tekrar biçimlendirilmek (format) zorunda (Swap dosyaları kalıcı bir bilgi içermediklerinden bu
kullanıcılar için sorun olmayacak). Apache , Zeus gibi programların tam performansta çalışmasını
engelleyen darboğazların kaldırılması için kernelden , direkt olarak web sayfası sunmayı sağlayan
kHTTPd sunucusu çıkarıldı. Eski BIOSlarda geniş disk kapasitesi desteği için olan EzDRive ve
OnTrack tipi DOS/Windows "disk yöneticilerinin" otomatik tanınma özelliği kaldırıldı. Ve son olarak ,
sistemi bir disketten açmak için kullanılan kernelin içsel boot sektör desteği kaldırıldı, bunun için
artık SysLinux'u kullanmak zorundasınız.
Belgenin Altyapısı
Bu belge uzun saatler boyunca BitKeeper loglarına bakıp kernel kodlarını değiştirerek , posta
listelerini okuyarak ve şu bu hakkında çok çok fazla Google ve Lycos araması yapılarak hazırlandı.
Kaçırılan veya yanlış anlaşılan noktalar , ağız değiştirmeler olmuş olabilir (Bu zaman diliminde
hazırlanan iki farklı IDE desteği sürümüne özellikle dikkat ettim ama bazı şeyler daha var).
Araştırmanın bir kısmı web sayfalarına bakarak oluşturulduğundan , bağımsız projelerin
bahsettimiz kernel özelliklerinden çok da farklı olmamasına dikkat ettim.
Linux2.6'nın Harikalar Dünyası
Linux2.4 ü kullandığımız günler daha dün gibi olsada kernel geliştirme grubu Linux2.6'yı duyurdu. Bu yazı i386 ağırlıklı olarak Linux2.6'nın yeniliklerini anlatıyor. Burada dikkat edilmesi gereken nokta, "yeni" olarak tabir edilen bazı şeylerin , resmi veya resmi olmayan dağıtımcılar tarafından kernel2.4'e uyarlanmış olabileceğidir.
Linux'un tarihi
Linux kernel projesi Linus Torvalds tarafından kendi 386 sında çalışacak Minix benzeri bir OS yapmak için başlatıldı. (Linus proje için Freax adını istiyordu ama en son bu oldu). İlk resmi sürüm olan Linux1.0 , 94 Mart'ında çıktı ama sadece tek işlemcili 386lar için desteği vardı.Bir yıl sonra diğer platformları (özellikle : Alpha , Sparc ve Mips) destekleyen Linux1.2 sürümü çıktı fakat hala tek işlemcili modeller için desteği vardı.
Haziran 1996'da birkaç platformu daha destekleyen ama daha da önemlisi Linux'u çok işlemcili makine(SMP) pazarına sokan Linux2.0 çıktı. 2.0 dan sonra göreceli olarak yavaş çıkan her sürüm (1999 Ocak 2.2 , 2001 Ocak 2.4) Linux'un yeni çıkan donanım ve sistemlere destek vermesini sağlarken ölçeklenebilirliğinide arttırıyordu. (Linux2.4 ayrıca ISA PnP , USB , PC Card gibi eklemeler ile Linux'u masaüstüne taşıyan kernel olarakta bilinir). 12/17/03 doğum tarihli Linux2.6 , küçük (PDA ve diğerleri) ve büyük sistemlere verdiği destekle önemli bir sıçrama noktasıdır.
Donanım Desteği
Linuxlu sistemlerin önemli özelliklerinden biri esneklikleri ve çok fazla donanımı desteklemeleridir. Bu belgenin, Linux'un PC tabanlı sistemlerde kullanımını açıklamak için hazırlanmış olmasından dolayı Linux2.6 'nın bu alanda getirdiği yeniliklere göz atacağız.
Küçülüyor-- Gömülü Sistemlerde Linux
En temel iki değişiklikten birisi uClinux projesinin kernele dahil edilmesidir. uClinux ( "you-see-Linux" veya Yunanca "mu" kelimesiyle) , mikrodenetçiler için Linux projesidir. Linux'un bu türevi zaten iyi bir donanım desteğine sahip , fakat resmi sürüme girişiyle bunun daha da genişleyeceğini söyleyebiliriz.
Bizlerin bildiği "normal" Linux sürümlerinin tersine , donanım kısıtlamalarından dolayı gömülü sistem(GS) uyarlamalarında (port) tüm özellikler mevcut değildir. Ana fark ise bu uyarlamaların MMU (memory management unit - bellek yönetim birimi)'yu desteklememesidir. Bellek yönetimi ve buna bağlı olan bazı özelliklerin olmamasına karşın bunlar multi-tasking OSlerdir(bellek yönetimi olmadan, bir işlem diğer bir işlemin verisini okuyabilir hatta bozabilir). Bu yüzden çok kullanıcılı sistemler için uygun olmasalarda PDA veya adanmış sistemler için mükemmel tercihlerdir.
Linux2.6 daki bu mimari iyileştirmeyi kelimelere dökmek zor ama şu ana kadarki tüm Linux sürümlerinin, Linus'un 80386sından bazı şeyleri miras aldığını söyleyebiliriz.
Hitachi H8/300 , Necv850 ve Motorola'nın m68k seriside dahil olmak üzere Linux2.6'nın desteklediği birçok GS işlemcisi mevcut. Motorola'nın sağladıkları, Palm1000'den PalmIII'e kadar işin arkasında olmalarından dolayı ortalama bir Linux kullanıcısına daha tanıdık. Diğer modellerin adları ise Motorola tarafından üretilen kartlar üzerindeki Dragonball ve ColdFire işlemcileri, Lineo , Arcturus diye uzayıp gidiyor.
MMUsuz m68k işlemcilerinin şu an desteklenmemeleri üzücü ama bu ve diğer eski işlemciler için desteğin , "hobi" projeleri tarafından çözüleceğine eminim.
uClinux'un bir parçası olmamasına karşın yeni Linux , Axis Communications'ın ETRAX CRISIS (Code Reduced Instruction Set - Kodu azaltılmış komut seti) işlemcisine de destek veriyor. (bu işlemci için de istek ilk olarak 2.4.0 sürümünde verilmişti , bu yüzden hatırlatılmayı hakediyor). Bu tip MMUlu işlemciler daha çok ağ aygıtlarında kullanılıyor. Bu işlemcilerin MMUsuz modelleri için destek kernel de verilmesede, dışarıdan bazı projelerle üstünde çalışılıyor.
Donanım desteğine ek olarak, gömülü işlemlerin ana kernele dahil edilmesi birkaç kazanım daha sağladı. Bu değişiklerin çoğu görünmeyen yerlrede olsada, artık bir sistemin swap olmadan kurulabilmesi gibi gelişmeler OSnin gücüne güç katıyor.
Büyüyor-- NUMA ve Bigger Iron
İkinci temel değişiklik ise diğer yönde oldu : Linux'u çok çok daha büyük sistemlerde kullanabilmek. (Bunların bazıları i386 tabanlı , bazıları değil). Bu alandaki en büyük değişim NUMA (Non-Uniform Memory Access - Çok Şekilli Bellek Erişimi) sunucu desteği oldu. NUMA , SMPlerin bir adım ötesi ve verimlilik alanında çok işlemcili sistemlerde büyük bir adımı temsil ediyor.
Şu anki çok işlemcili sistemler, tek işlemcili kardeşlerinin sahip oldukları, özellikle tüm işlemcilere tek bir bellek havuzundan hizmet sunulması gibi, limitlere sahipler. SMPlerde , işlemciler arasında tek veriyolu için olan rekabetten dolayı büyük bir darboğaz oluşuyor. NUMA , bazı işlemcilerin bazı belleklere yakın , bazılarına uzak olması mantığıyla bu sorunu çözüyor. Bunu anlamanın kolay bir yolu, sisteminizi her biri CPU, bellek ve diğer bileşenlerden oluşan kartlardan oluşturduğunuzu
düşünmenizdir. Bu kartlar birbirleriyle iletişime geçebilirler ama normal olarak, bir CPU'nun yerel
belleğe ulaşması başka bir karttaki belleğe ulaşmasından daha hızlı olur.
NUMA'yı donanımların alt seviyelerindeki çok sıkı bir zincire benzetebiliriz.
Yeni NUMA makineleri düzgün olarak destekleyebilmek , yeni modeli daha verimli kılabilmek amacıyla Linux'un bazı yönleri adapte edilmeliydi. İlk olarak, kernelin bir işlemci veya bir bellek havuzunun diğer bileşenlere göre konumunu hesaplayabilmesi için içsel bir topoloji APIsi oluşturuldu.
Böylece Linux işlem zamanlayıcısı, bu ilişkileri anlayarak kaynakların en etkili şekilde kullanılmasını sağlamak için işlemleri dizebiliyor. Ayrıca birçok NUMA makinesi, bellekler arasındaki birimlerde boşluklar olacak şekilde üretilmiştir. Yeni kernel bu boşluklarla da ilgileniyor.
Bu yüksek performanslı makineleri destekleyebilmek için daha birçok iç değişiklik yapıldı ve burası, kernelin genişlemesi için başlı başına bir alan gibi gözüküyor. Ama bununla birlikte kaynakların en etkili şekilde kullanılması konusu, Linux'un çok hızlı geliştiği ama daha, çok iş yapılması gereken bir alan. Gelecek yıl içinde, yüksek performanslı sistem desteği için Linux'ta birçok değişim olmasını bekleyebiliriz.
Altmimari Desteği
Yukarıdaki ikisi kadar önemli olmasada , yeni donanımlar için Linux , "altmimari desteği" adında yeni bir konsept duyurdu. Önceden, Linux aynı tipte donanım ve işlemcinin birlikte kullanılacağı varsayımıyla hareket ederdi(i386 işlemcilerin sadece PC/AT sunucularda kullanılmış olması gibi).
Linux2.4 te bu varsayım ; Intel chipli bir sistem için destek verilmesiyle , i386 ailesi için kalktı. (Gerçekte daha başka sistemler için çok önceleri kalktı. Örnek olarak m68k uzun süredir Amiga , Macintosh ve diğer platformları da destekliyor). Linux2.6'da bu alandaki en önemli değişim, bu özellik ve konseptlerin standardizasyonu.
Standartlaşma ile birlikte , ayrılması gerekli parçaların daha iyi ayrılabilmesi için , tüm mimariler bunu daha uygun biçimde ele alabilir.
Bu yeni standardizasyonla i386 destekli iki yeni sistem daha geliyor.İlki NCR'ın , 32x e kadar 486-686 destekleyen SMPli, Voyager mimarisi. Bu mimariye sahip sistemlerin satışı göreceli olarak az ve tüm makineleri için şu an destek mevcut değil(En eskilerinin desteği yok).İkinci mimari ise daha yaygın olan , NEC tarafından Japon pazarı için geliştirilen ve daha geniş kullanımlı PC-9800 platformu. Tek 8086 ya sahip sistem , Penitum sınıfı işlemcileri ve SMPyi destekler hale gelinceye kadar geliştirildi (Linux'un desteği 386 ve üstü için). Çok da bilinmemek üzere , Windows95'e kadar bazı Microsoft
ürünleri de bu sistemler için uyarlandı. Bu serinin üretimi , üreticinin daha "normal" sistemlere olan sempatisinden dolayı durduruldu.
Linux'un bu "biraz farklı" makinelere olan desteğinin biçimlendirilmesi ; adanmış sunucular, depolama sistemleri ve diğer endüstri tabanlı işlemcilere daha kolay uyarlanabilmesi sağlıyor. Daha kesin olabilmek için ayrımların çok ileri götürülmemesi gerekir. Bu altmimariler , sistemin düşük seviyedeki bileşenlerinin (IRQ dağıtımı gibi) ,az veya çok ,değişik olmasından dolayı ayrılmıştır.
Bu, sistemin bir i386dan farkının göreceli olarak birkaç küçük sürücüden oluştuğu X-Box gibi sistemlerde Linux çalıştırmaktan çok farklıdır. Bu yüzden X-Box desteği bir altsistem olmamalıdır.
Hyperthreading
Linux2.6 daki bir diğer önemli donanım desteği de hyperthreading adındaki ve şu an sadece yeni P4lerde olup bir işlemcinin kendini çok işlemci (donanım seviyesinde) olarak tanıtmasını sağlayan bir sistemdir. Bazı durumlarda performans artışı sağlamasına rağmen , zamanlamada karışıklık ve diğer bazı sorunları gündeme getirir. Bu desteğin anahtarı , kernelin sanal veya gerçek işlemciler üstündeki yükü nasıl ayarlaması gerektiğini bilmesidir.
Önceki sürümlerde , işlem yükünü bir bütün olarak etkileyememesinden dolayı kernel , işlemciyi aşırı yük altına rahatlıkla sokabilirdi. Bu konu hakkında söylenmesi gerek önemli birşeyde Linux'un bu desteği verme şekliyle piyasadaki benzerlerinin önünde olmasıdır.(Windows 2000 sunucuları sahte işlemcileri görebilir fakat bunları
sanal olarak tanıyamaz.
Bu özelliği kullanabilmek için ek CPU lisansları almanız gerekir. Microsoft'un bu özelliği ilk olarak tam desteklediği sürüm Windows XP dir)
Linux'un İçinde Ölçeklenebilirlik Gelişmeleri
NUMA ve hyperthreading'e ek olarak Linux2.6, besin zincirinin en üstünde olan Intel sunucuları içinde bazı değişikliklere sahip. İlk ve şimdiye kadarkilerin en önemlisi olarak , yeni 32bit x86 sistemlerde sayfalanmış modda 64GB a kadar ram kullanılabilmesini sağlayan Intel'in PAE (Physical Address Extension - Fiziksel Adres Genişlemesi)'sine desteği sayabiliriz. APIC desteğindeki gelişmelere bağlı olarak , çok işlemcili sistemlerde IRQ yönetimide gözle görülür biçimde geliştirilmiş.
Yeni özellikleri desteklerken , iç sınırlar da mümkün olduğunca genişletilmiş. Örnek olarak , bir Linux sistemindeki kullanıcı ve grup toplamı 65,000 den 4 milyara çıkarılmış (16-bit ten 32-bit e). Aynı şekilde, yoğun ve uzun süre çalışan sistmlerde program başlatma performansını arttıracak şekilde , PID (process ID - işlem numarası) sayısıda 32,000 den 1 milyara çıkarılmış. En fazla açılabilen dosya sayısı arttırılmış olmasada , bunun kernel tarafından otomatik olarak belirlenebilmesi sağlanmış. Son olarak Linux2.6 , i386 gibi 32-bit platformlarda bile 64-bit blok aygıt (block device) desteğini arttırmış. Bu , normal donanımlar üstündeki dosya sistemlerinin 16TB ye kadar çıkabileceği anlamına geliyor.
Diğer bir gelişme ise , kernelin sadece daha çok tip aygıtı değil , aynı tip aygıttan daha çok sayıda desteklemesidir. Tüm Linuxlarda , kullanıcı ve programlar bilgisayara bağlı donanımlarla /dev dizini altındaki aygıt düğümleriyle (device node) iletişim kurar. Bu düğümler 255 tane asli (genellikle , bir aygıt bir veya daha fazla düğüm alır) , ve 255 ikincil (aynı tip donanımlar) numara alır. Örneğin ,
/dev/sda2 aygıtı , ilk SCSI aygıtındaki ikinci bölüme aittir.
Asli numarası , tüm SCSI aygıtları için ortak olan 8 dir. Ayrıca ikinci bölümü ifade etmek için 2 ikincil sayısını alır. Değişik aygıtlar bu asli ve ikincil sayıları değişik yöntemlerle alırlar. Bu yüzden bir Linux sistemine kaç tane donanım bağlanabileceğini söylemek zor. Ne yazıkki bu sistem , aynı tip ve 255'ten daha çok aygıtın bağlı
olabileceği mesela depolama sistemleri gibi büyük sistemlerde çökebiliyor. Linux2.6 da bu sayılar 4,095 asli ve 1 milyondan daha fazla ikincil sayı olarak arttırılmış. Bu destek , şu anki yüksek performanslı sistemler için bile fazla.
İletişim ve Cevaplama
Büyümeye ek olarak , yeni sürümdeki diğer bir öncelikte sistemi daha çabuk cevap verebilir hale
getirmek. Bu sadece masaüstü kullanıcısı (herşeyin daha hızlı çalışmasını isteyen) için değil, tam
bir kesinlik gerektiren kritik uygulamalar için de önemlidir. Linux2.6 , işlemlerin tahmin edilen
zamanlarda gerçekleşebilmesi için çok sıkı kısıtlamalara sahip olan gerçek bir RTOS olmayacak
fakat cevap süresindeki iyileştirmeler tüm kullanıcıları memnun edecek.(RTOS fonksiyonunu
kazandırmak için bazı yamalar mevcut. Bu projelerin sonraki sürümlerde resmileştirilmesi
düşünülebilir)
Linux2.6'daki bir diğer önemli gelişmede kernelin artık ön-boşaltım (pre-empty) yapabilmesi. Önceki
sürümlerin tümünde , kernel bir işlem yaparken araya girilemezdi ( SMP sistemlerde , her işlemci
kendi başına mantığıyla doğru). Linux2.6 da artık kernel işlem ortasında durdurulabiliyor böylece
diğer programlar , daha düşük seviye ve arkaplandaki işlemler devam ederken çalışabiliyorlar. Tabii,
işlemin kesilemeyeceği bazı durumlar da mevcut. Gerçekte kullanıcıların büyük bir bölümü bu
gecikmeleri hissetmez. Buna rağmen böylece , kullanıcı bilgi girişi gibi interaktif işlemlerde sistem
çok yüklü olsa bile bir hızlanma görülecek.
Linux'un giriş/çıkış (Input/Output - I/O) altsistemi de her türlü isteğe daha iyi yanıt verebilmek için
büyük değişimler geçirdi. Bu değişimlere, işlemlerin hangi aygıta ne zaman ulaşacaklarını ileten I/O
zamanlayıcısının yeniden yazımı da dahil. Yeni kod , verimli bir okumanın gerçekleşmesini
sağlayan eski kod ile birlikte işlemlerin uzun süre sırada beklememesini garanti altına alıyor.
Yeni "futex" (Fast User-Space Mutexes) özelliğide (eğer kullanılırsa) programların daha hızlı cevap
vermelerini sağlıyor. Futexler , işlem ve threadlerin olayları dizerek kaynaklar üstündeki rekabeti
azaltmasını amaçlayan yöntemlerdir. Geleneksel mutex'in tersine , bu konsept kısmen kernele
bağımlıdır(sadece rekabet anlarında). Ayrıca uygulama ve threadlere öncelik seviyeleri vererek ,
yüksek öncelikli işlemin kaynaklara daha önce ulaşmasını sağlıyor. Bir programın bekleyen
işlemleri dizmesine izin vererek , kritik uygulamalardaki işlemler daha hızlı olabilir.
Yukarıdakilere ek olarak , birçok şekilde performansın arttırılmasını ve cevap sürelerinin
kısaltılmasını sağlayan küçük değişiklerde var. Bunlar arasında "Big Kernel Lock" (Büyük Kernel
Kilidi - Linux'un ilk günlerinde çok işlemcili sistemler için kullanılan kötü yapılı bir kilit)'ın
kaldırılması , dosya sistemlerinde okuma , yazma ve küçük dosyaların ele alınma şekillerinin
değiştirilmesi gibi şeylerde var.
Diğer Gelişmeler
Linux, Açık Kaynak hareketinin genelinde olduğu gibi , açık kaynağın nimetleri için her zaman bir
öncü olmuştur. 2.6 daki bir diğer önemli değişiklik ise NPTL (Native POSIX Thread Library) en üstte
çalışacak şekilde , kernelin içsel thread altyapısının tekrar yazılmasıdır. Bu , Pentium Pro gibi ağır
şekilde threadli sistemler için bir performans artışı sağlayabilir , ayrıca "şirket" piyasasındaki birçok
üreticide bu değişim için bağırıyorlardı. ( Aslında Redhat bunu Linux2.4 e uyarlayarak RH9 ve
Advanced Server 3.0 ile dağıtmaya çoktan başladı). Bu değişim ; thread grupları , özel threadler için
bellek , POSIX tipi sinyaller gibi birçok yeni konsepti içeriyor. Dezavantajlarından biri ise bu sistemi
desteklemeyen bazı uygulamaların (Sun Java'nın bazı sürümleri gibi) güvendikleri eski Linuxçuların
da bu yeni desteğe sahip olabilmesi. Bu kazanımların maliyetleri düşürmesiyle birlikte (ve çok fazla
büyük oyuncunun olmasıyla)önemli uygulamaların bunu , yeni kernel çıkmadan çok önce
destekleyecekleri açık.
Modül Altsistemi ve Birleşik Aygıt Modeli
Modern OSlerde , sayısız iç ve dış veriyolu tipiyle ve çok fazla üreticiden çok fazla aygıtla uğraşılma
ihtiyacı ortaya çıkınca , aygıtları ele alma yöntemleride yavaş yavaş değişti. Bu yüzden , yeni
kernelin modül kurucusunda ve aygıtların ele alınma yönemlerinde değişiklikler olduğunu görmek bir
süpriz olmaz. Değişimler , sadece makyaj seviyesinden (sürücü modülleri "kernel objesi" anlamında
artık ".o" yerine ".ko" uzantısına sahip) bütünleşik aygıt modelinin yeni baştan gözden geçirilmesine
kadar uzanıyor. Bu değişimlerin hepsi kararlılığı arttırıcı ve önceki sürümlerin kısıtlamalarını
kaldırıcı yönde.
Modül altsisteminde kararlılığı arttıran bazı değişiklikler yapılmış. Genelllikle çökmelere sebep
olan , bir modülün kaldırıldığı sırada hala kullanılması gibi sorunların azaltılması için modül
kaldırılması işlemi değişikliğe uğramış. Bu sorunun risk edilemeyeceği sistemlerde modülleri artık
toplu olarak kaldırmak bile mümkün. Ayrıca , modülün hangi donanım için kullanıldığını
belirtmesini sağlayabilmek için çok büyük bir emek harcandı. Önceki sürümlerde , modül hangi
aygıtları desteklediğini bilirdi , fakat bu bilgi modülün dışında mevcut değildi. Bu değişiklik ,
mesela RH'ın "kudzu"su gibi donanım yönetimi yazılımlarının tanıyamadığı aygıtlarda daha
akıllıca seçimler yapmasını sağlayabilecek. Tabii sürücünün hangi donanımı desteklediği bilindiği
durumlarda , modül o aygıt için zorlanabilecek.
Modül yükleme sisteminin dışında , aygıt modeli de kendi başına önemli değişimler geçirdi. Donanım
için gerekli kaynakların ayrılması için uğraşan modül yükleyicisinden ayrı olarak aygıt modeli ,
sistemdeki tüm donanımdan sorumlu olan ayrı bir konsept. 2.2 ve öncesinde Linux , bütünleşik aygıt
modeli için , birçok bilginin modül içinde bırakılmasına izin vererek , en az desteği sağlıyordu. Bu iyi
çalıştı ama günümüz donanımlarının tüm özelliklerini kullanabilmek için (özellikle ACPI ) sistemin ,
aygıtın sadece hangi kaynağı kullandığı bilgisinden daha çoğuna ihtiyacı var: hangi veriyoluna
bağlı , hangi altsistemlere sahip , güç durumu nasıl , rekabet durumunda tekrar ayarlanabilir mi gibi
şeyler, hatta modülü yüklenmemiş aygıtlar hakkında bile bilgi sahibi olabilmesi lazım. Linux2.4 PCI ,
PC Card , ISA Pnp veriyollarını ortak arabirimli bir aygıt yapısına bağlayan ilk kernel oldu.
Linux2.6 , yeni kernel objesi (kobject) altsistemiyle sadece tüm aygıtları bir sisteme toplamakla
kalmıyor , aynı zamanda referans sayımı , güç yönetimi ve kullanıcı alanı uzantısı gibi küçük
ayrıntılılar içinde merkezi bir arabirim sağlıyor.
Çok fazla sayıda donanım bilgisinin kernele girmesiyle birlite Linux , daha derin bilgi gerektiren
günümüz laptop ve masaüstü sistemlerine daha iyi destek veren bir hale geldi. En iyi görülen
uygulaması , gittikçe artan PC Cardları , USB ve Firewire aygıtları ve hot plug PCI gibi "hot plug"
aygıtlar için destektir. Bu kadar eskilere bakmak zor olsada , Linux'un 2.2 ye kadar bu tip aygıtlara
gerçekten destek verildiğini söylemek zor. Bu günlerde "hot-plug" aygıtların bir istisna değilde normal
hale gelmesi ile yeni aygıt altyapısının bir hot-plug aygıtla eski aygıtları aynı şekilde ele alması
örtüşüyor. Açılış zamanında algılanan bir aygıt ile açıldıktan sonra algılanan bir aygıtın kerel
altyapısı çok değişik olmasada , takılabilen aygıtlarla ilgilenen altyapı daha da basitleştirilmiş. Bu
yeni altyapıyla gelen bir diğer sürücü ise güç yönetimi için gelişmiş destekle ilgili. Son yıllardaki güç
yönetimi standardı olan ACPI (Advanced COnfiguration and Power Interface - Gelişmiş Ayarlama ve
Güç Arabirimi), kernelin bir önceki sürümünde ana hatlarıyla desteklendi. Eski APM (Advanced
Power Management - Gelişmiş Güç Yönetimi) 'nin tersine , bu sitemle açılan OSler tüm uyumlu
aygıtlara güç durumlarını değiştirmeleri gerektiği mesajını teker teker iletmek durumundalar.
Merkezi bir donanımsal algılama olmadan , kernelin hangi sırada ve hangi aygıtları kordine etmesi
gerektiğini bilmesi imkansız. Bunlar iki açık örnek olmakla birlikte bu yöntemden yararlanacak daha
birçok alan (donanım denetleme ve gözetleme) olduğu aşikar.
Yeni merkezi sistemin son ama en önemli dallarından biri "sysfs" adındaki yeni dosya sisteminin
(işlemler için "/proc" , aygıtlar için "devfs" ve UNIX98 pseudo-terminalleri için "devpts") yaratılmış
olmasıdır. Yeni dosya sistemi (/sys ye bağlanmış olmalı), kernelin aygıtları nasıl gördüğünü çok az
bir farkla bize aktarıyor. Bu görünüm ; aygıtın adı , IRQ ve DMA kaynakları ,güç durumu gibi bilinen
özelliklerini kapsıyor. Bununla birlikte , sistemin karışıklık yaratabilecek bir yönünü de "/proc/sys" i
kullanan birçok aygıtın yeni dosya sistemine aktarımı oluşturuyor. Bu değişiklik kesin olarak
yapılmadı bu yüzden bir süre daha geliştirme aşamasında kalabilir.
Sistem Donanımı Desteği
Linux ,popüler bir işletim sistemi haline gelirken kernelin her yeni sürümü , eskisine oranla donanım
desteği konusunda daha da ilerledi - hem yeni ( 2.4 deki usb gibi) hemde eski (2.2 deki McA)
teknolojiler açısından. 2.6 ya geldiğimizde linux'un desteklemediği donanımlar desteklediklerine göre
daha az durumda. Fethedilecek birkaç küçük donanım bölgesi daha kaldı. Bu yüzden , i386 donanım
iyileştirmeler daha fazla destekten çok hız için yapıldı.
İçsel Aygıtlar
İşlemciler kadar önemli mi olduğu tartışılsada , sistemi birbirine bağlayan şeyler veriyollarıdır. PC
dünyası , ISA dan başlayan ve, modern seri ve kablosuz yollara kadarki hiçbir zamanda veriyolu
kıtlığı çekmedi. Linux , aygıtlarla birlikte sıkça kullanılan teknolojilere çok hızlı adapte olsada ,
aynı hızı nispeten az popüler teknolojilerde gösteremedi.
Linux'un iç donanım desteği ise gerçekten geniş. Linux'un saklambaç oynadığı teknolojilere örnek
olarak eski ISA (Industry Standard Architecture - Endüstri Standardı Mimari) PnP sayılabilir. 2.4
sürümüne kadar Pnp ye herhangi bir destek verilmedi. Bu destek, yeni kernelle birlikte tam Pnp
BIOSu desteği , aygıt ismi veritabanı ve diğer uyumluluk değişimleri olarak geldi. Bunların
gösterdiği şey , Linux'un artık gerçek bir Pnp Os olup , uygun BIOSlarda da böyle ayarlanabileceğidir.
MCA (Microchannel Architecture - Mikrokanal mimarisi) ve EISA (extended ISA - genişletilmiş ISA)
gibi diğer teknolojilerde yeni aygıt modeline entegre edildi. Yakın geçmişle ilgili olarak Linux2.6 ,
PCI (Peripheral Component Interconnect - Bileşen Unsur Bağı) altsistemine Hot-Plug PCI , güç
yönetimi ve çoklu AGP (Accelerated Graphics Ports - Hızlandırılmış Grafik Yolu) de dahil olmak
üzere birçok yenilik getirdi. Son olarak , gerçek veriyollarına ek olarak Linux'a, bunlarla birebir
yapıda olan içsel veriyolları eklendi.Örnek olarak, bir PCde bunlar ; seri , paralel ve PS/2 portları --
varolan fakat gerçek veriyolu sayılmayan-- olabilir. Bu destek bazı platformlarda daha karışık
işlemlere (mesela bellenimi(firmware)sorgulamak) ihtiyaç duyabilir fakat genel olarak bu ,tüm
donanımların tek bir sürücü paradigması içine alınabilmesi için bir kılıf.
Dış Aygıtlar
İçsel aygıt veriyolları son geliştirmelerde çok fazla değişmiş olmasalarda bunu , yepyeni dış aygıtlar
için söylemek zor. Bu alandaki en önemli değişim USB2.0 olarak sayılabilir. "yüksek hızlı" olarak
tabir edilen bu aygıtlar 12 mbit/sec lik eski USB veriyolunun karşısında , 480 mbit/sec lik veriyolunu
destekliyorlar. Buna bağlı olarak ortaya çıkan ve USB aygıtların birbirlerine bağlanabilmeleri için
(Mesela arada PC olmadan bir kamera ve printerı bağlamak için) noktadan noktaya bir sistemle
çalışan USB On-The-Go (veya USB OTG) standardı ise Linux2.6da desteklenmiyor(Yamalar mevcut
ama resmi sürüme henüz dahil edilmedi). Aygıt desteğine ek olarak , ele alınma yöntemleride
güncelleştirilerek , birden çok aynı tip aygıtın aynı anda ulaşılabilir olması sağlandı. Tüm bu büyük
değişimler yanında Linux kullanıcılarının USBye desteğini arttırmak için , geliştirme aşamasında
basitliğe , kararlılığa ve uyumluluğa özel önem verildi.
Diğer taraftan Linux2.6 , bir makinenin USB host yerine USB aygıtı olarak davranabilmesini sağlıyor.
Bu , örnek olarak , Linux yüklü PDAların PC ye kolayca bağlanabilmesini sağlıyor. Bu destek çok yeni
ama Linux'un gömülü sistemlere girebilmesi için önemli bir adım.
Kablosuz Aygıtlar
Kablosuz teknoloji geçen yıllar boyunca insanlar arasında gerçekten sevildi. Birkaç yıl içinde
kabloların (güç hariç..belki) geçmişe ait anılar haline geleceği anlaşılıyor. Kablosuz aygıtlar , hem
ağ aygıtları (en yaygın olanlar) hemde PDA gibi aygıtları kapsıyor.
Kablosuz ağ alanına baktığımızda , Linux2.6'nın geliştirilmesi sırasında uzun-menzilli -- amatör
radyo aygıtlarında AX.25 gibi-- ve kısa menzilli -- genellikle 802.11 fakat daha eski protokoller
mevcut-- aygıtların güncellendiğini görürüz. En büyük değişim kısa-menzilli sistemlerin önemli
parçaları ve bu aygıtlardaki protokollerin tek API'ye bağlanması olmuştur. Bu birleşme bazı ufak
uyuşmazlıkları ortadan kaldırıp genel bir kalıp oluşturarak , Linux'un bu sistemlere olan desteğini
güçlendirmiştir. Standardizasyona ek olarak Linux , durum değişimlerini -- "roaming" durumundaki
bir aygıt gibi -- algılayabilmek ve kablosuz aygıtlardaki periyodik gecikmeleri daha iyi kontrol
edebilmek gibi bazı iyileştirmelere sahip.
Son sürümden beri , IrDA da güç yönetimi ve yeni kernel sürücü modeline entegre edilmesi gibi
ilerlemeler kaydedildi. Bununla birlikte asıl ilerlemeler Bluetooth alanında yapıldı. Bluetooth ,
heryerde kullanılmak için yaratılan bir protokol ve PDAlardan cep telefonlarına , yazıcılara hatta
otomobil parçalarına kadar uygulama alanları var. Bu protokol , çok kayıplı ses programları için
olan SCO (Synchronous Connection Oriented - simultane bağlantı tabanlı) ile yeniden iletim gibi
özellikleri olan ve daha sağlıklı bağlantılar yapılabilmesi için L2CAP (Logical Link Control and
Adaptation Protocol - Mantıksal bağlantı kontrolü ve adaptasyonu protokolü) , veri bağlantı
çeşitlerinden oluşur. L2CAP protokolü birçok alt-protokolüde (noktadan noktaya ağlar için RFCOMM
ve , Ethernet tipi ağlar için BNEP gibi) destekler. Linux'un Bluetooth'a olan desteği artıyor ve
insanlar bu tip aygıtlardan daha çok kullandıkça desteğinde en üst seviyeye çıkacağını düşünebiliriz.
Ayrıca Bluetooth'a ilk desteğin 2.4'ün sonraki sürümlerinde verildiğinide belirtmek gerek.
Blok Aygıt Desteği
Depolama Veriyolları
IDE/ATA (Integrated Drive Electronics/Advanced Technology Attachment - Entegre Sürücü Elektroniği/
Gelişmiş Teknoloji Eklemesi)ve SCSI(Small Computer System Interface - Küçük Bilgisayar Sistemi
Arabirimi) gibi adanmış veriyolları , 2.6da güncelleştirildi. En önemli güncelleştirmeler birçok
ölçekleme problemini gidermek için baştan yazılan IDE altsisteminde oldu. Örnek olarak , IDE/CDRW
sürücüleri artık direkt olarak IDE arabiriminden kullanılabiliyor (Önceden özel bir SCSI-taklit
sürücüsü kullanmak gerekiyordu).Ek olarak , 150MB/sec aktarım hızına sahip olan Seri-ATA (SATA)
desteği eklendi. SCSI cephesinde , daha geniş destek ve ölçeklenebilirlik etrafında toplanmış birçok
küçük geliştirme yapıldı. Eski sistemler için desteklerden biri Linux'un artık , aynı aygıtta 2 den
fazla LUN'a sahip olan SCSI-2 çokyollu aygıtlarına desteğini sayabiliriz ( SCSI-2 , SCSI 'nin 1994
yılında çıkmış eski bir sürümü).Bir diğer önemli değişimde Linux artık Windows'un yaptığı gibi ,
şartlara tam olarak uymayan donanımlara uyum için , sürücü değişikliklerini test edebiliyor. Bu
teknolojiler yerine oturdukça Linux'unda onlara desteği artıyor.
Bir veriyolu olmasada , Linux artık yeni makinelerin EDD (Enhanced Disk Device - Geliştirilmiş Disk
Aygıtı) BIOSlarına , sunucunun kendi sürücülerini nasıl gördüğünü anlamak için direkt olarak
ulaşabiliyor. EDD BIOS'u , sisteme bağlı olup BIOS'un haberdar olduğu tüm sürücülerin(IDE ve SCSI)
bilgilerini içerir. Ayar ve diğer bilgileri sağlamanın yanında bunun başka yararlarıda var.Mesela yeni
sistemlerde pekte belli olmayan Linux'un hangi diskten açıldığı bilgisini verebiliyor. Böylece bazı
akıllı yükleyicilere , örnek olarak Linux boot loader'ı nereye koymaları gerektiği bilgisi sağlanıyor.
Tüm bunlara ek olarak , bütün veriyolu tiplerinin (donanım , kablosuz , depolama) Linux'un yeni aygıt
modeline entegre edildiğini vurgulamak gerekir. Bazı yerlerde tamamiyle makyaj iken bazı yerlerde ise
daha önemli değişiklikler(Mesela aygıtların nasıl tanınması gerektiğinin mantığı bile değişti)
yapıldı.
Dosya Sistemleri
Linux'ta veya başka OSlerde bir blok aygıtını kullanmanın yolu , üstünde bir dosya sistemi
oluşturmaktır ve Linux'un dosya sistemi desteğide 2.4 den beri birçok yönden gelişti. Bunların altında
ise genişletilmiş özellikler ve POSIX stili erişim kontrolleri desteği yatıyor.
Normal bir Linux sistemiyle uğraşırken karşılaşılabilecekler ext2 veya ext3 gibi genişletilmiş
sistemlerdir (ReiserFS , en yaygın üçüncü seçenek). Bunların kullanıcıların en çok ilgisini çeken
sistemler olmasından dolayı , en çok ilerleyende bunlar olmuştur. Bu değişimlerdeki prensip "
genişletilmiş özellik" desteği veya dosya sisteminin kendisinde her dosya için ayrı ek bilgi
saklanabilmesi olmuştur. Bu özelliklerin bazıları sistem tarafından kullanılıp sadece root tarafından
okunup-yazılabilir. Windows ve MacOS gibi diğer sistemler bu özelliği çoktan kullanmaya başladılar.
Ne yazıkki , UNIX ekolündeki OSler bu özelliklere iyi destek sağlayamadılar ve birçok program ("tar"
gibi) bu tip bilgileri yazıp-değiştirmek için tekrar güncellenmek zorunda. Bu özelliklerin ilk kullanımı ,
daha iyi kontrol sağlayan POSIX tipi erişim kontrollerinin kullanımıdır. ext3tekilere ek olarak birkaç
değişiklik daha var: dosya sistemi günlüğünün yazım zamanı (disk güç koruma modundayken
çalışmasına neden olabilen)laptop kullanıcıları için daha uygun hale getirilebiliyor , varsayılan
bağlama (mount) parametreleride artık dosya sisteminde saklanabiliyor (böylece her seferinde girmek
zorunda kalmayacağız), ve artık bir dizin "indeksli" olarak işaretlenerek dosya aramalarında bir
hızlanma sağlanabilecek.
Klasik dosya sistemlerine ek olarak kernel , XFS (Linuxta) sistemine de tam destek sağlıyor. Bu dosya
sistemi , Irixlerdeki sistemle blok-seviyesinde uyumlu. Genişletilmiş sistemler ve Reiser gibi root-disk
dosya sistemi olarak kullanılabiliyor hatta yeni özellikler ve ACLleri bile destekliyor. Bazı dağıtımlar ,
Linux2.4 lü sistemlerinde bunu desteklemeye başladılar ama zaten kalabalık olan Unix tipi dosya
sistemi mabedinde XFS'in yerinin ne olacağını bilemiyoruz.
Bunun dışında Linux , önemli PC OSleriyle uyumlu olabilmek için dosya sistemi katmanının içinde ve
dışında geliştirmelere gitti. Başlangıç olarak , Windows'un Logical Disk Manager (Dynamic Disk -
Mantıksal Disk Yöneticisi)'ına desteği sayabiliriz. Bu , Windows2000 ve sonrasında olup bölüm
boyutlandırma ve yaratma işlemlerinde kolaylık sağlayan yeni bir bölümleme tablosu şemasıdır
(Tabii Linux , yeni sürümlerinde hemen bu şemayı kullanamaz). Ayrıca Linux artık daha gelişkin
NTFS desteğine sahip ve artık bir NTFS bölümünü yazılabilir/okunabilir olarak bağlamak mümkün
(Yazma desteği hala deneysel ve geliştiriliyor ama en son sürümde aktif olabilirde olmayabilirde).
Son olarak , bunu kullanan bazı MP3 oynatıcılarındaki sorunlara bağlı olarak FAT12 (çok eski
sistemlerde kullanan bir DOS dosya sistemi) desteğide geliştirildi. Piyasada çok yaygın olmasada ,
genişletilmiş özellik desteğini HPFS dosya sistemine ekleyerek OS/2 desteğide geliştirildi. Önceki
sürümlere benzer olarak Linux2.6 daki gelişmeler de , diğerleriyle iyi geçinmenin önemini birkez daha
gösterdi ve Linux'un "İsviçre Çakısı" rolünü güçlendirdi.
Dosya sistemi desteğinde ek olarak , dağınık olarak büyük değişiklikler yapıldı. Kota desteği , daha
çok sayıda kullanıcı desteği için tekrar yazıldı. Artık klasörler tek başlarına "senkronize" olarak
işaretlenerek aralarındaki farkların ( ek dosyalar vb.) en aza indirilmesi sağlanıyor( En çok posta
sistemleri ve dizin tabanlı veritabanı sistemleri için yararlı , aynı zamanda disk hatalarından daha
kolay sıyrılmayı sağlayacak). ISO9660 dosya sistemine ( CD-ROMlarda kullanılır) , transparan
sıkıştırma (sadece Linux'ta) özelliği eklendi. Son olarak paylaşımlı belleklerin daha iyi kullanımı
için yeni bir bellek tabanlı dosyasistemi (hugetlbfs) yaratıldı.
Giriş/Çıkış Desteği
Bilgisayarın daha da dışında , olduklarından daha önemsiz gözüken , giriş/çıkış aygıtları vardır.
Bunların arasında tanıdık olan fare ve klavye , ses ve görüntü kartları ,ve biraz yabancı olan
joystick (oyun çubuğu) ile erişim cihazlarını sayabiliriz. Linux2.6'nın geliştirme aşamasında birçok
son-kullanıcı altsistemi iyileştirildi ama genel aygıtlar için olan destek zaten yeterince olgundu.
Çoğunlukla Bluetoothlu klavye desteği gibi iyileştirmeler dış veriyolu desteğine bağlı olarak oldu.
Buna rağmen daha önemli ilerlemelerin olduğu bazı alanlarda mevcut.
Human Interface Devices (HID - İnsan Arabirimi Aygıtları)
HID ; görüntü , mouse ve klavye kullanılan bir Linux deneyiminin merkezindedir. Yeni kernelde , HID
yeniden işlendi ve eskisinden çok daha modüler hale getirildi. Artık , görüntü veya diğer araçların
desteği olmayan bir linux kurmak mümkün. Mesela , önceden bir PC sahibi olduğunuzda standard
AT (i8042) klavye kontrolcüsü desteğinin gerekli olduğu söylenirdi . Yeni Linux bu ihtiyacı ortadan
kaldırarak , arabirimsiz sistemlerdeki gereksiz kod fazlalığını engelleyecek.
Linux'un monitör çıktılarını ele alma yöntemi birkaç değişikliğe uğrasa da bunlar genelde kernel'in
iç framebuffer sistemini kullanan sistemlere yarar sağlayacak (Birçok Intel-Linux sistem bu şekilde
ayarlanmış olmasada bu diğer yapılar için geçerli değil). Bana sorarsanız en yararlı özellik , açılış
logosunun (şirin bir penguen) artık 24bpp çözünürlüğe kadar desteklemesi. Sonunda Linux ,
VESA (Video Electronics Standard Association - Video Elektronikleri Standartları Kurumu)
monitörleri , özelliklerini öğrenmek için sorgulayabilecek. Bununla birlikte XFree86 ve birçok sistem ,
bu ayrıntıyı ele aldılar bile.
Büyük değişikliklere ek olarak , Linux2.6 kullanıcı etkileşiminde birkaç küçük değişiklik daha yaptı.
Mesela dokunmatik ekranlar artık destekleniyor. Klavye ve mouse sürücüleri de donanım ve
protokolden bağımsız olarak sadece bir aygıt düğümü kullanacak şekilde
(Mesela "/dev/input/mouse0") güncellenip standarda bağlandı. Artık biraz "ilginç" mouse türleride
(çoklu kaydırma topuna sahip olanlar mesela) destekleniyor. Genişletilmiş tuş takımında Windows
"standard"ını yakalayabilmek için klavye tuş haritalarıda güncellendi. Joystick desteğinde yeni
sürücülerin dışında (X Box gamepadide dahil olmak üzere) , şükür ki force-feedback desteğide
eklendi. Son olarak (ama en önemsizi değil) , kör kullanıcıların Linux'a daha kolay erişebilmelerini
sağlamak için Tieman Voyager braille TTY aygıt desteği eklendi (Bu özellik , çoktan 2.4 e
uyarlanacak kadar önemli).
Bir yan not olarak , Linux'un sysrq (System Request - Sistem İsteği) arabirimi , yerel klavyesi
olmayanların ihtiyaçlarına cevap verebilecek şekilde değiştirildi. Sysrq arabirimi , yöneticilerin
debug bilgilerine ulaşmasına , sistemi yeniden başlatmasına , dosya sistemlerini bağlamasına ve diğer
işleri yapmasına yarayan bir metotdur. Linux2.6 , tamamiyle girişsiz bir sistemi desteklediği için bu tür
işleri artık /proc tan yapmak mümkün( Tabii sistem kitlenipte siz birşeyler yaptırmak isterseniz bu pek
yararlı olmaz).
Ses & Çoklu Ortam
Linux2.6'nın en çok beklenen özelliklerinden biride eski sistemin yerine , ALSA ( advanced linux sound
architecture - gelişmiş linux ses mimarisi)'nın konulmasıydı. OSS (open sound system - açık ses
sistemi) , linux'un ilk günlerinden beri hizmet versede birçok mimari kısıtlamaya mevcut. Buradaki ilk
önemli iyileştirme , "masaüstü tek işlemci demektir" paradigması dışında düzgün çalışmayı
reddeden eski sürücülerin birçok problemini , yeni baştan thread ve SMP korumalı olarak yazılmış
olmasıyla çözülmüş olmasıdır. Daha da önemlisi sürücüler en baştan modüler olarak hazırlandı
(eski kullanıcılar , ses sistemi modülerliğinin Linux2.2 de eklendiğini hatırlar) ve bu ,farklı türde
birden çok ses kartının olduğu sistemler için daha iyi destek demek. İçyüzü ne kadar sağlam olsada ,
yeni özellikler eklenmedikten sonra bu kullanıcılar için birşey ifade etmez ve bu yüzden ses sistemi
birçok yeni özelliğe sahip. Bunlardan en önemlileri yeni donanımlar için destek ( USB ses ve MIDI
aygıtları) , full-duplex çalma ve kayıt , kesintisiz mix ve en yeni ses sitemleri için destekler denebilir.
Bir müzik hastası olsanızda , sadece birkaç mp3 dinlemeyi sevsenizde linux'un geliştirilmiş ses
desteği hoşunuza gidecektir.
Sadece ses dışında , kullanıcıların aradıkları diğer şeyler ise webcam , radyo , tv kartları ve dikital
kayıt cihazları için destektir. Her üçü için de linux'un desteği arttırıldı. Linux her zaman (az veya çok)
radyo kartlarını destekledi , tv kartları ve video kameralar için destek ise son bir iki sürümde eklendi.
Video4Linux (V4L) olarak bilinen altsistem , API temizlenmesi ve kartlardaki daha çok özelliği
desteklemekte dahil olmak üzere birçok önemli işlemden geçti. Yeni API eskisiyle uyumlu değil ve eski
APIyi destekleyen programlarında yeni kernelle birlikte güncellenmeleri gerek. Yeni bir alan da ,
Linux2.6 ilk kez DVB (Digital Vide Broadcasting - Dijital görüntü yayını) aygıtlarını destekliyor.Bu
tip bir donanım ve uygun yazılımlarla bir Linux makinesini TiVo (TV in Video out)'ya çevirebilirsiniz.
Yazılım Geliştirmeleri
Ağ
Linux bir OS olarak zaten TCP/IP(v4 ve v6),AppleTalk , IPX gibi dünyanın sayılı protokollerine destek
veriyor.Diğer sistemlerdeki değişimler gibi , ağ donanımlarındaki değişiklikleri de Linux2.6
destekliyor. Bunlar , aygıtın model avantajlarını kullanmak ve sürücü güncellemeleri gibi düşük
seviye değişiklikler. Örneğin, Linux artık bir kısım ağ sürücülerinin kullandığı MII (media
Independent Interface veya IEEE 802.3u - MEdya Bağımsız Arabirim) için ayrı bir altmimariye sahip.
Bu yeni sistem ; her sürücünün , aygıtların MII desteklerini değişik ele almasının böylece gereksiz kod
ve zaman harcamanın önüne geçiyor.Diğer iyileştirmeler ISDN ve diğer bzı şeyleri içeriyor.
Yazılım tarafında Linux'a eklenen en önemli desteklerden biri de IPsec protokolleridir. IPsec veya IP
Security (güvenlik), IPv4 ile protokol bazında şifreleme yapan IPv6'nın birleşimidir. Şifrelemenin
protokol bazında yapılıyor olmasından dolayı, programların bu işe karışmaları gerekmiyor. Bu ,
SSL ve diğer tünelleme/güvenlik protokollerine benzer fakat daha düşük seviyelidir. Şu anki kernel içi
desteklenen şifreleme teknikleri , SHA(security hash algorithm) , DES (data encryption standard) ,
bunların türevleri ve diğer bazılarıdır.
Lİnux2.6 ayrı bir LLC kümesine sahip. LLC (Logical Link Control , IEEE 802.2 - Mantıksal Bağlantı
Kontrol) protokolü ; MS NetBeui , IPX ve AppleTalk gibi yüksek seviye protokollerle kullanılan düşük
seviye bir protokoldür. Bu değişikliğe bağlı olarak , IPX , AppleTalk ve Token Ring sürücülere yeni
altsistemin avantajlarından yararlanabilmek için tekrar yazıldı. Ayrıca , bir NETBEUI yığını
yazıldı ama bunun kernele eklenip eklenmeyeceği merak konusu.
Bunlara ek olarak bazı ufak değişikliklerde yapıldı. Ipv6 üstünde biraz çalışıldı ve artık Token Ring
ler üzerinde kullanılabiliyor. Linux'un NAT/masquerading desteği , H.323 ve PPTP gibi çoklu bağlantı
gerektiren protokolleri kontrol için genişletildi. "Router olarak Linux" cephesinde ise VLAN ayarlama
desteği artık deneysel olmaktan çıktı.
Ağ Dosya Sistemleri
Linux'un sağlam ağ protokol desteğinin üstünde aynı derecede sağlam ağ dosya sistemleri desteği var.
Bir ağ dosya sistemini bağlamak (veya aktarmak) kernelin ilgilendiği çok az yüksek seviye ağ
işleminden birisi. Diğer birçok işlem , kernel geliştiricilerinin alanı dışında olup , kullanıcıya
bırakılmış.
Linux ve UNIX-klon dünyasındaki en yaygın kullanılan dosya sistemi olan NFS(Network File System -
Ağ Dosya Sistemi) , UNIx içinde derin kökleri olan (ve özellikle Sun Solaris'in mükemmel
kullanımında) karmaşık bir dosya paylaşım protokolüdür. Birincil aktarım protokolü , TCP veya
UDP yi kullanabilir ama her biri ayrı RPC (remote procedure call) üstünde çalışan birkaç
alt-protokolde gerekebilir. Bunlar kimlik doğrulamak için ayrı ve dosya kitlemesi için NLM (network
lock manager - ağ kilit yöneticisi) yi kapsar. ( Genel kullanım , NIS (network information service - ağ
bilgi servisi) de dahil olmak üzere bazı RPC tabanlı protokollere kapatılmıştır. NIS ve türevleri ,
Linux makinelerinde güvenlik sorunlarından dolayı kullanılmıyorlar). Belkide NFS bu kadar karışık
olmasından dolayı hala bir "Internet" protokolüne dönüştürülemedi.
Linux2.6'da Linux dosyasisteminin çekirdeği güncellemelere ve birçok geliştirmelere maruz kaldı. En
önemlilerinden biri ise Linux'un artık yeni ve çok kullanılmayan NFSv4 protokolüne sunucu ve istemci
uygulamalarında destek vermesi(Önceki sürümlerde v2 ve v3 için destek vardı). NFSv4 tam olarak
desteklenmese de şu an nispeten kararlı ve programlarda kullanılabilir durumda. Ek olarak , Linux'un
sunucular için NFSv4 çözümü çok daha genişleyebilir bir sistem vadediyor ve (64 kat fazla anlık
kullanıcı ve daha büyük bir istem sırası desteği) , daha eksiksiz (UDP ye ek olarak TCP üstünden
hizmet) , daha sağlam ( normal dosya sistmelerinin , bunlara adapte olma yollarıda kendi ihtiyaçlarına
cevap verebilmesi için geliştirildi) , ve daha da sürdürülebilir ( sistem çağrıları yerine yeni nfsd dosya
sistemi üzerinden yönetim). Ek olarak , ayrık lockd ve nfsd , uygun arabirimlerle zero-copy ağ
desteğini de kapsıyor. Yöneticilerin lockd port numaralarını elle değiştirmesine izin verilerek, NFS
biraz daha güvenli hale gelmiş. NFS istemcileri ise önbellek yapısı , UDP üstünden bağlantı kontrolü
ve TCP iyileştirmelerinden RPC protokolündeki değişikler sayesinde yararlanıyor. Kernel , TCP
üstünden NFS yi desteklerken NFS - paylaşımlı sürücülerin root dosya sistemi olarak
kullanılabilmesi de sağlanmış (diski olmayan sistemler için).
Unix stili dosyasistemleri kadar Windows tipi sistemlerde de iyileştirmeler yapıldı. Windows'un (OS/2
ve diğerlerininde) standard ağ dosyasistemi olan SMB ( sever message block - sunucu mesaj bloğu)'ye
Linux'un zaten mükemmel bir desteği vardı. Windows2k ile bunun geliştirilmiş sürümü olan CIFS
(common internet filesystem - genel internet dosyasistemi) ortaya çıktı. SMB'nin ayakbağı olan bazı
yerlerini düzeltmek için bu iyileştirme yapıldı( Protokol tam olarak tanımlanmamıştı ve Win
95/95/ME sürümünün Win 2k/XP ile uyuşmadığı yerler oluyordu). CIFS bu amaç için çıkarıldı ve
UNICODe desteği , iyileştirilmiş dosya kilitleme , katı bağ ile Win kullanıcıları için birkaç şey daha
eklenip son NETBIOS kalıntılarıda temizlendi. Linux kullanıcıları karanlıkta uzun süre kalmayı
sevmediklerinden (Kutuplarda 6 ay gece olur!) Linux2.6 daki CIFS dosyasistemini bağlama metodu
yeniden yazıldı. Artık Linux2.6 , desteklenen sunucularda (Samba gibi) standart dışı Windows dosya
sistemlerini (aygıt düğümleri ve sembolik bağlantılar gibi) bağlayabilmek için SMB ve CIFS'in
SMB-Unix uzantılarını destekliyor.Bugünlerde çok fazla ortada gözükmeseler de Linux , Novell
NetWare kullanıcılarını da unutmamış. Artık içsel NCP (Netware Core Protokol - Netware Çekirdek
Protokolü) sürücüsü kullanılarak aynı sisteme 256 paylaşımlı aygıt bağlanabiliyor.
Ayrıca 2.6 , bir birimdeki bilginin birçok birime gitmesi gereken yayılmış ağlar için de geliştirmeler
içeriyor. 2.4 te verilen CODA desteğinin yanında artık AFS ve InterMezzo desteği var. AFS , the
Andrew filesystem olarakta bilinir (orjinali CMU da geliştirildiği için bu ismi aldı) , çok kısıtlı ve
sadece okuma işlemlerine izin veriyor(Tüm özellikleri destekleyen bir sürümü ayrı olarak mevcut).
İkinci olarak ise InterMezzo (yine CMUda geliştirilen)var. InterMezzo'nun getirileri arasında
bağlantı kesme metodu (böylece yerel olarak önbelleğe alınmış dosyalarda çalışabiliyorsunuz) var
ki bu metot , birim kapalı olduğunda bilgilere erişilebilmesinin ve o birimin sahtesinin olmaması
gereken durumlarda işe yarıyor. Laptop-PDA-masaüstü ağı gibi birçok aygıt arasında verilerin
senkronize olmasını sağlama özelliği de var. Yeni dosyasistemlerini desteklemek için olan projelerin
büyük bir bölümü ilk kez Linux altında başladı ,ve bu yeni özellikleri desteklemede Linux'u diğer
OSlerin arasından sıyırıyor.
Diğer Özellikler
Güvenlik
Linux2.6da hakettiği kadar ilgi görmeyen birşey de güvenlik güncelleştirmelerinin fazlalığı. Olayın
özünde kernel tabanlı güvenlik ( Unix türevi OSlerde root'un güçleri) sistemlerin tek başlarına
seçilebilmesini olanaklı kılmak amacı ile bunları modüler hale getirilmesi var (Şu anda sadece
varsayılan bir model ve kendi modelimizi nasıl yapabileceğimiz hakkında bir örnek var). Bu
değişimin bir parçası olarak kernel , eski "süper kullanıcı" sistemi yerine yeni , kullanıcı erişimi
bazlı sistemin yeteneklerini kullanabilmek için güncellendi. Hemen hemen tüm linux sistemleri tam
yetkili bir "root" a sahip olmaya devam edecek ama bu değişikliğin yararı artık bu varsayımdan
hareket etmeyen sistemlerin de yapılabilecek olması. Diğer bir değişiklik , binary modüllerin ( aygıt
sürücüleri gibi) artık kendi sistem çağrıları ile aşırı yük yaratmalarının ve sistem çağrı tablosuna
erişemelerinin önlenmesidir. Böylece kapalı modüllerin kernel içinde yapabilecekleri kısıtlanıp GPL'
deki bazı geçerli kaçış noktalarını kapatmaları engelleniyor. Son değişiklik ise , bir şekilde güvenlik
ile ilgili olarak Linux artık donanım dalgalanmalarına dayalı çağrışım havuzu (entropy pool) yerine
donanımsal rastgele sayı üreteçlerini kullanabiliyor(Bazı yeni işlemcilerde olanlar gibi).
Sanal Linux
Linux2.6 daki en ilginç özelliklerden birisi yeni "kullanıcı-modu" mimarisidir. Aslen Linux'un kendi
kendine uyarlanmasıyla sanal bir "Linux üstünde Linux"(Linux-on-Linux) sistemi kurulabilir.Burada,
Linux'un yeni kopyası normal bir program gibi çalışır. Bu programın "içinde" sahte ağ arabirimleri ,
dosyasistemleri ayarlanıp özel sürücüler yardımıyla platform görevinde olan Linux'la haberleşebilen
aygıtlar eklenebilir. Bunun hem geliştirme amaçları için (profilleme vb.) hem de güvenlik analizleri için
çok yararlı olduğu kanıtlandı. Birçok kullanıcının bu tür bir kullanıma hiç ihtiyacı olmasa da çok
hoş bir özellik. (Arkadaşlarınızı etkileyin!)
Diz üstüler
YUkarıda belirtilen diğer tüm genel amaçlı desteklere (iyileştirilmiş APM , ACPI , kablosuz desteği
iyileştirmeleri vs.) ek olarak Linux, laptop kullanıcıları için yararlı olacak özelliklere sahip. İlk
olarak yeni kernel , yazılımın disk üzerine aktarılarak askıya alınabilmesini sağlıyor. Bu özellik
birkaç hata içerse de birçok sistemde sorunsuz çalışıyor. İkinci olarak , sistemin takılı olup
olmadığına bakarak modern mobil işlemcilerin hızlarını ayarlayabiliyor (güç koruması için).
Ayar Yönetimi
Linux2.6 , bazılarına önemsiz gözükebilecek fakat kernel geliştiricilerinin , son kullanıcıların kernel
sorunlarını daha kolay debug edebilmelerini ve sistem yöneticilerinin çoklu sistemlerdeki ayarları
görebilmesini sağlayan bir özelliğe sahip. Kısaca , kernel artık ayar bilgilerinin hepsini , kernel
dosyası içine ekleyebiliyor. Genel olarak hangi ayarların seçildiği , hangi derleyicinin kullanıldığı
gibi şeyler ve birisinin aynı tip kerneli yaratması için gerekli diğer bilgiler burada olacak. Bu bilgiler
/proc arabiriminin yardımıyla kullanıcı tarafından da görülebilecek.
Geriye Uyumluluk
Linux2.6 büyük bir güncelleme sürümü olsa da kullanıcı-modu uygulamalarında pek bir fark yok. En
büyük istisna ise threading olarak gösteriliyor : bazı programlar 2.4 ve 2.2 de çalışmasına rağmen
2.6 da desteklenmeyen işlemler yapıyor olabilir. Ama bununla birlikte bu uygulamalar da kurallarda
istisna olabilir fakat modüller gibi düşük-seviyeli uygulamalar yinede çalışmayacak. Ek olarak ,
/dev ve /proc daki bazı dosyalar ve biçimler değişti bu yüzden buraya bağımlı programlar düzgün
çalışmayabilir (/sys üstündeki yük arttıkça bu cümle doğrulanacak. "/dev" durumunda ise geriye
uyumlu aygıt isimleri kolayca değiştirilebilecek).
Bu standart değişimlere ek olarak bazı uygulamalarda sorun çıkartabilecek , birkaç küçük değişiklik
daha yapıldı. İlkin , çok eski swap dosyaları (Linux2.0 ve öncesi)Linux2.6 da kullanılabilmek için
tekrar biçimlendirilmek (format) zorunda (Swap dosyaları kalıcı bir bilgi içermediklerinden bu
kullanıcılar için sorun olmayacak). Apache , Zeus gibi programların tam performansta çalışmasını
engelleyen darboğazların kaldırılması için kernelden , direkt olarak web sayfası sunmayı sağlayan
kHTTPd sunucusu çıkarıldı. Eski BIOSlarda geniş disk kapasitesi desteği için olan EzDRive ve
OnTrack tipi DOS/Windows "disk yöneticilerinin" otomatik tanınma özelliği kaldırıldı. Ve son olarak ,
sistemi bir disketten açmak için kullanılan kernelin içsel boot sektör desteği kaldırıldı, bunun için
artık SysLinux'u kullanmak zorundasınız.
Belgenin Altyapısı
Bu belge uzun saatler boyunca BitKeeper loglarına bakıp kernel kodlarını değiştirerek , posta
listelerini okuyarak ve şu bu hakkında çok çok fazla Google ve Lycos araması yapılarak hazırlandı.
Kaçırılan veya yanlış anlaşılan noktalar , ağız değiştirmeler olmuş olabilir (Bu zaman diliminde
hazırlanan iki farklı IDE desteği sürümüne özellikle dikkat ettim ama bazı şeyler daha var).
Araştırmanın bir kısmı web sayfalarına bakarak oluşturulduğundan , bağımsız projelerin
bahsettimiz kernel özelliklerinden çok da farklı olmamasına dikkat ettim.







