16 poin oleh GN⁺ 2023-08-13 | 2 komentar | Bagikan ke WhatsApp
  • Kernel Linux adalah proyek open source raksasa dengan 36 juta baris kode, tetapi versi pertamanya hanya 10.239 baris (8.670 jika komentar/baris kosong dikecualikan)
  • Linux v0.01, karena kesederhanaannya, adalah titik awal yang bagus untuk mempelajari bagian dalam kernel OS bergaya Unix
  • v0.01 hanya memiliki 66 system call
    • pembuatan, penghapusan, dan penulisan file/direktori
    • chmod, chown, pipe, fork, execve
    • Konsep socket belum diperkenalkan sehingga belum mendukung jaringan
    • mount masih belum diimplementasikan
  • Di-hardcode untuk arsitektur Intel 386 (penulis MINIX mengkritik hal ini)
    • strcpy ditulis dalam assembly yang menggunakan instruksi i386
  • Hanya mendukung perangkat PC/AT
    • CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (mode teks), keyboard Intel 8042 PS2 (assembly)
    • Belum ada folder drivers, dan semuanya di-hardcode ke dalam subsistem
  • Ada komentar di Makefile yang menyebut nama asli yang diberikan Linus, yaitu kernel "FREAX"
  • Filesystem hanya mendukung MINIX (ext terinspirasi dari MINIX)
  • Ada komentar pada kode scheduler yang berbunyi, "bagian ini adalah kode yang cukup bagus dan akan bekerja di semua lingkungan, jadi sepertinya tidak ada alasan untuk mengubahnya!"
    • Tentu saja, sekarang bagian itu sudah diubah karena berbagai peningkatan dan algoritma telah diperkenalkan, jadi ramalan ini meleset
  • Implementasi kernel panic hanya 5 baris: mencetak "kernel panic: penyebab" lalu menghentikan sistem dengan for(;;)
  • Ada bagian yang terlihat seperti memanggil fork(2) di ruang kernel
    • Terlihat begitu, tetapi sebenarnya ada trik move_to_user_mode() sebelumnya
  • Linus tidak memiliki perangkat dengan RAM lebih dari 8MB (karena dia sendiri tidak punya, dia tidak bisa mengujinya, jadi siapa pun yang punya diminta mencobanya sendiri...)
  • Sulit dikompilasi dengan toolchain modern
    • GCC memang kompatibel ke belakang, tetapi itu saja tidak cukup
    • Linus memiliki GCC versinya sendiri dengan opsi -mstring-insns (mungkin opsi untuk mendukung instruksi string x86)

2 komentar

 
arfwene 2023-10-31

Menarik.

 
GN⁺ 2023-08-13
Komentar Hacker News
  • Diskusi tentang kompleksitas Linux modern, mempertanyakan apakah kompleksitas yang mencapai 4500 kali jumlah baris kode Linux v0.01 benar-benar diperlukan.
  • Para pembaca ingin melihat analisis grafis tentang jumlah baris kode dan fungsi yang digunakan di setiap modul perangkat lunak utama Linux.
  • Disarankan untuk membaca codebase klasik seperti Linux, SQLite, dan vim, yang sebagian besar ditulis oleh satu orang dan sangat sukses atau berpengaruh.
  • Penjelasan tentang cara kerja counter di Linux, dengan klaim bahwa nilainya menurun secara eksponensial hingga 2 * prioritas jika suatu tugas tidak bisa dijalankan.
  • Ada laporan bahwa saat IPO, Redhat mengirim poster berisi source code 0.01 kepada para pemegang saham, dan para pembaca merasa menarik untuk sesekali membacanya.
  • Diskusi tentang kompatibilitas mundur GCC (GNU Compiler Collection), dengan komentar bahwa GCC sudah lama tidak bisa mengompilasi versi-versi lamanya sendiri.
  • Para pembaca diarahkan ke Linux Kernel Source Code yang diberi banyak anotasi untuk membantu pemahaman dan pembacaan yang lebih mendalam.
  • Ada saran bahwa membaca versi pertama yang benar-benar berfungsi dari proyek sukses besar seperti Linux adalah cara yang baik untuk memahaminya, karena biasanya hanya berisi fungsi inti paling penting tanpa banyak abstraksi/generalisasi.
  • Beberapa pembaca menemukan bahwa source code tersebut menggunakan spasi alih-alih tab, dan ada spekulasi bahwa Torvalds mungkin baru kemudian menjadi pendukung tab.
  • Kedalaman dan frekuensi komentar di dalam kode mendapat pengakuan karena membuatnya lebih mudah diakses oleh pembaca, serta ada rasa penasaran apakah seseorang berhasil mengompilasinya.