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

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

ใจกลางนี้มีหน้าที่รับผิดชอบในการรันโปรแกรม ใจกลางทำหน้าที่ตัดสินใจว่าควรมอบหมายโปรแกรมที่กำลังทำงานอยู่ให้กับโปรเซสเซอร์ตัวใด

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

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

 แนวทางการออกแบบใจกลาง 
thumb|317x317px|แผนผังของใจกลางแบบโมโนลิทิก

 ใจกลางแบบโมโนลิทิก (Monolithic kernel) 

ในใจกลางแบบโมโนลิทิก บริการระบบปฏิบัติการทั้งหมดทำงานพร้อมกับเคอร์เนลเธรดหลัก ดังนั้นจึงอยู่ในพื้นที่หน่วยความจำเดียวกันด้วย แนวทางนี้ให้การเข้าถึงฮาร์ดแวร์ที่สมบูรณ์และมีประสิทธิภาพ ผู้พัฒนายูนิกซ์ เคน ทอมป์สัน ระบุว่า "ในความเห็น [ของเขา] ใจกลางแบบโมโนลิทิกนั้นนำไปใช้ได้ง่ายกว่า" ข้อเสียเปรียบหลักของใจกลางแบบโมโนลิทิกคือการพึ่งพาระหว่างส่วนประกอบของระบบจุดบกพร่องในโปรแกรมขับอุปกรณ์อาจทำให้ระบบเสียหายทั้งหมดและความจริงที่ว่าใจกลางแบบโมโนลิทิกนั้นยากต่อการดูแลรักษา ทอมป์สันยังระบุด้วยว่า "[ใจกลางแบบโมโนลิทิก]เนี่ย ถ้าไม่ระมัดระวังก็มีสิทธิจะเละตุ้มเป๊ะ"

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

 ไมโครเคอร์เนล (Microkernel) 
thumb|289px|right|รูปภาพแสดงหลักการทำงานของไมโครเคอร์เนล

ไมโครเคอร์เนล เป็นเคอร์เนลที่แบ่งการทำงานในแต่ละภาคส่วนออกจากกัน ตัวอย่างเช่น แบ่งส่วนของซอฟต์แวร์ประยุกต์ ส่วนของอุปกรณ์ ส่วนจัดการไฟล์ ฯลฯ ในทางทฤษฎีไมโครเคอร์เนลมีความเสถียรสูงเนื่องจากแบ่งการทำงานทุกภาคส่วนออกจากกัน แต่มีข้อเสียคือเรียกประสิทธิภาพของระบบออกมาได้ไม่เต็มที่

ตัวอย่างของไมโครเคอร์เนล และ ระบบปฏิบัติการที่มีพื้นบน ไมโครเคอร์เนล:
 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)

 หมายเหตุ