ในฐานะคนที่เขียนโปรแกรมที่ทำงานโดยไม่มีระบบปฏิบัติการฉันขอเสนอคำตอบที่ชัดเจน
ผู้ปฏิบัติการต้องใช้เคอร์เนลระบบปฏิบัติการหรือไม่
ขึ้นอยู่กับวิธีการเขียนและสร้างโปรแกรม
คุณสามารถเขียนโปรแกรม (สมมติว่าคุณมีความรู้) ที่ไม่จำเป็นต้องใช้ระบบปฏิบัติการเลย
โปรแกรมดังกล่าวอธิบายว่าเป็นแบบสแตนด์อโลน
บูตโหลดเดอร์และโปรแกรมวินิจฉัยใช้โดยทั่วไปสำหรับโปรแกรมเดี่ยว ๆ
อย่างไรก็ตามโปรแกรมทั่วไปที่เขียนและสร้างขึ้นในบางสภาพแวดล้อมระบบปฏิบัติการโฮสต์จะใช้ค่าเริ่มต้นในการดำเนินการในสภาพแวดล้อมระบบปฏิบัติการโฮสต์เดียวกันนั้น
จำเป็นต้องมีการตัดสินใจและการกระทำที่ชัดเจนในการเขียนและสร้างโปรแกรมแบบสแตนด์อโลน
... ผลลัพธ์จากคอมไพเลอร์คือรหัสเครื่อง (ปฏิบัติการ) ซึ่งฉันคิดว่าเป็นคำสั่งของ CPU โดยตรง
แก้ไข.
เมื่อเร็ว ๆ นี้ฉันได้อ่านข้อมูลเกี่ยวกับเมล็ดและฉันพบว่าโปรแกรมไม่สามารถเข้าถึงฮาร์ดแวร์ได้โดยตรง แต่ต้องผ่านเคอร์เนล
นั่นเป็นข้อ จำกัด ที่กำหนดโดยโหมด CPU ที่ระบบปฏิบัติการใช้ในการรันโปรแกรมและอำนวยความสะดวกโดยเครื่องมือสร้างบางอย่างเช่นคอมไพเลอร์และไลบรารี
ไม่ใช่ข้อ จำกัด ที่แท้จริงในทุกโปรแกรมที่เคยเขียน
ดังนั้นเมื่อเราคอมไพล์ซอร์สโค้ดง่ายๆให้พูดด้วยฟังก์ชั่น printf () และการคอมไพล์สร้างรหัสเครื่องที่ปฏิบัติการได้แต่ละคำสั่งในรหัสเครื่องนี้จะถูกเรียกใช้งานโดยตรงจากหน่วยความจำ (เมื่อโหลดรหัสลงในหน่วยความจำโดยระบบปฏิบัติการ ) หรือแต่ละคำสั่งในรหัสเครื่องจะต้องผ่าน OS (เคอร์เนล) เพื่อที่จะดำเนินการหรือไม่
ทุกคำสั่งถูกดำเนินการโดย CPU
คำสั่งที่ไม่ได้รับการสนับสนุนหรือผิดกฎหมาย (เช่นกระบวนการมีสิทธิ์ไม่เพียงพอ) จะทำให้เกิดข้อยกเว้นทันทีและ CPU จะดำเนินการตามปกติเพื่อจัดการกับสภาพที่ผิดปกตินี้แทน
printf ()ฟังก์ชั่นไม่ควรถูกนำมาใช้เป็นตัวอย่างของ"รหัสที่มาง่าย"
การแปลจากภาษาการเขียนโปรแกรมระดับสูงเชิงวัตถุเป็นรหัสเครื่องอาจไม่สำคัญเท่ากับคุณ
จากนั้นคุณเลือกหนึ่งในฟังก์ชันที่ซับซ้อนที่สุดจากไลบรารีรันไทม์ที่ดำเนินการแปลงข้อมูลและ I / O
โปรดทราบว่าคำถามของคุณกำหนดสภาพแวดล้อมด้วยระบบปฏิบัติการ (และไลบรารีรันไทม์)
เมื่อระบบถูกบูตและระบบปฏิบัติการได้รับการควบคุมของคอมพิวเตอร์ข้อ จำกัด จะถูกกำหนดในสิ่งที่โปรแกรมสามารถทำได้ (เช่น I / O จะต้องดำเนินการโดยระบบปฏิบัติการ)
หากคุณคาดว่าจะรันโปรแกรมแบบสแตนด์อโลน (เช่นไม่มีระบบปฏิบัติการ) คุณจะต้องไม่บูตคอมพิวเตอร์เพื่อเรียกใช้ระบบปฏิบัติการ
... จะเกิดอะไรขึ้นหลังจากโหลดรหัสเครื่องในหน่วยความจำ
ขึ้นอยู่กับสภาพแวดล้อม
สำหรับโปรแกรมแบบสแตนด์อโลนสามารถเรียกใช้งานได้เช่นการควบคุมจะถูกส่งโดยการกระโดดไปยังที่อยู่เริ่มต้นของโปรแกรม
สำหรับโปรแกรมที่โหลดโดยระบบปฏิบัติการโปรแกรมจะต้องเชื่อมโยงแบบไดนามิกกับไลบรารีที่แบ่งใช้ซึ่งขึ้นอยู่กับ ระบบปฏิบัติการจะต้องสร้างพื้นที่ดำเนินการสำหรับกระบวนการที่จะดำเนินการโปรแกรม
มันจะผ่านเคอร์เนลหรือคุยกับโปรเซสเซอร์โดยตรงหรือไม่
รหัสเครื่องถูกประมวลผลโดย CPU
พวกเขาไม่ได้"ไปผ่านเคอร์เนล"แต่พวกเขาจะไม่"พูดคุยกับหน่วยประมวลผล"
รหัสเครื่อง (ประกอบด้วยรหัส op และตัวถูกดำเนินการ) เป็นคำสั่งของ CPU ที่ถอดรหัสและดำเนินการ
บางทีหัวข้อถัดไปที่คุณควรตรวจสอบเป็นโหมด CPU