Kullanıcı:Alierkanimrek/Linux çekirdeği
%42 tamamlandı (tahminî)
Linux'un simgesi Tux | |
Linux 3.0 önyükleme | |
Geliştirici(ler) | Linux vakfı çatısı altındaki topluluk |
---|---|
İlk yayınlanma | 17.09.1991 |
Güncel sürüm | 4.x.x / 13.03.2017 |
Geliştirme durumu | Aktif |
Programlama dili | C ve Assembly |
Tür | Unix benzeri, Monolitik Çekirdek |
Lisans | GNU Genel Kamu Lisansı s2 [1] |
Resmî sitesi | www.kernel.org |
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ştirLinux'tan Önce
değiştirLinus 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ştir1991 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ştirLisans
değiştirTorvalds, 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ştirLinux, Amerika Birleşik Devletleri ve diğer bazı ülkelerde Linus Torvalds adına tescilli bir markadır.
Teknolojisi
değiştirLinux ç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]
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:
|
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ştirLinux 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ştirKullanıcı katmanı API
değiştirKullanıcı katmanı ABI
değiştirÇekirdek iç API
değiştirÇekirdek iç ABI
değiştirTeknik Özellikler
değiştirİşlem Önceliği (Preemption)
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ştirLinus 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ştirLinux 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ştirLinux ç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ştirBu ağacın bakımı Linus Torvalds tarafından yapılmaktadır ve [[1]] adesinde bulunur.
Kararlı çekirdek ağacı
değiştirGit çekirdek yamaları
değiştirÖzel çekirdek ağaçları ve yamaları
değiştirSonraki sürüm ağacı
değiştirEski metinler
değiştirLinus 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ştirLinux çekirdeği adlarının listesi
değiştirLinux 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.2–2.6.3–2.6.4– | Feisty Dunnart |
2.6.5–2.6.6–2.6.7–2.6.8–2.6.9 | Zonked Quokka |
2.6.10-rc1–2.6.10–2.6.11–2.6.12–2.6.13– | Woozy Numbat |
2.6.14-rc1–2.6.14– | Affluent Albatross |
2.6.15-rc6–2.6.15–2.6.16– | Sliding Snow Leopard |
2.6.17-rc5 | Lordi Rules |
2.6.17-rc6–2.6.17– | Crazed Snow-Weasel |
2.6.18–2.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.23–2.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.26–2.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- ^ Is Linux Kernel Free Software?
- ^ README
- ^ 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.
- ^ http://www.linuxfoundation.org/news-media/announcements/2015/02/linux-foundation-releases-linux-development-report
- ^ http://go.linuxfoundation.org/who-writes-linux-2012
- ^ a b Yalnızca Eğlenmek İçin
- ^ https://groups.google.com/forum/#!msg/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ
- ^ https://groups.google.com/forum/#!topic/comp.os.minix/wlhw16QWltI%5B1-25%5D
- ^ https://web.archive.org/web/20070210224351/http://hotwired.goo.ne.jp/matrix/9709/5_linus.html
- ^ http://kernelnewbies.org/FAQ/Preemption
- ^ https://lwn.net/Articles/308445/
- ^ http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/index.html
- ^ https://web.archive.org/web/20150907044958/http://lists.cs.uiuc.edu/pipermail/cfe-dev/2010-October/011711.html
- ^ https://www.phoronix.com/scan.php?page=news_item&px=MTY2MjY
- ^ http://llvm.org/devmtg/2014-02/slides/moller-llvmlinux.pdf
- ^ https://kernelnewbies.org/FAQ/Preemption
- ^ https://lwn.net/Articles/230501/
- ^ https://www.linuxjournal.com/article/2090
- ^ http://www.oreilly.com/openbook/opensources/book/linus.html
- ^ https://kernelnewbies.org/Linux_4.0#head-9aa7c8499b42911a48c02b24f367bf2bc6db8606
- ^ https://www.linuxcounter.net/statistics/kernel
- ^ https://linux.slashdot.org/story/11/09/05/1138255/linux-kernel-moves-to-github
- ^ https://www.linuxfoundation.org/announcements/linux-foundation-releases-development-report-highlighting-contributions-to-linux
- ^ https://www.kernel.org/doc/html/latest/process/howto.html#the-development-process
- ^ COPYING
- ^ "VGER.KERNEL.ORG". 22 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Mart 2010.
- ^ 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.
- ^ 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.
- ^ 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.