16 puan yazan GN⁺ 2023-08-13 | 2 yorum | WhatsApp'ta paylaş
  • Linux çekirdeği 36 milyon satırlık dev bir açık kaynak projesi, ancak ilk sürümü 10.239 satırdı (yorumlar/boş satırlar hariç 8.670)
  • Linux v0.01, bu sadeliği sayesinde Unix tarzı bir OS çekirdeğinin iç yapısını öğrenmek için iyi bir başlangıç noktası
  • v0.01 yalnızca 66 sistem çağrısına sahipti
    • dosya/dizin oluşturma, silme, yazma
    • chmod, chown, pipe, fork, execve
    • Socket kavramı henüz eklenmediği için ağ desteği yoktu
    • mount henüz uygulanmamıştı
  • Intel 386 mimarisine göre hardcode edilmişti (MINIX’in yazarı bunu eleştirmişti)
    • strcpy, i386 komutlarını kullanan assembly ile yazılmıştı
  • Yalnızca PC/AT cihazları destekleniyordu
    • CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (metin modu), Intel 8042 PS2 klavye (assembly)
    • Henüz drivers klasörü bile yoktu ve her şey alt sistemlere hardcode edilmişti
  • Linus’un başlangıçta vermeyi düşündüğü ad olan "FREAX" Kernel ifadesini içeren bir yorum Makefile’da yer alıyor
  • Dosya sistemi olarak yalnızca MINIX destekleniyordu (ext, MINIX’ten ilham almıştı)
  • Zamanlayıcı kodunda, "bu kısım her ortamda çalışan oldukça iyi bir kod, değiştirmek için hiçbir neden olmayacak!" şeklinde bir yorum var
    • Elbette bugün çeşitli iyileştirmeler ve algoritmalar eklendiği için bu öngörü doğru çıkmadı
  • Kernel panic uygulaması sadece 5 satır: "kernel panic: neden" yazdırıp for(;;) ile sistemi durduruyor
  • Çekirdek alanında fork(2) çağrısı yapılıyor gibi görünen bir bölüm var
    • Öyle görünse de, aslında ondan önce gelen move_to_user_mode() bir hile
  • Linus’un elinde 8 MB’tan fazla RAM’e sahip bir makine yoktu (kendisinde olmadığı için test edemediğini, olanların denemesini söyledi)
  • Modern toolchain’lerle derlemek zor
    • GCC geriye dönük uyum sunsa da bu yeterli değil
    • Linus’un, -mstring-insns adlı seçeneğe sahip kendi GCC’si vardı (muhtemelen x86 string komutlarını destekleyen bir seçenekti)

2 yorum

 
arfwene 2023-10-31

İlginçmiş.

 
GN⁺ 2023-08-13
Hacker News görüşleri
  • Modern Linux'un karmaşıklığı üzerine tartışma; Linux v0.01'in kod satırı sayısının 4500 katına ulaşan bu karmaşıklığın gerçekten gerekli olup olmadığı sorgulanıyor.
  • Okuyucular, Linux'taki her büyük yazılım modülünde kullanılan kod satırı sayısı ile işlevlerin grafiksel bir analizini görmek istiyor.
  • Linux, SQLite ve vim gibi klasik kod tabanlarının okunması öneriliyor; bunların çoğu tek bir kişi tarafından yazıldı ve son derece başarılı ya da etkili oldu.
  • Linux'taki counter mekanizmasının nasıl çalıştığı açıklanıyor; bir iş çalıştırılabilir durumda değilse değerin 2 * önceliğe kadar üstel olarak azaldığı öne sürülüyor.
  • Redhat'in IPO sırasında hissedarlara içinde 0.01 kaynak kodu bulunan bir poster gönderdiği aktarılıyor; okuyucular bunun ara sıra okunmasını ilginç buluyor.
  • GCC (GNU Compiler Collection) için geriye dönük uyumluluk tartışılıyor; bir yorumda GCC'nin uzun süre kendi eski sürümlerini derleyemediği söyleniyor.
  • Okuyucular, daha derinlemesine anlamak ve okumak için bol açıklamalı Linux Kernel Source Code'a yönlendiriliyor.
  • Linux gibi büyük başarı kazanmış projelerin ilk çalışan sürümünü okumanın anlamak için iyi bir yöntem olduğu, çünkü bunların genelde çok fazla soyutlama/genelleme olmadan yalnızca en önemli çekirdek işlevleri içerdiği öne sürülüyor.
  • Bazı okuyucular kaynak kodda tab yerine boşluk kullanıldığını fark ediyor; Torvalds'ın daha sonra tab savunucusu hâline gelmiş olabileceği tahmin ediliyor.
  • Koddaki yorumların derinliği ve sıklığı takdir ediliyor; bunun okuyucular için erişilebilirlik sağladığı belirtiliyor ve birinin bunu derlemeyi başarıp başarmadığı merak ediliyor.