ข้ามไปเนื้อหา

ใจกลาง

จากวิกิพีเดีย สารานุกรมเสรี
(เปลี่ยนทางจาก Kernel)
แผนภาพโดยสังเขปแสดงการที่ใจกลางเชื่อมต่อโปรแกรมประยุกต์กับฮาร์ดแวร์ของคอมพิวเตอร์

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

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

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

หน่วยความจำเข้าถึงโดยสุ่ม

[แก้]

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

อุปกรณ์อินพุต/เอาท์พุต

[แก้]

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

แนวทางการออกแบบใจกลาง

[แก้]
แผนผังของใจกลางแบบโมโนลิทิก

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

[แก้]

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

ใจกลางแบบโมโนลิทิกสมัยใหม่ เช่นใจกลางลินุกซ์, ใจกลางฟรีบีเอสดี, ใจกลางไอบีเอ็ม 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)

[แก้]

เคอร์เนลแบบผสม เป็นเคอร์เนลที่รวมความสามารถของไมโครเคอร์เนลและโมโนลิทิกเคอร์เนลเข้าด้วยกันเพื่อเลียนแบบประสิทธิภาพและเสถียรภาพของโมโนลิทิกเคอร์เนลและไมโครเคอร์เนล

หมายเหตุ

[แก้]
  1. ตามระบบศัพท์บัญญัติ สำนักงานราชบัณฑิตยสภา[1]
  2. ขึ้นอยู่กับสถาปัตยกรรมคอมพิวเตอร์

อ้างอิง

[แก้]
  1. "ศัพท์บัญญัติ ๔๐ สาขาวิชา สำนักงานราชบัณฑิตยสภา".{{cite web}}: CS1 maint: url-status (ลิงก์)
  2. 2.0 2.1 "Kernel". Linfo. Bellevue Linux Users Group. เก็บจากแหล่งเดิมเมื่อ 8 December 2006. สืบค้นเมื่อ 15 September 2016.
  3. Randal E. Bryant; David R. O'Hallaron (2016). Computer Systems: A Programmer's Perspective (Third ed.). Pearson. p. 17. ISBN 978-0-13-409266-9.
  4. "Open Sources: Voices from the Open Source Revolution". 1-56592-582-3. 29 March 1999. เก็บจากแหล่งเดิมเมื่อ 1 February 2020. สืบค้นเมื่อ 24 March 2019.

แหล่งข้อมูลอื่น

[แก้]