ระบบปฏิบัติการสามารถทำงานบนชิปตัวเดียวกับที่ควรจะจัดการได้อย่างไร


17

จากการอ่านของฉันเกี่ยวกับระบบปฏิบัติการ (อ่านเนื้อหาพื้นฐานใน Wikipedia, เว็บไซต์เทคโนโลยี ฯลฯ ) ฉันได้เรียนรู้ว่าระบบปฏิบัติการเป็นโปรแกรมที่อนุญาตให้โปรแกรมและแอปพลิเคชันโต้ตอบกับฮาร์ดแวร์ได้อย่างมีประสิทธิภาพและปลอดภัย

อย่างไรก็ตามฉันสับสนเกี่ยวกับวิธีที่ระบบปฏิบัติการกำกับดูแลการทำงานของคอมพิวเตอร์เมื่อจำเป็นต้องดำเนินการเอง

ฉันหมายถึงอะไร วิธีที่ฉันจินตนาการถึงระบบปฏิบัติการให้ทำงานคือบนคอมพิวเตอร์จะมีซีพียูสองตัว หนึ่งที่รันระบบปฏิบัติการตลอดเวลาและอื่น ๆ ที่ใช้ระบบปฏิบัติการเพื่อเรียกใช้คอมพิวเตอร์ อย่างไรก็ตามปรากฎว่าระบบปฏิบัติการกำลังทำงานบน CPU เดียวกันกับที่กระบวนการอื่นเป็น นี่เป็นเหมือนผู้จัดการที่ต้องทำงานในสายการผลิตเดียวกับพนักงานของเขาและจะได้รับการใช้เครื่องมือไฟฟ้าเมื่อมีพนักงานคนอื่นทำกับพวกเขา เขาจะไม่เป็นผู้จัดการที่มีประสิทธิภาพมากเพราะเขาจะไม่มีความสามารถในการออกคำสั่งหากพนักงานของเขาไม่มีระเบียบวินัยเล็กน้อย

ดังนั้นจะเป็นไปได้อย่างไรที่ระบบปฏิบัติการจะใช้เวลาส่วนหนึ่งของ CPU เดียวกันที่ต้องแชร์ระหว่างกระบวนการอื่นทั้งหมด ท้ายนี้การทำงานออกมาเป็นอย่างไร


1
ผู้จัดการไม่ควรใช้เครื่องมือไฟฟ้าของพนักงาน! เขาต้องทำให้แน่ใจว่าพนักงานมีเครื่องมือทำงานที่ใช้พลังงานแทน
MSalters

คำตอบ:


15

CPU สมัยใหม่รับรู้ถึงระบบปฏิบัติการในระดับหนึ่ง พวกเขามี "เครื่องมือไฟฟ้า" สำหรับคนแรกที่อ้างว่าพวกเขา โดยทั่วไปนี่คือบูตโหลดเดอร์ซึ่งมอบการควบคุมให้กับระบบปฏิบัติการ หนึ่งมักจะพูดถึง"โหมดเคอร์เนล" กับ "โหมดผู้ใช้"หรือ"แหวน 0" vs "แหวน 3"เพื่อแยกความแตกต่างระหว่างกระบวนการหนึ่งด้วยสิทธิ์พิเศษและส่วนที่เหลือ

"เครื่องมือไฟฟ้า" เหล่านี้เป็นสิทธิพิเศษบางประการสำหรับการจัดการทรัพยากร: ควบคุมหน่วยความจำเข้าถึงฮาร์ดแวร์และระยะเวลาในการใช้รหัสระดับผู้ใช้โดยไม่หยุดชะงัก

CPU ดำเนินการ OS ด้วยสิทธิ์พิเศษเมื่อมีเหตุการณ์ใดเหตุการณ์หนึ่งต่อไปนี้เกิดขึ้น:

  1. กระบวนการโหมดผู้ใช้มอบการควบคุมให้กับกระบวนการโหมดเคอร์เนลอย่างชัดเจน นี้เรียกว่าsyscall
  2. กระบวนการโหมดเคอร์เนลสามารถใช้สิทธิ์พิเศษในการลงทะเบียนสำหรับเหตุการณ์บางอย่าง (เช่นฮาร์ดแวร์ภายนอกส่งสัญญาณพิเศษไปยัง CPU หรือกระบวนการพื้นที่ผู้ใช้พยายามเข้าถึงทรัพยากรที่สงวนไว้) เมื่อเกิดเหตุการณ์ดังกล่าวขึ้น CPU จะหยุดกระบวนการโหมดผู้ใช้ทันทีและมอบการควบคุมกระบวนการโหมดเคอร์เนล มักจะพูดถึงจากการขัดจังหวะ

