ใจกลาง

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