ใจกลาง

ไฟล์:Kernel Layout.svg|thumb|แผนภาพโดยสังเขปแสดงการที่ใจกลางเชื่อมต่อโปรแกรมประยุกต์กับฮาร์ดแวร์ของคอมพิวเตอร์
ใจกลาง หรือ เคอร์เนล (kernel) เป็นโปรแกรมคอมพิวเตอร์ที่เป็นแกนกลางของระบบปฏิบัติการของคอมพิวเตอร์ โดยทั่วไปแล้ว ใจกลางจะสามารถควบคุมทุกอย่างในระบบได้อย่างสมบูรณ์ ใจกลางยังรับผิดชอบในการป้องกันและบรรเทาข้อขัดแย้งระหว่างกระบวนการต่าง ๆ อีกด้วย ใจกลางเป็นส่วนระบบปฏิบัติการที่จะคงอยู่ในหน่วยความจำเสมอ และอำนวยความสะดวกในการโต้ตอบระหว่างส่วนประกอบฮาร์ดแวร์และซอฟต์แวร์ ใจกลางแบบเต็มจะควบคุมทรัพยากรฮาร์ดแวร์ทั้งหมด (เช่น อินพุต/เอาต์พุต หน่วยความจำ การเข้ารหัส) ผ่านโปรแกรมขับอุปกรณ์ ไกล่เกลี่ยข้อขัดแย้งระหว่างกระบวนการที่เกี่ยวข้องกับทรัพยากรดังกล่าว และปรับการใช้ทรัพยากรทั่วไปให้เหมาะสม เช่น การใช้หน่วยประมวลผลกลางกับแคช ระบบไฟล์ และซ็อกเก็ตเครือข่าย ในระบบส่วนใหญ่ ใจกลางเป็นหนึ่งในโปรแกรมแรก ๆ ที่โหลดเมื่อ เริ่มต้นระบบ (หลังจาก บูตโหลดเดอร์) โดยจะจัดการส่วนที่เหลือของการเริ่มต้นระบบ เช่นเดียวกับหน่วยความจำ อุปกรณ์ต่อพ่วง และคำขอ อินพุต/เอาท์พุต จากซอฟต์แวร์ โดยแปลเป็นคำสั่งในการประมวลผล ข้อมูลสำหรับ หน่วยประมวลผลกลาง
โดยปกติรหัสสำคัญของใจกลางจะถูกโหลดลงในพื้นที่หน่วยความจำแยกต่างหาก ซึ่งได้รับการป้องกันจากการเข้าถึงโดยโปรแกรมประยุกต์หรือส่วนอื่น ๆ ที่มีความสำคัญน้อยกว่าของระบบปฏิบัติการ ใจกลางดำเนินงานต่าง ๆ เช่น กระบวนการที่ทำงานอยู่ การจัดการอุปกรณ์ฮาร์ดแวร์ เช่น ฮาร์ดดิสก์ และการจัดการการขัดจังหวะในพื้นที่ใจกลาง ที่ได้รับการป้องกันนี้ ในทางตรงกันข้าม โปรแกรมประยุกต์ เช่น เบราว์เซอร์ โปรแกรมประมวลผลคำ หรือเครื่องเล่นเสียงหรือวิดีโอ จะใช้พื้นที่หน่วยความจำ พื้นที่ผู้ใช้ แยกต่างหาก การแยกนี้ป้องกันไม่ให้ข้อมูลผู้ใช้และข้อมูลใจกลางรบกวนซึ่งกันและกัน ซึ่งอาจทำให้เกิดความไม่เสถียรหรือความช้า รวมถึงป้องกันไม่ให้โปรแกรมประยุกต์ที่ทำงานผิดปกติส่งผลกระทบต่อโปรแกรมประยุกต์อื่นหรือทำให้ระบบปฏิบัติการเสียหายทั้งหมด แม้ในระบบที่ใจกลางรวมอยู่ในพื้นที่ที่อยู่ของโปรแกรมประยุกต์ การป้องกันหน่วยความจำก็ยังถูกใช้เพื่อป้องกันไม่ให้โปรแกรมประยุกต์ที่ไม่ได้รับอนุญาตแก้ไขใจกลาง
ใจกลางนี้มีหน้าที่รับผิดชอบในการรันโปรแกรม ใจกลางทำหน้าที่ตัดสินใจว่าควรมอบหมายโปรแกรมที่กำลังทำงานอยู่ให้กับโปรเซสเซอร์ตัวใด

**หน่วยความจำเข้าถึงโดยสุ่ม**
หน่วยความจำเข้าถึงโดยสุ่ม (RAM) ใช้เพื่อจัดเก็บทั้งคำสั่งโปรแกรมและข้อมูลEfn|ขึ้นอยู่กับสถาปัตยกรรมคอมพิวเตอร์ โดยทั่วไปแล้ว ทั้งสองจะต้องมีอยู่ในหน่วยความจำเพื่อให้โปรแกรมดำเนินการได้ บ่อยครั้งที่หลายโปรแกรมต้องการเข้าถึงหน่วยความจำ โดยมักต้องการหน่วยความจำมากกว่าที่คอมพิวเตอร์มีอยู่ ใจกลางมีหน้าที่ในการตัดสินใจเลือกหน่วยความจำที่แต่ละกระบวนการสามารถใช้ได้ และกำหนดสิ่งที่ต้องทำเมื่อมีหน่วยความจำไม่เพียงพอ