ดังนั้นระบบปฏิบัติการสามารถทำงานบนชิปตัวเดียวกันได้เพราะชิปนั้นถูกสร้างมาเพื่อสิ่งนี้ มันสามารถสำรองสิทธิพิเศษสำหรับตัวเอง CPU อาจขัดจังหวะส่วนอื่น ๆ ของรหัสโดยไม่มีสิทธิ์พิเศษเหล่านี้ทุกเวลาและมอบการควบคุมให้กับระบบปฏิบัติการ

ชิปบางตัวที่มีการสนับสนุนที่ จำกัด มาก (เช่นไมโครคอนโทรลเลอร์ ) ไม่มีการสนับสนุนสำหรับรหัสพิเศษ ชิปเหล่านี้มักจะทำงานโดยไม่มีระบบปฏิบัติการ มีโปรแกรมขนาดใหญ่เพียงโปรแกรมเดียวเท่านั้นที่สามารถเข้าถึงฮาร์ดแวร์ได้โดยตรงต้องตอบสนองต่อการขัดจังหวะของฮาร์ดแวร์และสามารถเข้าถึงทรัพยากรได้ทุกเมื่อ หากโปรแกรมนั้นทำพลาดครั้งเดียวมักเกิดปัญหาทั้งหมด


17

ในรูปแบบดั้งเดิมที่สุดของพวกเขาระบบปฏิบัติการขึ้นอยู่กับกระบวนการที่มีความประพฤติดีและมอบการควบคุมกลับไปที่ระบบปฏิบัติการเป็นครั้งคราว หากกระบวนการไม่ทำตัวดีแล้วก็อาจเกิดขึ้นได้ว่าระบบปฏิบัติการค้าง

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

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


7
@ Imray ไม่จริงกับ CPU ระบบปฏิบัติการเป็นรหัสอีกบิต อย่างไรก็ตามซีพียูมีคุณสมบัติมากมายที่ออกแบบมาเพื่อใช้งานโดยผู้สร้างระบบปฏิบัติการ
Tom van der Zanden

3
ฉันไม่ทราบว่า "รู้" เป็นคำศัพท์ที่ถูกต้อง แต่ CPU ไม่มีเหตุผลที่จะมีอยู่นอกเหนือจากการใช้งานระบบปฏิบัติการ แน่นอนว่ามันไม่ได้เป็นอิสระอย่างสมบูรณ์ อันที่จริงแล้วซีพียูนั้นพึ่งพาระบบปฏิบัติการได้อย่างสมบูรณ์เพื่อจัดการโหมดต่างๆ
Mohair

2
@Mohair มีไมโครคอนโทรลเลอร์จำนวนมากที่ทำงานโดยไม่มีระบบปฏิบัติการเลยนับเป็น CPU หรือไม่?
Tom van der Zanden

2
"จำนวนเหล่านั้นนับเป็น CPU หรือไม่" แน่นอนพวกเขาทำ ดังนั้น 6502 ในคอมพิวเตอร์เครื่องแรกของฉันถึงแม้ว่ามันจะไม่มีผู้ใช้และเคอร์เนลริงที่ชัดเจนและคุณสามารถpokeใช้บรรทัดคำสั่งเพื่อทำงานกับความเสียหายทุกชนิด
dmckee --- ผู้ดูแลอดีตลูกแมว

2
@ TomvanderZanden ทำอย่างไรกันแน่the CPU switches back and forth between running the OS and running processes? อะไรเป็นสาเหตุของสวิตช์?
jnovacho

1

คุณไม่ต้องการโปรเซสเซอร์ที่แตกต่างกันสองตัวสำหรับไมโครโปรเซสเซอร์เพื่อเรียกใช้ userspace และรหัสพื้นที่เคอร์เนล โดยทั่วไปจะทำงานในลักษณะนี้เมื่อคุณเปิดคอมพิวเตอร์ของคุณใน Bios ของคุณโหลด Bootloader (รหัส 512kb บนดิสก์ที่ลงท้ายด้วย 55aa bootloader ลายเซ็น) เพื่อ ram และผ่าน bootloader นี้เคอร์เนลของคุณได้โหลด ram และทำงานตลอดไปจนกว่าคุณจะปิดคอมพิวเตอร์ และเคอร์เนลของคุณจัดการหน่วยความจำและไม่อนุญาตให้ใช้รหัสเคอร์เนลซึ่งอยู่บน ram จะไม่ถูกเขียนทับด้วยรหัสพื้นที่ผู้ใช้ เพื่อจุดประสงค์นี้มีการเรียกระบบที่รหัสผู้ใช้เรียกใช้โดยใช้การเรียกระบบเหล่านี้และเพิ่มรหัสผู้ใช้ของคุณเพื่อ ram และเริ่มดำเนินการ ในระบบปฏิบัติการแนวคิดนี้ถูกวิจัยว่าเป็นการจัดการหน่วยความจำ นี่คือลิงค์ที่คุณสามารถอ่านได้ดีมากสำหรับการเริ่มต้น https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf


0

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.