ทุกระบบปฏิบัติการ—ไม่ว่าจะเป็น Windows, Mac, Linux, หรือ Android—มีโปรแกรมหลักที่เรียกว่า Kernel ทำหน้าที่เป็น "บอส" ของระบบทั้งหมด มันคือหัวใจของ OS! Kernel คือโปรแกรมคอมพิวเตอร์ที่ควบคุมทุกอย่าง ทุกสิ่งที่เกิดขึ้นบนคอมพิวเตอร์ต้องผ่านมัน บทความนี้จะอภิปรายว่า Kernel ใน OS คืออะไร และประเภทต่างๆ
Kernel ใน OS คืออะไร
นอกจากจะเป็นโปรแกรมหลักของ OS แล้ว ยังเป็นโปรแกรมแรกที่โหลดหลัง bootloader มันจัดการการสื่อสารระหว่างฮาร์ดแวร์และซอฟต์แวร์/แอปพลิเคชัน หากเปิดโปรแกรม UI จะส่งคำขอไป Kernel Kernel จะส่งคำขอไป CPU, Memory เพื่อจัดสรรกำลังประมวลผล หน่วยความจำ และสิ่งอื่นๆ เพื่อให้แอปพลิเคชันทำงานได้อย่างราบรื่น

จินตนาการ Kernel เป็นตัวแปลภาษา แปลงคำขอ input/output จากซอฟต์แวร์เป็นชุดคำสั่งสำหรับ CPU และ GPU สะดวกๆ คือเลเยอร์ระหว่างซอฟต์แวร์และฮาร์ดแวร์ที่ทำให้ทุกอย่างเป็นไปได้ Kernel จัดการ:
- CPU/GPU
- Memory
- Input/Output หรือ IO devices
- Resource management
- Memory management
- Device management
- System calls
กระบวนการของผู้ใช้เข้าถึง kernel-space ได้เฉพาะผ่าน system calls หากโปรแกรมพยายามเข้าถึงโดยตรง จะเกิด fault
อ่านเพิ่ม: ความแตกต่างระหว่าง Kernel Mode และ User Mode
ความปลอดภัยและการป้องกันของ Kernel
Kernel ยังป้องกันฮาร์ดแวร์ หากไม่มีการป้องกัน โปรแกรมใดก็ตามจะทำงานบนคอมพิวเตอร์ได้หมด รวมถึงทำให้คอมพิวเตอร์ล่ม, ช้ำข้อมูล ฯลฯ
ในคอมพิวเตอร์สมัยใหม่ ความปลอดภัยถูกนำไปใช้ระดับฮาร์ดแวร์ เช่น Windows ไม่โหลดไดรเวอร์ที่ไม่ใช่แหล่งที่เชื่อถือได้และได้รับการรับรองด้วยลายเซ็น Secure Boot และ Trusted Boot เป็นตัวอย่างคลาสสิก
Secure Boot: มาตรฐานความปลอดภัยที่พัฒนาโดยสมาชิกอุตสาหกรรม PC ช่วยป้องกันระบบจากโปรแกรมอันตรายโดยไม่อนุญาตให้แอปพลิเคชันที่ไม่ได้รับอนุญาตรันระหว่างกระบวนการเริ่มต้นระบบ ฟีเจอร์นี้รับรองว่า PC บูทด้วยซอฟต์แวร์ที่ไว้วางใจโดยผู้ผลิต PC เท่านั้น ทุกครั้งที่ PC เริ่มต้น Firmware จะตรวจสอบลายเซ็นของแต่ละส่วนของซอฟต์แวร์บูท รวมถึง firmware drivers (Option ROMs) และระบบปฏิบัติการ หากลายเซ็นยืนยันแล้ว PC จะบูทและ firmware มอบการควบคุมให้ OS
Trusted Boot: ใช้ Virtual Trusted Platform Module (VTPM) ยืนยันลายเซ็นดิจิทัลของ Windows 10 kernel ก่อนโหลด ต่อมา ยืนยันทุกส่วนประกอบของกระบวนการเริ่มต้น Windows รวมถึง boot drivers, startup files, และ ELAM หากไฟล์ถูกเปลี่ยนแปลง Bootloader จะตรวจจับและปฏิเสธการโหลด โดยรับรู้ว่าเป็นส่วนประกอบที่เสียหาย สรุปคือให้ Chain of trust สำหรับทุกองค์ประกอบระหว่างบูท
ประเภทของ Kernel
Kernel สามารถสื่อสารกับฮาร์ดแวร์บนเส้นทางที่ปลอดภัย บริษัทสามารถพัฒนา Kernel ที่สื่อสารกับฮาร์ดแวร์ของตนผ่านชุดปุ่ม ตัวอย่างเครื่องซักผ้า: ขึ้นอยู่กับการปรับมือและเวลาที่ตั้ง Kernel ระดับพื้นฐานก็เพียงพอ แต่ Kernel เองซับซ้อนขึ้นตามเวลา ทำให้มีประเภทต่างๆ
- Monolithic Kernel: OS และ Kernel รันในพื้นที่หน่วยความจำเดียวกัน เหมาะที่ความปลอดภัยไม่ใช่ปัญหาใหญ่ ทำให้เข้าถึงเร็ว แต่ถ้ามีบั๊กใน device driver ระบบทั้งหมดจะล่ม
- Microkernel: รูปแบบลดขนาดของ Monolithic Kernel ที่ Kernel เองทำงานส่วนใหญ่ ไม่ต้องการ GUI เพิ่มเติม ควรใช้ที่ความปลอดภัยและการล่มของระบบไม่ใช่ปัญหา
- Hybrid Kernel: Kernel ที่เห็นบ่อยที่สุด Windows, macOS ของ Apple ผสมผสานระหว่าง Monolithic และ Microkernel ย้าย drivers ออกแต่เก็บ system services ไว้ใน Kernel – คล้ายกับการโหลดไดรเวอร์ตอน Windows เริ่มบูท
- Nano Kernel: หากต้องการ Kernel แต่ฟังก์ชันส่วนใหญ่ตั้งค่าภายนอก ประเภทนี้เข้ามาช่วย
- Exo Kernel: Kernel นี้เสนอแค่การป้องกันกระบวนการและจัดการทรัพยากร ใช้ส่วนใหญ่เมื่อทดสอบโปรเจกต์ภายใน แล้วอัปเกรดเป็น Kernel ประเภทที่ดีกว่า
Kernel มีรายละเอียดมากกว่านี้มาก เมื่อลึกลงไป ความหมายของ Kernel จะกว้างและลึกขึ้น
หวังว่าบทความนี้เข้าใจง่ายและช่วยผ่านพื้นฐานได้
อ่านต่อ: Interactive map of Linux Kernel
