Kullanıcı:Alierkanimrek/Linux çekirdeği

Vikipedi, özgür ansiklopedi

%42 tamamlandı (tahmini)

   

Linux çekirdeği
Tux
Linux'un simgesi Tux

Linux 3.0 önyükleme
Geliştirici(ler)Linux vakfı çatısı altındaki topluluk
İlk yayınlanma17.09.1991
Güncel sürüm4.x.x / 13.03.2017
Geliştirme durumuAktif
Programlama diliC ve Assembly
TürUnix benzeri, Monolitik Çekirdek
LisansGNU Genel Kamu Lisansı s2 [1]
Resmî sitesiwww.kernel.org
The Linux kernel is ubiquitously found on various hardware and is supported by an abundance of both, free and open-source and also proprietary software

Linux çekirdeği, Unix benzeri işletim sistemleri içinde yer alan Linux ailesinin çekirdeğidir.[2] Linus Torvalds tarafından 1991 yılında geliştirilmeye başlanmış ve GNU projesinin çekirdeği olarak yaygın kullanıma kavuşmuştur. Günümüzde sunucu bilgisayarlar, süper bilgisayarlar ve gömülü cihazların işletim sistemlerinde yaygın olarak kullanılmaktadır. Linux dağıtımlarının ve mobil cihaz piyasasında yaygın kullanılan Android işletim sisteminin de çekirdeğidir.

Linux vakfı çatısı altındaki geniş bir topluluk tarafından geliştirilmektedir ve Özgür yazılım hareketin en çok bilinen yazılımıdır.[3] 1.200'den fazla şirket ve 12.000 civarında uzmandan katkı almıştır. [4][5] Linus Torvalds Linux çekirdeği için "Dünyanın en büyük güçbirliği projesidir." demiştir. [6]

Tarihçe[değiştir | kaynağı değiştir]

Linux'tan Önce[değiştir | kaynağı değiştir]

Linus Torvalds, 1991 yılında Helsinki Üniversitesi Bilgisayar bilimleri bölümünde öğrenciyken UNIX işletim sistemi ve C (programlama dili) dersleri için Intel 80386 işlemcili bir IBM PC satın aldı.

Bu bilgisayarında kullanmak istediği Unix oldukça pahalı bir işletim sistemiydi. Bir diğer Unix benzeri işletim sistemi olan BSD ise taşıdığı Unix kodları nedeniyle AT&T şirketi tarafından şikayet edilmiş ve adli süreç devam ediyordu. GNU Tasarısı ise çekirdek yazılımı olmadığından tam bir işletim sistemi değildi.

Bu nedenlerle Torvalds, yine Unix benzeri bir işletim sistemi olan Minix kullanmaya karar verdi. C Programlama için de GNU Tasarısının C derleyicisi olan ve bir özgür yazılım olan GNU Compiler Collection kullandı.

Ancak Torvalds Minix sisteminden de memnun değildi çünkü Minix değişiklik yapılması ve yeniden dağıtılması konusunda sınırlama getiren bir lisansa sahipti. Üstelik Minix hala 16-bit bir sistemdi ve Intel 80386 işlemcisinin en önemli özelliği olan 32-bit çalışmayı tam olarak desteklemiyordu. Bu nedenlerle Torvalds, ihtiyacı olan yazılımları Minix sisteminden ayrı olarak doğrudan donanım üzerinde çalışabilecek şekilde geliştirmeye karar verdi. [6]

Linux'un doğuşu[değiştir | kaynağı değiştir]

1991 yılında Torvalds, üniversitenin sistemine bağlanmak için geliştirdiği uçbirim yazılımını diske veri kaydedebilecek şekilde geliştirdi. Yazılımının bir işletim sistemi çekirdeğinin özelliklerini taşıdığını fark etti ve bunu daha geliştirerek POSIX standartlarına ve UNIX prensiplerine uygun bir hale getirmenin yaz tatilinde oldukça eğlenceli olacağına karar verdi. Ağustos ayında bu geliştirdiği çekirdeği üzerinde Bash ve GNU CC çalışabilir halde tam bir işletim sistemi olarak tamamladı ve buna İngilizce "Free" (özgür), "Freak" (acayip) ve Unix kelimelerinden esinlenerek Freax adını verdi.

