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

ทำความเข้าใจว่าระบบปฏิบัติการทำอะไร

คอมพิวเตอร์ประกอบด้วยฮาร์ดแวร์ ส่วนประกอบอิเล็กทรอนิกส์ และซอฟต์แวร์ รหัสคอมพิวเตอร์ที่ดำเนินการโดย ฮาร์ดแวร์นั้น แต่สิ่งที่ไม่ชัดเจนกว่าคือการทำงานร่วมกันอย่างไร

สารบัญ

องค์ประกอบที่สำคัญที่สุดของคอมพิวเตอร์คือบิตหรือ”เลขฐานสอง”ทุกสิ่งที่คอมพิวเตอร์ทำจะถูกแสดงเป็นหนึ่งและศูนย์ ส่วนประกอบคอมพิวเตอร์ที่แตกต่างกันแสดงถึงบิตในรูปแบบต่างๆ ใน 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!

Categories: IT Info