**อุปกรณ์อินพุต/เอาท์พุต**
ใจกลางเตรียมวิธีการที่สะดวกสำหรับโปรแกรมประยุกต์ในการใช้อุปกรณ์อินพุต/เอาท์พุต เช่น อุปกรณ์ต่อพ่วง (แป้นพิมพ์ เมาส์ ดิสก์ไดรฟ์ เครื่องพิมพ์ อุปกรณ์ยูเอสบี อะแดปเตอร์เครือข่าย อุปกรณ์แสดงผล และอื่น ๆ) ซึ่งโดยทั่วไปแล้วใจกลางจะแยกออกมา ทำให้โปรแกรมประยุกต์ต่าง ๆ จะไม่จำเป็นต้องทราบรายละเอียดการใช้งาน

**แนวทางการออกแบบใจกลาง**
แผนผังของใจกลางแบบโมโนลิทิก

**ใจกลางแบบโมโนลิทิก (Monolithic kernel)**
ในใจกลางแบบโมโนลิทิก บริการระบบปฏิบัติการทั้งหมดทำงานพร้อมกับเคอร์เนลเธรดหลัก ดังนั้นจึงอยู่ในพื้นที่หน่วยความจำเดียวกันด้วย แนวทางนี้ให้การเข้าถึงฮาร์ดแวร์ที่สมบูรณ์และมีประสิทธิภาพ ผู้พัฒนายูนิกซ์ เคน ทอมป์สัน ระบุว่า "ในความเห็น ของเขา ใจกลางแบบโมโนลิทิกนั้นนำไปใช้ได้ง่ายกว่า" ข้อเสียเปรียบหลักของใจกลางแบบโมโนลิทิกคือการพึ่งพาระหว่างส่วนประกอบของระบบจุดบกพร่องในโปรแกรมขับอุปกรณ์อาจทำให้ระบบเสียหายทั้งหมดและความจริงที่ว่าใจกลางแบบโมโนลิทิกนั้นยากต่อการดูแลรักษา ทอมป์สันยังระบุด้วยว่า "ใจกลางแบบโมโนลิทิกเนี่ย ถ้าไม่ระมัดระวังก็มีสิทธิจะเละตุ้มเป๊ะ"
ใจกลางแบบโมโนลิทิกสมัยใหม่ เช่นใจกลางลินุกซ์, ใจกลางฟรีบีเอสดี, ใจกลางไอบีเอ็ม AIX, ใจกลาง HP-UX และใจกลาง Solaris ซึ่งทั้งหมดนี้จัดอยู่ในหมวดหมู่ของระบบปฏิบัติการเหมือนยูนิกซ์ รองรับ โมดูลใจกลางที่โหลดได้ ทำให้โมดูลต่าง ๆ เพื่อโหลดลงในใจกลางขณะรันไทม์ ทำให้สามารถขยายขีดความสามารถของใจกลางได้ง่ายตามต้องการ ขณะเดียวกันก็ช่วยลดปริมาณรหัสที่ทำงานในพื้นที่ใจกลางให้เหลือน้อยที่สุด

**ไมโครเคอร์เนล (Microkernel)**
รูปภาพแสดงหลักการทำงานของไมโครเคอร์เนล
ไมโครเคอร์เนล เป็นเคอร์เนลที่แบ่งการทำงานในแต่ละภาคส่วนออกจากกัน ตัวอย่างเช่น แบ่งส่วนของซอฟต์แวร์ประยุกต์ ส่วนของอุปกรณ์ ส่วนจัดการไฟล์ ฯลฯ ในทางทฤษฎีไมโครเคอร์เนลมีความเสถียรสูงเนื่องจากแบ่งการทำงานทุกภาคส่วนออกจากกัน แต่มีข้อเสียคือเรียกประสิทธิภาพของระบบออกมาได้ไม่เต็มที่
ตัวอย่างของไมโครเคอร์เนล และ ระบบปฏิบัติการที่มีพื้นบน ไมโครเคอร์เนล:- AIX- AmigaOS- Amoeba- Chorus microkernel- EROS- Haiku- K42- LSE/OS- KeyKOS- The L4 microkernel family- Mach, used in GNU Hurd, NEXTSTEP, OPENSTEP, and Mac OS X- MERT- Minix- MorphOS- NewOS- QNX- Phoenix-RTOS- RadiOS- Spring operating system- VSTa- Symbian OS

**เคอร์เนลแบบผสม (Hybrid kernel)**
เคอร์เนลแบบผสม เป็นเคอร์เนลที่รวมความสามารถของไมโครเคอร์เนลและโมโนลิทิกเคอร์เนลเข้าด้วยกันเพื่อเลียนแบบประสิทธิภาพและเสถียรภาพของโมโนลิทิกเคอร์เนลและไมโครเคอร์เนล- BeOS kernel- DragonFly BSD- Haiku kernel- NetWare kernel- Plan 9 kernel- ReactOS kernel- NT kernel Windows NT kernel (Windows 2000, Windows XP, Windows 2003, and Windows Vista)- XNU kernel (ใช้ใน Mac OS X)

**หมายเหตุ**

**อ้างอิง**
 Andrew Tanenbaum, Operating Systems - Design and Implementation (Third edition) ;- Andrew Tanenbaum, Modern Operating Systems (Second edition) ;- Daniel P. Bovet, Marco Cesati, The Linux Kernel;- David A. Peterson, Nitin Indurkhya, Patterson, Computer Organization and Design, Morgan Koffman  (ISBN 1-55860-428-6) ;- B.S. Chalk, Computer Organisation and Architecture, Macmillan P. (ISBN 0-333-64551-0).

**แหล่งข้อมูลอื่น**
  Kernel คืออะไร - แหล่งข้อมูลความรู้ภาษาไทย
หมวดหมู่:เทคโนโลยีระบบปฏิบัติการ