Torvalds, 25 Ağustos 1991 günü Minix haber grubuna mütevazi bir duyuru göndererek öneri ve destek istedi.[7] Ancak yazılımı Helsinki Üniversitesinin bilgisayarında yayınlayan arkadaşı Ari Lemke projenin adını beğenmeyerek "Linux" olarak yayınladı. Torvalds, daha sonra bu ismi onayladı.

1992 Yılı Ocak ayında Minix'in geliştiricisi Andrew S. Tanenbaum Minix haber grubunda Linux'un Monolitik mimarisinin teknolojik olarak modası geçmiş olduğunu, 70'lere dönüş yapan bir hamle olduğunu ve 80x86 işlemcilerine çok bağlı olduğunu, bu nedenlerle gelişmeye açık olmadağını belirttiği bir mesaj yayınladı.[8] Bu mesaj Linux'a katkı veren kişilerin de katıldığı büyük bir tartışmaya yol açtı. Linus Torvalds verdiği cevapta önceki yıl GNU çekirdeği kullanılabilir olsaydı Linux için uğraşmamış olacağını yazdı.

Hukuki durumu[değiştir | kaynağı değiştir]

Lisans[değiştir | kaynağı değiştir]

Torvalds, Linux 0.12 sürümünü GNU Genel Kamu Lisansı versiyon 2 ile lisansladı. Bu sayede Linux'un kodları bir şahıs veya kurumun malı olmaktan çıkmış kamuya açık hale gelmiş oldu. Üzerinde değişiklik dahi yapılsa tüm kopyaları aynı lisansla dağıtılacaktı. Torvalds, daha sonra bu lisansı seçmesinin yaptığı en iyi şey olduğunu söylemiştir. [9]

Ticari İsim[değiştir | kaynağı değiştir]

Linux, Amerika Birleşik Devletleri ve diğer bazı ülkelerde Linus Torvalds adına tescilli bir markadır.

Teknolojisi[değiştir | kaynağı değiştir]

Linux çokgörevli ve monolitik bir çekirdektir. Kullanıcı modu ve Çekirdek modu olarak iki ana katmandan oluşur.[10] Çekirdek modu donanıma doğrudan erişebilen bir katmandır, kullanıcı modunda ise donanımdan soyutlanmış kütüphaneler bulunur. Çokgörevlilik önce sadece kullanıcı modunda, 2.6 sürümünden itibaren de hem kullanıcı hem çekirdek modunda kullanılabilir durumdadır.

Aygıt sürücüleri çekirdek modunda çalışır ama monolitik çekirdek mimarisinden farklı olarak modüller halinde çalışma zamanında eklenip çıkarılabilirler.[11] Sadece bazı grafik ve dosya sistemi sürücüleri kullanıcı katmanında çalışır. Bu sayede çekirdeğin arayüzü binary değil dosya sistemi şeklindedir. Aygıt sürücüler ve kullanıcı yazılımları arayüzüne /dev ve /sys dizinlerinden, çalışan yazılımlara ait bellek haritasına /proc dizininden ulaşılabilir.[12]

Linux çekirdeğindeki katmanlar
Kullanıcı modu Kullanıcı uygulamaları bash, LibreOffice, Blender, 0 A.D., Mozilla Firefox, vs.
Düşük seviyeli sistem bileşenleri: System hizmetleri:
systemd, runit, logind, networkd, soundd, ...
Pencere sistemi:


X11, Wayland, Mir, SurfaceFlinger (Android)

