linux kernel

Kernel คืออะไร

สำหรับผู้ที่เริ่มใช้งาน Linux อาจจะมีคำถามกับคำว่า Kernel คืออะไร จริงๆแล้ว Kernel คือ โปรแกรมที่เป็นศูนย์กลางในระบบ computer ทำหน้าที่ควบคุมการทำงานตั้งแต่เริ่ม boot server รวมถึงการ start/stop program และ input/output จาก software ทั้งหมด คอยจัดการทรัยากรต่างๆ หรือ hardware เช่น keyboard, monitor, printer, speaker โดย Kernel ทำหน้าที่เชื่อมการทำงานระหว่าง software และ hardware เข้าด้วยกันนั่นเอง

ส่วนที่เป็น code สำคัญของ Kernel จะถูก load เข้าส่วน memory ที่จองไว้ให้เฉพาะ เพื่อป้องกันการเขียนทับจาก application อื่น การเชื่อมต่อของ Kernel เป็นระดับต่ำสุดที่เกียวข้องกับ hardware เมื่อมีการ request ไปยัง Kernel เราจะเรียกว่า system call และส่วนที่ใช้งานจะเรียกว่า resource

kernel-layout

หน้าที่ของ Kernel

หลักๆคือทำงานเป็นสื่อกลางในการเข้าถึงทรัพยากรของระบบเช่น

1. Central processing unit

ทำหน้าที่ควบคุมจัดการ program ที่กำลังทำงาน โดย Kernel จะรับผิดชอบในการตัดสินใจว่า program แต่ละตัวจะจองหน่วยประมวลผล core ไหน และ กี่ core ในการทำงาน

 

2. Random-access memory

ใช้ในการเก็บข้อมูลของ program ที่ใช้งาน ซึ่งโดยปกติจะมี program จำนวนมากเข้ามาใช้งานตลอดเวลาตามความต้องการของแต่ละ application ซึ่ง Kernel มีหน้าที่ตัดสินใจว่า memory ส่วนไหนที่ process แต่ละอันสามารถใช้งานได้ และ ควรทำอย่างไรเมื่อ memory ไม่เพียงพอ

 

3. Input/Output(I/O) devices

I/O ของแต่ละอุปกรณ์ เช่น keyboard, mouse, disk, printer, network adapter หรือ จอ monitor ทั้งหมดนี้ Kernel จะควบคุมการสื่อสารระหว่าง application และ hardware ให้

 

ประเภทของ Kernel

1. Monolithic Kernels

เกิดขึ้นในยุดเริ่มแรกของ Kernel โดยระบบพื้นฐานทั้งหมด เช่น process และการจัดการ memory จะถูกรวมอยู่ใน module เดียวกันภายใน kernel ซึ่งเป็นผลทำให้ Kernel มีขนาดใหญ่ และ ยากต่อการดูแล ภายหลังจึงได้มีการแยก module ออกมาและทำการเลือก load ใช้งานตามความเหมาะสม เป็นเสมือน extension ให้ OS เลือกใช้ ทำให้ไม่ต้องทำการปิดและ compile ใหม่ทั้งหมด เมื่อมีการแก้ bug

ปัจจุบัน Linux ออกแบบตาม monolithic

ตัวอย่างเช่น
  • Linux
  • MS-DOS
  • Microsoft Windows 9x Series
  • Agnix

 

2. Microkernels

จากปัญหาในเรื่องขนาดของ Kernel ที่โตขึ้นเรื่อยๆของ monolithic ทำให้มีการแยกส่วนของระบบพื้นฐานเช่น driver, protocol stack, file system ออกมารันข้างนอก ทำให้ลดขนาดของ Kernel ลง และยังเพิ่ม security และ stability ให้กับ OS อีกด้วย โดยทั้งหมดจะทำงานในส่วนของ user space และทำงานบนระบบตามการเรียกใช้ของ program
ระบบปฏิบัติการ QNX ออกแบบตาม microkernel

ตัวอย่างเช่น

  • AIX
  • AmigaOS
  • Amoeba
  • Android OS
  • Chorus microkernel
  • EROS
  • Haiku

 

3. Hybrid kernels

ถูกนำมาใช้งานกับ OS ระดับ commercial มีลักษณะคล้าย microkernel ยกเว้นแต่ว่ามันได้รวมเอา code เสริมใน kernel space มาเพิ่มความสามารถโดยใช้เป็น extension ให้กับ microkernel ด้วยคุณสมบัติของ monolithic kernel ซึ่งต่างจาก monolithic แท้ๆเพราะอันนั้นไม่สามารถ load module ในขณะทำงานได้ เพราะฉะนั้นจึงสรุปได้ว่า Hybrid kernel เป็น microkernel ที่มี code เสริ่มบางอย่างบน kernel space ที่ช่วยทำให้ทำงานได้ไวขึ้น

ตัวอย่างเช่น

  • Microsoft Windows NT 3.1, NT 3.5, NT 3.51, NT 4.0, 2000, XP
  • macOS

kernel type

 

Author: Suphakit Annoppornchai
Credit: https://saixiii.com, https://en.wikipedia.org

2 Thoughts to “Kernel คืออะไร Kernel คือ ส่วนกลางควบคุมการทำงานทุกอย่างบน OS”

Leave a Reply