- แม้เคอร์เนลลินุกซ์จะเป็นโอเพนซอร์สขนาดมหึมาที่มี 36 ล้านบรรทัด แต่เวอร์ชันแรกมีเพียง 10,239 บรรทัดเท่านั้น (ถ้าไม่รวมคอมเมนต์/บรรทัดว่าง จะเหลือ 8,670)
- Linux v0.01 ด้วยความเรียบง่ายของมัน จึงเป็นจุดเริ่มต้นที่ดีสำหรับการเรียนรู้ภายในของเคอร์เนล OS สไตล์ Unix
- v0.01 มี system call เพียง 66 รายการ
- สร้าง/ลบ/เขียนไฟล์และไดเรกทอรี
chmod, chown, pipe, fork, execve
- ยังไม่มีการนำแนวคิด socket เข้ามา จึงไม่รองรับเครือข่าย
mount ยังไม่ได้ถูก implement
- ถูก hardcode ไว้กับสถาปัตยกรรม Intel 386 (ผู้เขียน MINIX เคยวิจารณ์เรื่องนี้)
strcpy ถูกเขียนเป็นแอสเซมบลีที่ใช้คำสั่ง i386
- รองรับเฉพาะอุปกรณ์ PC/AT
- CMOS, PIT (Programmable Interval Timer), ATA (PIO), VGA (text mode), คีย์บอร์ด Intel 8042 PS2 (แอสเซมบลี)
- ตอนนั้นยังไม่มีโฟลเดอร์ drivers และถูก hardcode ไว้ใน subsystem
- ใน Makefile มีคอมเมนต์ที่มีชื่อเดิมที่ Linus ตั้งไว้คือ "FREAX" Kernel
- ระบบไฟล์รองรับเฉพาะ MINIX เท่านั้น (
ext ได้แรงบันดาลใจจาก MINIX)
- ในโค้ด scheduler มีคอมเมนต์ว่า "ส่วนนี้เป็นโค้ดที่ค่อนข้างดีและน่าจะทำงานได้ในทุกสภาพแวดล้อม จึงคงไม่มีเหตุผลต้องเปลี่ยน!"
- แน่นอนว่าปัจจุบันมีการปรับปรุงและนำอัลกอริทึมหลากหลายแบบเข้ามาใช้แล้ว ดังนั้นคำทำนายนี้จึงไม่เป็นจริง
- ส่วน implementation ของ kernel panic มีเพียง 5 บรรทัด: พิมพ์ "kernel panic: สาเหตุ" แล้วหยุดระบบด้วย
for(;;)
- มีส่วนที่เรียก
fork(2) จาก kernel space
- แม้จะดูเป็นเช่นนั้น แต่จริง ๆ แล้วมีลูกเล่น
move_to_user_mode() อยู่ก่อนหน้า
- Linus ไม่มีเครื่องที่มี RAM มากกว่า 8Mb (ตัวเองไม่มีจึงทดสอบไม่ได้ เลยบอกให้คนที่มีลองกันเอาเอง..)
- คอมไพล์ด้วย toolchain สมัยใหม่ได้ยาก
- แม้ GCC จะพอมี backward compatibility แต่ก็ยังไม่เพียงพอ
- Linus มี GCC ของตัวเองที่มีออปชัน
-mstring-insns (น่าจะเป็นออปชันสำหรับรองรับคำสั่ง string ของ x86)
2 ความคิดเห็น
น่าสนใจดีนะ
ความคิดเห็นจาก Hacker News
counterใน Linux โดยระบุว่าหากงานไม่อยู่ในสถานะพร้อมรัน ค่าจะลดลงแบบเอ็กซ์โพเนนเชียลจนเหลือ 2 * ลำดับความสำคัญ