Diğer kütüphaneler:
GTK+, Qt, EFL, SDL, SFML, FLTK, GNUstep, etc.
Grafik işlemciler:
Mesa, AMD Catalyst, ...
Standart C Kütüphanesi open(), exec(), sbrk(), socket(), fopen(), calloc(), ... (2000'den fazla işlev)
glibc , POSIX/SUS-uyumluluğu için, uClibc gömülü sistemlerde, bionic, Android için yazıldı, vb.
Çekirdek Modu Çekirdek stat, splice, dup, read, open, ioctl, write, mmap, close, exit, vb. (yaklaşık 380 sistem çağrısı)
Linux çekirdeği sistem çağrı arayüzü (SCI, POSIX/SUS uyumluluğu)
İşlem zamanlama altsistemi IPC
altsistemi
Hafıza yönetimi altsistemi Sanal dosya altsistemi Ağ altsistemi
Diğer bileşenler: ALSA, DRI, evdev, LVM, device mapper, Linux Network SchedProgramlama diliProgramlama diliuler, Netfilter
Linux Security Modules: SELinux, TOMOYO, AppArmor, Smack
Donanım (Merkezî işlem birimi, RAM, Veri depolama üniteleri, vs.)

Programlama dili[değiştir | kaynağı değiştir]

Linux GNU Compiler Collection tarafından sağlanan C (programlama dili) ile yazılmıştır. Ayrıca bazı kısa rutinler Assembly ile yazılmıştır.

2010 Yılından itibaren çekirdeğin Clang/LLVM ile derlenebilmesi için çalışmalar başlatılmıştır. [13] 2014 yılında resmi çekirdeğin neredeyse tamamı Clang/LLVM ile derlenebilir duruma getirilmiştir.[14] Clang/LLVM, GCC'ye göre pek çok avantajının yanı sıra derleme zamanını kısaltarak geliştiricilere önemli zaman kazandırmaktadır. [15]

Arayüzler[değiştir | kaynağı değiştir]

Kullanıcı katmanı API[değiştir | kaynağı değiştir]

Kullanıcı katmanı ABI[değiştir | kaynağı değiştir]

Çekirdek iç API[değiştir | kaynağı değiştir]

Çekirdek iç ABI[değiştir | kaynağı değiştir]

Teknik Özellikler[değiştir | kaynağı değiştir]

İşlem Önceliği (Preemption)[değiştir | kaynağı değiştir]

İşlem Önceliği (Preemption) gerektiğinde yazılımsal iş parçacıklarının daha öncelikli işlemler için durdurulabilmesini veya bazılarına öncelik tanınabilmesini sağlayan bir teknolojidir. Bu sayede uzun işlem süreci gerektiren iş parçacıklarının tüm sistemi askıya alması veya hatalı işlemlerin sistemi çalışmaz hale getirmesi önlenmiş olduğu gibi öncelik gerektiren işlemlerin çalışmakta olan daha az öncelikli iş parçacıklarının işini bitirmesini beklemesi gerekmez. Linux çekirdeği 2.4 sürümüne kadar sadece kullanıcı modunda, 2.6 sürümünden itibaren de hem kullanıcı hem çekirdek modunda bu teknolojiyi kullanmaktadır. Linux çekirdeğinin tasarımında sonsuz döngü kullanılmadığından gerçekte 2.6 sürümünden önce de Preemption'un eksikliği bir sorun olmamış sadece gecikmeleri gidermiş ve tasarımda ölçeklenebilirlik sağlamıştır.[16]

Linux çekirdeği preemption özelliği sayesinde gerçek zamanlı (real time) çalışma gerektiren sistemler ve masaüstü sistemlerde kullanıma daha uygun hale gelmiştir.

Linux çekirdeği iş parçacıklarının zamanlaması için farklı sınıflar kullanır. 2.6.23 Sürümünde kullanıma başlanan CFS (Completely Fair Scheduler) çekirdeğin öntanımlı zamanlayıcısıdır ve SCHED_OTHER olarak adlandırılır. Ayrıca CFS'nin önünde SCHED_FIFO (realtime first-in-first-out) ve SCHED_RR (realtime round-robin) adlı iki POSIX uyumlu zamanlayıcı sınıf daha bulunur.[17]

Taşınabilirlik (Portability)[değiştir | kaynağı değiştir]

Linus Torvalds, çekirdeği sadece Intel 80386 işlemcisi için geliştirmiştir ve ilk sürümü duyururken diğer platformlara taşınabilir olmayabileceğini yazmıştır. Ancak bundan iki yıl sonra ,1993 yılında, Motorola 68000 işlemcisi için (Amiga ve Macintosh sistemlerde kullanılmıştır) çekirdeğin ilk sürümü duyurulmuştur.[18] Ancak Linus Torvalds bunun bir taşıma değil bir çatal olduğunu belirtmektedir.[19]

Linux çekirdeği günümüzde pek çok platforma taşınmış durumdadır; 32-bit PC (i386), 64-bit ARM (AArch64), 64-bit PC (amd64), 64-bit SPARC, Alpha, Atmel 32-bit RISC, EABI ARM, Hard Float ABI ARM, HP PA-RISC, Intel Itanium IA-64, M32R, MIPS, Motorola 68k, Motorola/IBM PowerPC, OABI ARM, OpenRISC 1200, POWER7+, POWER8, S/390 and zSeries, Sun SPARC, SuperH, System z 

Çalışma zamanı yamalama (Live patching)[değiştir | kaynağı değiştir]

Linux sistemini yeniden başlatmadan çekirdek yamalarının kullanılabilir olmasını sağlayan çalışma zamanı yamalama özelliği 4.0 sürümünden itibaren kullanılabilmektedir. Özellikle güvenlik güncellemelerinin sürekli çalışır durumda olması gereken sistemlerde yapılabilmesi için gerekli bir özelliktir.[20]

Geliştirme[değiştir | kaynağı değiştir]

Linux çekirdeğinin ilk sürümünde yaklaşık 10 bin satır kod bulunmaktaydı, 2017 yılında yayınlanan 4.10 sürümünde ise 18 milyon satırdan fazla kod bulunmaktadır. [21] Çekirdeğin kaynak kodlarına GitHub sitesine taşındığı 2011 yılının son aylarından 2016 yılı Ağustos ayına kadar geçen sürede 13.500'dan fazla geliştirici ve 1.300'den fazla şirketten katkı yapıldığı tespit edilmiştir. Bu şirketlerden en çok katkı verenler Intel, Red Hat, Linaro, Samsung, SUSE, IBM, Renesas, Google, AMD, Texas Instruments ve ARM olmauştur. [22] [23]

Linux çekirdeği geliştirme süreci birkaç ana çekirdek dalı ve çok sayıda özel alt dallardan oluşmuştur. [24]

Ana çekirdek ağacı[değiştir | kaynağı değiştir]

Bu ağacın bakımı Linus Torvalds tarafından yapılmaktadır ve [[1]] adesinde bulunur.

Kararlı çekirdek ağacı[değiştir | kaynağı değiştir]

Git çekirdek yamaları[değiştir | kaynağı değiştir]

Özel çekirdek ağaçları ve yamaları[değiştir | kaynağı değiştir]

Sonraki sürüm ağacı[değiştir | kaynağı değiştir]

Eski metinler[değiştir | kaynağı değiştir]

Linus Torvalds boş zamanlarında Minix’den daha iyi bir Minix işletim sistemi yaratmak düşüncesiyle 1991 Ağustos sonlarında ilk çalışan Linux çekirdeğini oluşturdu. 5 Ekim 1991 tarihinde 0.02 sürümü Linux ilk defa tanıtıldı. Linux, comp.os.minix haber grubuna gönderdiği yazıda yeni bir işletim sistemi geliştirmekte olduğunu ve ilgilenen herkesin yardımını beklediğini yazmıştı. İşletim sisteminin çekirdeği için verilen numaralar kısa sürede bir standart kazandı. a.x.y şeklinde belirtilen çekirdek türevlerinde y bulunulan seviyeyi, x gelişim aşamasını göstermektedir. Tek sayılı x’ler geliştirme aşamalarını çift sayılı x’ler ise güvenilir Linux çekirdeklerini göstermektedir. a ise değişik Linux sürümlerini belirtir.

Linux çekirdeği GNU Genel Kamu Lisansı sürüm 2 (GPLv2) altında yayınlanmıştır[25] ve dünyanın dört bir yanından katılımcıların katkılarıyla geliştirilir. Günlük geliştirme faaliyetleri Linux çekirdeği e-posta listeleri[26] üzerinden yürütülür.

Linux çekirdeği ilk olarak Finlandiyalı bilgisayar bilimi öğrencisi[27] Linus Torvalds tarafından 1991 yılında tasarlanıp yaratıldı. Kısa zamanda Linux'un çevresinde toplanan geliştiriciler ve kullanıcılar diğer özgür yazılım projelerinden uyarladıkları kodlarla yeni bir işletim sistemi oluşturmaya başladılar.[28] Linux çekirdeğine binlerce programcı katkıda bulundu.[29] Linux çekirdeği üzerine inşa edilmiş çok sayıda Linux dağıtımı vardır.

GNU/Linux işletim sistemiyle çalışan bir bilgisayarda Linux çekirdeği sürümünü öğrenmek için, komut satırında

uname -r

komutu kullanılabilir.

Zaman şeridi[değiştir | kaynağı değiştir]

Linux çekirdeği adlarının listesi[değiştir | kaynağı değiştir]

Linux 2.6 çekirdeklerinin çoğunun adı, kaynak kodu ağaçlarındaki Makefile (git deposunda bulunur) içindedir.

Çekirdek Sürümü Adı
–2.6.1 none
2.6.22.6.32.6.4 Feisty Dunnart
2.6.52.6.62.6.72.6.82.6.9 Zonked Quokka
2.6.10-rc1–2.6.102.6.112.6.122.6.13 Woozy Numbat
2.6.14-rc1–2.6.14 Affluent Albatross
2.6.15-rc6–2.6.152.6.16 Sliding Snow Leopard
2.6.17-rc5 Lordi Rules
2.6.17-rc6–2.6.17 Crazed Snow-Weasel
2.6.182.6.19 Avast! A bilge rat!
stable 2.6.18.x since .28-rc2– Stable Pinguin
2.6.20-rc2–2.6.20 Homicidal Dwarf Hamster
2.6.21-rc4–2.6.21 Nocturnal Monster Puppy
2.6.22-rc3–2.6.22-rc4 Jeff
2.6.22-rc5–2.6.22 Holy Dancing Manatees, Batman!
2.6.23-rc4–2.6.23-rc6 Pink Farting Weasel
2.6.23-rc7–2.6.232.6.24 Arr Matey! A Hairy Bilge Rat!
stable 2.6.24.x since .1 Err Metey! A Heury Beelge-a Ret!
2.6.25-rc2–2.6.25 Funky Weasel is Jiggy wit it
2.6.26-rc6–2.6.262.6.27 Rotary Wombat
stable 2.6.27.x since .3 Trembling tortoise
2.6.28-rc1–2.6.28-rc6 Killer Bat of Doom
2.6.28-rc7–2.6.28–2.6.29-rc8 Erotic Pickled Herring
2.6.29 Temporary Tasmanian Devil
2.6.30-rc4–2.6.30-rc6 Vindictive Armadillo
2.6.30-rc7– Man-Eating Seals of Antiquity

Kaynakça[değiştir | kaynağı değiştir]

  1. ^ Is Linux Kernel Free Software?
  2. ^ README
  3. ^ Linus Torvalds (25 Eylül 2006). "Re: GPLv3 Position Statement". 5 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mart 2010. 
  4. ^ http://www.linuxfoundation.org/news-media/announcements/2015/02/linux-foundation-releases-linux-development-report
  5. ^ http://go.linuxfoundation.org/who-writes-linux-2012
  6. ^ a b Yalnızca Eğlenmek İçin
  7. ^ https://groups.google.com/forum/#!msg/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ
  8. ^ https://groups.google.com/forum/#!topic/comp.os.minix/wlhw16QWltI%5B1-25%5D
  9. ^ https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html
  10. ^ http://kernelnewbies.org/FAQ/Preemption
  11. ^ https://lwn.net/Articles/308445/
  12. ^ http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/index.html
  13. ^ https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html
  14. ^ https://www.phoronix.com/scan.php?page=news_item&px=MTY2MjY
  15. ^ http://llvm.org/devmtg/2014-02/slides/moller-llvmlinux.pdf
  16. ^ https://kernelnewbies.org/FAQ/Preemption
  17. ^ https://lwn.net/Articles/230501/
  18. ^ https://www.linuxjournal.com/article/2090
  19. ^ http://www.oreilly.com/openbook/opensources/book/linus.html
  20. ^ https://kernelnewbies.org/Linux_4.0#head-9aa7c8499b42911a48c02b24f367bf2bc6db8606
  21. ^ https://www.linuxcounter.net/statistics/kernel
  22. ^ https://linux.slashdot.org/story/11/09/05/1138255/linux-kernel-moves-to-github
  23. ^ https://www.linuxfoundation.org/announcements/linux-foundation-releases-development-report-highlighting-contributions-to-linux
  24. ^ https://www.kernel.org/doc/html/latest/process/howto.html#the-development-process
  25. ^ COPYING
  26. ^ "VGER.KERNEL.ORG". 22 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mart 2010. 
  27. ^ Marjorie Richardson (1 Kasım 1999). "Interview: Linus Torvalds". Linux Journal. 26 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mart 2010. 
  28. ^ Sam Williams (2002). "Free as in Freedom". O'Reilly books. 22 Eylül 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mart 2010. 
  29. ^ Greg Kroah-Hartman (Nisan 2008), Linux Kernel Development: How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It, erişim tarihi: 2 Mart 2010, Since 2005, over 3700 individual developers from over 200 different companies have contributed to the kernel.