ในบทความนี้จะเล่าเรื่อง Kernel ของ Operating System ซึ่งเป็นส่วนสำคัญที่เป็นแกนกลางการทำงานหลักของทุก Operating System
Minix และ Micro Kernel
ตอนที่ Linus Torvald สร้าง Linux ขึ้นมา Minix เป็น OS ที่เขียนโดย Andrew Tanenbaum เพื่อใช้สอนในมหาวิทยาลัย แต่ก็เป็น commercial ไปด้วย Linus ประกาศเปิดตัวใน uesenet ของ Minix (น้องๆอาจไม่เคยใช้ เอาเป็นว่ามันคือกระดานข่าว (discussion group) ชนิดหนึ่งละกัน)
ผ่านมา 1 ปี เข้าปี 1992 Linux ที่แจกฟรี ก็มีคนใช้มากขึ้น Andrew Tanenbaum เกิดหมั่นไส้ขึ้นมา เลยโพสใน usenet เริ่มต้นออกตัวว่า Minix น่ะ ผมทำเป็นงานอดิเรก งานจริงๆเป็นอาจารย์และรู้เรื่อง OS ดีอยาก บอกว่า 1. Linux ห่วย เพราะเป็น Monolithic Kernel สิ่งที่ดีกว่าคือ micro kernel และ. 2. Linux น่ะไม่ portable มันจะจมอยู่กับ 80386 ในอนาคตน่ะ จะมี Risc processor ที่จะ emulate linux ทั้งตัวแน่ๆ (เป็นคำทำนายถึง M1 processor ไว้ล่วงหน้า 30 ปี)
อธิบายนิดนึงว่า Kernel แบบ Monolithic คือ Kernel ขนาดใหญ่ที่รวมเอาเรื่อง process management, memory management, IO management และ File system ไว้ด้วยกัน โปรแกรมต่างๆที่รัน ก็ได้รับการจัดสรรปันส่วนสิ่งต่างๆที่ว่ามาให้รันกันไป
ส่วน microkernel คือ kernel ที่จัดการแค่ message mangement และ io ที่สำคัญ นอกนั้นวิ่งนอก kernel หมด แล้วประสานการทำงานกันด้วย message ที่ส่งผ่านและควบคุมโดย kernel
OS ที่เกิดขึ้นก่อนช่วงนั้น เป็น monolithic kernel หมด ทั้ง UNIX, MS-DOS, VMS MULTICS ฯลฯ (ตอนนั้น Windows ยังไม่เกิด)
OS คลื่นลูกใหม่จะเป็น micro kernel หมด เช่น Minix Amoeba (ของ Andrew เอง), HURD (os ในฝันของ Richard Stallman เจ้าพ่อ GNU ที่เล่าไปครั้งก่อน) และ OS ที่กำลังจะออกที่ท่าทางจะดังคือ Windows NT
ใครๆก็ไปทาง micro kernel ดังนั้น Andrew ก็ฟันธงในโพสว่า “Linux เป็นสิ่งล้าสมัย”
Linux และ Monolithic Kernel
Linus Torvald ตอบโต้โพสในวันต่อมา แบบดุเดือดมาก ฝรั่งไม่มีมึงกู แต่อ่านแล้วได้อารมณ์มึงกูเลย บอกว่า มรึงจะมาแก้ตัวว่าโอเอสห่วยๆที่ทำมา เพราะเป็นงานอดิเรกเหรอ ของกรูนี่งานอดิเรกของแท้ ทำแจกฟรี ของเอ็งเก็บเงิน (ตอนนั้น Minix ไม่ฟรี)
ไอ้เรื่อง Microkernel น่ะ ถ้ามันดีจริง Bruce Evans คงไม่ต้องมานั่งแฮ็ก แก้ไขการทำ multitasking ห่วยๆของ Minix หรอก และที่กรูมานั่งทำ Linux อยู่นี่ก็เพราะ HURD ของ Stallman มันควรเสร็จไปตั้งแต่ปีที่แล้ว ไอ้ microkernel น่ะมันทฤษฎี แต่ linux น่ะของจริง
การเอา design pattern มากำหนดว่าเป็นสิ่งดีไม่ดี มันเป็นเรื่องไม่เข้าท่า อย่างเรื่อง portable เป็นเพราะ Linux ต้องการรีดความสามารถของ 80386 ออกมา มันผิดตรงไหน และกรูเชื่อว่าโค๊ดที่เขียนมามัน portable แน่นอน
จากนั้นก็เกิดสงครามน้ำลายขนาดใหญ่ขึ้นในวงการ ลามปามไปหมด คนดังทั้งหลายในวงการโอเอสเข้ามาร่วมถล่มกันยับเยิน รวมทั้ง Ken Thompson เจ้าพ่อ UNIX ก็มาร่วมวง หรือ David Miller ผู้ซึ่งต่อมาเป็นหนึ่งในผู้พัฒนาที่สำคัญของ Linux ก็มา…
แต่ฝรั่งนี่ดีอย่าง เถียงกันจะเป็นจะตาย ก็ยังมีความเป็นมืออาชีพ บางที่หลุดคำพูดแรงๆออกมา (ส่วนใหญ่จะเป็นฝั่ง Linus) ก็จะมีการเขียนอีเมล์ไปขอโทษกัน แล้วก็เถียงกันต่อแบบจะเป็นจะตาย
ตอนที่หนังสือ Open Sources: Voices from the Open Source Revolution ขออนุญาต Linus เพื่อลงเรื่องนี้ Linus ก็ตอบอย่างดีว่า ลงไปเลย อย่าตัดทอน แต่ต้องให้คนอ่านเข้าใจว่ามันคือการโต้เถียงในทางวิชาการ ไม่ใช่ความขัดแย้งส่วนบุคคล…
เรื่อง Kernel แบบไหนดี มาถึงวันนี้ก็ยังเถียงกันไม่จบ ขึ้นอยู่กับมุมมอง และประสบการณ์ของคน ดังนั้นน้องๆ เจอการถกเถียงเรื่องนี้ ขอให้เปิดใจให้กว้าง และระลึกเสมอว่ามันเป็นแค่การโต้เถียงทางวิชาการ อย่าให้มันกลายเป็นสงครามครูเสดไป….