คุณอาจเคยได้ยินเกี่ยวกับแอปพลิเคชันที่ทำงานในโหมด”เคอร์เนล”หรือ”ผู้ใช้”ทั้งหมดอยู่ที่ระบบปฏิบัติการทำงานอย่างไรเมื่อทำงาน เมื่อคุณเข้าใจแล้ว จะเข้าใจความแตกต่างระหว่างโหมดผู้ใช้และโหมดเคอร์เนลได้ง่าย
ทำความเข้าใจว่าระบบปฏิบัติการทำอะไร
คอมพิวเตอร์ประกอบด้วยฮาร์ดแวร์ ส่วนประกอบอิเล็กทรอนิกส์ และซอฟต์แวร์ รหัสคอมพิวเตอร์ที่ดำเนินการโดย ฮาร์ดแวร์นั้น แต่สิ่งที่ไม่ชัดเจนกว่าคือการทำงานร่วมกันอย่างไร
สารบัญ
องค์ประกอบที่สำคัญที่สุดของคอมพิวเตอร์คือบิตหรือ”เลขฐานสอง”ทุกสิ่งที่คอมพิวเตอร์ทำจะถูกแสดงเป็นหนึ่งและศูนย์ ส่วนประกอบคอมพิวเตอร์ที่แตกต่างกันแสดงถึงบิตในรูปแบบต่างๆ ใน CPU ทรานซิสเตอร์ขนาดเล็กจะแทนค่าหนึ่งและศูนย์โดยการเปิดหรือปิด ทรานซิสเตอร์เหล่านี้ถูกจัดเรียงเป็นโครงสร้างเชิงตรรกะ เรียกว่าลอจิกเกท
ในหน่วยความจำอิเล็กทรอนิกส์ของคอมพิวเตอร์ บิตจะแสดงด้วยเซลล์หน่วยความจำที่มีประจุสูงหรือต่ำกว่าเกณฑ์ที่กำหนด บนฮาร์ดไดรฟ์แบบกลไก บิตจะแสดงเป็นความผันผวนของแม่เหล็กที่วัดบนจานหมุน สำหรับออปติคัลดิสก์ หลุมและที่ดินที่ทำหรือไม่สะท้อนแสงเลเซอร์จะทำงานแบบเดียวกัน
ไม่ว่าการแสดงรหัสไบนารีจะเป็นจริงด้วยวิธีใด คุณก็สามารถลดส่วนประกอบคอมพิวเตอร์ของผู้บริโภคทั้งหมดลงเหลือรหัสเครื่องดิบนี้ได้ในที่สุด
แล้วคุณจะเปลี่ยนจากอินเทอร์เฟซที่เป็นมิตรกับมนุษย์ของคอมพิวเตอร์ไปสู่ข้อมูลดิบต่ำได้อย่างไร ระดับกระบวนการในคอมพิวเตอร์เอง? นั่นคือที่มาของระบบปฏิบัติการ โดยจะควบคุมฮาร์ดแวร์ของคอมพิวเตอร์โดยตรง
ซอฟต์แวร์นี้จะแปลทุกอย่างที่แอปพลิเคชัน (และดังนั้นผู้ใช้) ต้องการเป็นคำสั่งรหัสเครื่องที่ CPU และส่วนประกอบอื่นๆ เข้าใจ ซอฟต์แวร์ที่สำคัญที่สุดในกระบวนการนี้คือเคอร์เนล
เคอร์เนลคืออะไร
เคอร์เนลเป็นแกนหลักของระบบปฏิบัติการตามที่ชื่อแนะนำ เคอร์เนลคือซอฟต์แวร์ที่อยู่ใน RAM และควบคุมทุกอย่างที่คอมพิวเตอร์ทำ เมื่อบางสิ่งถูกเขียนลงในหน่วยความจำ เคอร์เนลจะเป็นตัวกำหนดการดำเนินการ
เคอร์เนลรู้วิธีเชื่อมต่อกับฮาร์ดแวร์ เช่น GPU และการ์ดเครือข่าย แต่อาจไม่ทราบวิธีใช้งานอย่างเต็มศักยภาพ โดยอาศัยมาตรฐานทั่วไปในอุตสาหกรรมคอมพิวเตอร์
ไดรเวอร์ฮาร์ดแวร์เข้ามาเล่นที่นี่ ไดรเวอร์จะบอกระบบปฏิบัติการของคุณถึงวิธีการทำงานกับส่วนประกอบเฉพาะ ซึ่งเป็นสาเหตุที่คุณต้องการไดรเวอร์ที่แตกต่างกันสำหรับ GPU Nvidia และ AMD เป็นต้น
เคอร์เนลคืออำนาจสูงสุดภายในคอมพิวเตอร์ที่มาพร้อมกับไดรเวอร์ที่เหมาะสม ซึ่งรวมถึงการทำสิ่งต่างๆ ที่อาจทำลายข้อมูลได้อย่างหายนะ
บทบาทของ Application Programming Interfaces (API)
ในสมัยของ MS-DOS นักพัฒนาซอฟต์แวร์ต้องเขียนซอฟต์แวร์ของตนโดยเฉพาะสำหรับ ฮาร์ดแวร์ของผู้ใช้ ตัวอย่างที่โด่งดังที่สุดในระบบ MS-DOS คือไดรเวอร์การ์ดเสียง
วิดีโอเกมที่กำหนดจะต้องรองรับการ์ดยอดนิยม (Sound Blaster, Ad-lib, Gravis Ultrasound เป็นต้น) และหวังว่าผู้เล่นส่วนใหญ่จะได้รับการคุ้มครอง ทุกวันนี้ สิ่งต่างๆ ทำงานแตกต่างกันมาก ขอบคุณ API
หน้าจอการเลือกการ์ดเสียงจาก Wolf3D
Microsoft DirectX เป็นตัวอย่างที่ดี หากคุณต้องการคำอธิบายเชิงลึก โปรดดูที่ DirectX คืออะไรและเหตุใดจึงสำคัญ อย่างไรก็ตาม สิ่งที่สำคัญที่สุดที่ควรทราบคือ API นำเสนอวิธีมาตรฐานสำหรับนักพัฒนาซอฟต์แวร์ในการขอทรัพยากรฮาร์ดแวร์จากส่วนประกอบต่างๆ เช่น GPU นอกจากนี้ ผู้ผลิตฮาร์ดแวร์ต้องตรวจสอบให้แน่ใจว่าผลิตภัณฑ์ของตนสอดคล้องกับ DirectX เท่านั้น เพื่อให้แน่ใจว่าสามารถทำงานร่วมกับซอฟต์แวร์ที่เป็นไปตามข้อกำหนดเดียวกันได้อย่างสมบูรณ์
API มีชั้นการแปลระหว่างแอปพลิเคชันซอฟต์แวร์และเคอร์เนลระดับต่ำพร้อมด้วยไดรเวอร์ฮาร์ดแวร์ ใช่ สิ่งนี้มาพร้อมกับบทลงโทษด้านประสิทธิภาพเล็กน้อย อย่างไรก็ตาม สำหรับคอมพิวเตอร์สมัยใหม่ สิ่งนี้มีเพียงเล็กน้อย และมีข้อดีหลายประการ ซึ่งในที่สุดเราก็มาถึงโหมดผู้ใช้และโหมดเคอร์เนล
โหมดผู้ใช้กับโหมดเคอร์เนล
ระบบปฏิบัติการสมัยใหม่เรียกใช้ “กระบวนการ” หลายร้อยหรือหลายพันรายการพร้อมกัน โดยให้เวลา CPU แบบไดนามิกตามความจำเป็นตามลำดับความสำคัญและข้อกำหนดด้านพลังงานในการคำนวณ
เมื่อคุณเปิดแอปพลิเคชัน โปรแกรมจะสร้างกระบวนการและ CPU สามารถดำเนินการได้ในโหมดผู้ใช้หรือโหมดเคอร์เนล
กระบวนการ Windows ที่ทำงานในโหมดผู้ใช้จะมีสิทธิ์เข้าถึงเฉพาะพื้นที่ที่อยู่หน่วยความจำเสมือนส่วนตัวและตารางจัดการเท่านั้น ซอฟต์แวร์ใช้ตารางเหล่านี้เพื่อเก็บข้อมูลใน RAM และขอทรัพยากร ไม่มีการเข้าถึงหน่วยความจำหรือฮาร์ดแวร์อื่นๆ โดยตรง และขึ้นอยู่กับระบบปฏิบัติการที่จะจับคู่พื้นที่เสมือนเหล่านั้นกับฮาร์ดแวร์ที่แท้จริงของคอมพิวเตอร์
นี่เป็นสิ่งที่ดีด้วยเหตุผลหลายประการ แต่ข้อดีที่สำคัญที่สุดคือแอปพลิเคชันไม่สามารถทำได้ เขียนทับหรือแก้ไขข้อมูลนอกพื้นที่ที่อยู่หน่วยความจำเสมือน นอกจากนี้ ฟังก์ชันบางอย่างไม่ได้จำกัดไว้สำหรับกระบวนการในโหมดผู้ใช้ ซึ่งส่วนใหญ่เป็นฟังก์ชันที่อาจทำให้ระบบขัดข้องหรือทำลายข้อมูลได้
เมื่อกระบวนการเริ่มต้นหรือถูกยกระดับเป็นโหมดเคอร์เนล กระบวนการจะมีสิทธิ์เข้าถึงระบบเต็มรูปแบบ ทรัพยากร แม้กระทั่งทรัพยากรที่สงวนไว้สำหรับระบบปฏิบัติการ ดังนั้น ตามทฤษฎีแล้ว มันสามารถเขียนทับข้อมูลสำคัญที่ระบบปฏิบัติการจำเป็นต้องทำงานอย่างถูกต้องได้
กับดักและข้อยกเว้น
สิ่งสำคัญคือต้องเข้าใจว่าโหมดทั้งสองนี้บังคับใช้ที่ระดับฮาร์ดแวร์โดยตัวซีพียูเอง หากแอปพลิเคชันที่ทำงานในโหมดผู้ใช้พยายามทำบางสิ่งที่ต้องมีการเข้าถึงโหมดเคอร์เนล แอปพลิเคชันจะสร้าง”กับดัก”หรือ”ข้อยกเว้น”ระบบปฏิบัติการจะจัดการกับแอปพลิเคชัน โดยปกติแล้วจะปิดตัวลงและสร้างบันทึกการขัดข้อง เพื่อให้นักพัฒนาสามารถเห็นสิ่งที่เกิดขึ้นในหน่วยความจำเมื่อสิ่งต่าง ๆ ออกจากระบบราง
อันตรายจากโหมดเคอร์เนล: หน้าจอสีน้ำเงินแห่งความตาย
หากคุณเคยประสบกับหน้าจอสีน้ำเงินแห่งความตาย (ใครยังไม่เคย) ที่บังคับให้คอมพิวเตอร์ของคุณปิดหรือรีสตาร์ท มีโอกาสดีที่มันจะเป็นโหมดเคอร์เนล กระบวนการที่จะตำหนิ
เมื่อกระบวนการในโหมดเคอร์เนลทำสิ่งที่ไม่ควรทำ ระบบปฏิบัติการจะไม่สามารถกู้คืนได้ และคอมพิวเตอร์ทั้งหมดจะหยุดทำงาน เมื่อกระบวนการของโหมดผู้ใช้ยุ่งเหยิง มีเพียงแอปพลิเคชันเท่านั้นที่หยุดทำงาน และซอฟต์แวร์ที่เหลือและระบบปฏิบัติการสามารถทำงานต่อไปได้โดยไม่มีปัญหาใดๆ
นี่เป็นพื้นที่หนึ่งที่ API มีบทบาทสำคัญ เนื่องจากเป็น API ที่ขอสิทธิ์ในโหมดเคอร์เนล แอปพลิเคชันโหมดผู้ใช้จะมอบหมายคำขอที่จำเป็นต่อ API ในโหมดเคอร์เนลเท่านั้น
นี่คือสาเหตุที่โดยปกติแล้วโหมดเคอร์เนลจะมอบให้กับกระบวนการระบบระดับต่ำที่จำเป็นต้องเข้าถึงฮาร์ดแวร์ของคอมพิวเตอร์โดยตรงเท่านั้น. โดยปกติ สิทธิ์นี้จะขยายไปสู่กระบวนการเนื่องจากต้องการประสิทธิภาพมากกว่าที่โหมดผู้ใช้จะมีให้ได้ คำสั่ง CPU บางคำสั่งทำงานในโหมดเคอร์เนลเท่านั้น ดังนั้นหากกระบวนการจำเป็นต้องใช้ฟังก์ชันเหล่านั้น จะต้องได้รับการยกระดับ
หากคุณมีปัญหากับ Blue Screen of Death โปรดอ่านข้อมูลของเรา คู่มือการแก้ไขปัญหาจอฟ้ามรณะสำหรับ Windows 10!