Multi-Tasking เป็นไปได้ใน Windows รุ่นเก่าอย่างไร
เมื่อพิจารณาว่า DOS เป็นระบบปฏิบัติการเดี่ยวและความสัมพันธ์กับ Windows รุ่นแรก ๆ Windows รุ่นก่อนหน้ามีวิธีจัดการกับการทำงานหลายอย่างได้อย่างไร ประกาศถามตอบ SuperUser ของวันนี้จะดูคำตอบของคำถามนี้.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
ภาพหน้าจอของ Windows 95 ที่ได้รับความอนุเคราะห์จาก Wikipedia.
คำถาม
ผู้อ่าน SuperUser LeNoob ต้องการทราบว่า Windows รุ่นเก่าสามารถทำงานเป็นระบบมัลติทาสกิ้งได้อย่างไร:
ฉันอ่านว่า DOS เป็นระบบปฏิบัติการเดี่ยว แต่ถ้า Windows รุ่นเก่า (รวมถึง Windows 95?) เป็นเพียง wrappers สำหรับ DOS พวกเขาจะทำงานเป็นระบบมัลติทาสกิ้งได้อย่างไร?
คำถามที่ดี! Windows รุ่นเก่าจัดการได้อย่างไรในการทำงานในฐานะระบบมัลติทาสกิ้ง?
คำตอบ
ผู้สนับสนุน SuperUser Bob และ Pete มีคำตอบสำหรับเรา มาก่อน Bob:
Windows 95 นั้นมากกว่า“ แค่เครื่องห่อหุ้ม” สำหรับ MS-DOS การอ้างอิง Raymond Chen:
- MS-DOS ทำหน้าที่สองประการใน Windows 95: 1. ) ทำหน้าที่เป็นตัวโหลดบูต & 2. ) ทำหน้าที่เป็นเลเยอร์ไดรเวอร์อุปกรณ์ดั้งเดิม 16 บิต.
จริง ๆ แล้ววินโดวส์ 95 มีตะขอ / overrode เกือบทั้งหมดของ MS-DOS ทำให้มันเป็นเลเยอร์ที่เข้ากันได้ในขณะที่ทำการยกของหนักทั้งหมดเอง นอกจากนี้ยังใช้มัลติทาสกิ้งแบบ pre-emptive สำหรับโปรแกรม 32 บิต.
Pre-Windows 95
Windows 3.x และรุ่นเก่าส่วนใหญ่เป็น 16 บิต (ยกเว้น Win32s ซึ่งเป็นเลเยอร์ความเข้ากันได้ชนิดหนึ่งที่เชื่อมต่อ 16 และ 32 แต่เราจะเพิกเฉยต่อเรื่องนี้ที่นี่) ขึ้นอยู่กับระบบปฏิบัติการ DOS และใช้มัลติทาสกิ้งแบบร่วมมือกัน - นั่นคือสิ่งที่พวกเขาไม่ได้บังคับให้โปรแกรมที่ทำงานอยู่เพื่อสลับออก; พวกเขารอให้โปรแกรมที่รันอยู่ให้ผลตอบแทนการควบคุม (โดยทั่วไปให้พูดว่า“ ฉันเสร็จแล้ว” โดยบอกให้ระบบปฏิบัติการรันโปรแกรมถัดไปที่กำลังรออยู่).
- Multi-tasking นั้นให้ความร่วมมือเหมือนใน MacOS เวอร์ชั่นเก่า (แต่ต่างจาก Multi-tasking DOS 4.x ซึ่งมีการทำงานแบบมัลติทาสกิ้งไว้ล่วงหน้า) งานต้องยอมจำนนต่อระบบปฏิบัติการเพื่อกำหนดตารางงานที่แตกต่างกัน อัตราผลตอบแทนถูกสร้างขึ้นในการเรียก API บางอย่างการประมวลผลข้อความที่สะดุดตา ตราบใดที่งานประมวลผลข้อความในเวลาที่กำหนดทุกอย่างยอดเยี่ยม หากงานหยุดการประมวลผลข้อความและไม่ว่างในการดำเนินการวนรอบการประมวลผลการทำงานแบบมัลติทาสกิ้งก็ไม่มาก.
สถาปัตยกรรม Windows 3.x
สำหรับวิธีที่โปรแกรม Windows ก่อนจะให้การควบคุม:
- Windows 3.1 ใช้ระบบมัลติทาสกิ้งแบบร่วมมือกัน - หมายความว่าแต่ละแอปพลิเคชันที่อยู่ในกระบวนการเรียกใช้จะได้รับคำสั่งให้ตรวจสอบคิวข้อความเป็นระยะเพื่อดูว่ามีแอปพลิเคชันอื่นใดที่ร้องขอการใช้ CPU หรือไม่ แอปพลิเคชั่นนั้น อย่างไรก็ตามแอปพลิเคชั่น Windows 3.1 จำนวนมากจะตรวจสอบคิวข้อความไม่บ่อยนักหรือไม่เลยและควบคุมการทำงานของซีพียูอย่างต่อเนื่องตามเวลาที่ต้องการ ระบบมัลติทาสกิ้งแบบ pre-emptive เช่น Windows 95 จะใช้การควบคุมซีพียูจากแอปพลิเคชันที่ทำงานอยู่และแจกจ่ายไปยังผู้ที่มีลำดับความสำคัญสูงกว่าตามความต้องการของระบบ.
แหล่ง
DOS ทั้งหมดจะเห็นว่าเป็นแอปพลิเคชั่นเดียว (Windows หรืออื่น ๆ ) ที่ทำงานซึ่งจะผ่านการควบคุมโดยไม่ต้องออก ในทางทฤษฎีการทำงานแบบมัลติทาสกิ้งแบบ pre-emptive นั้นสามารถนำมาใช้กับ DOS ได้ด้วยการใช้นาฬิกาเรียลไทม์และฮาร์ดแวร์อินเตอร์รัปต์เพื่อบังคับให้ควบคุมกำหนดการ ในฐานะที่เป็นความคิดเห็นของ Tonny สิ่งนี้เกิดขึ้นจริงโดย OS บางตัวที่ทำงานอยู่ด้านบนของ DOS.
386 โหมดขั้นสูง?
หมายเหตุ: มีความคิดเห็นบางส่วนในโหมด 386 ที่ปรับปรุงแล้วของ Windows 3.x เป็น 32- บิตและรองรับการทำงานมัลติทาสกิ้งแบบ pre-emptive.
นี่เป็นกรณีที่น่าสนใจ เพื่อสรุปการโพสต์บล็อกที่เชื่อมโยงนั้นโหมดเพิ่มประสิทธิภาพ 386 นั้นเป็นไฮเปอร์ไวเซอร์แบบ 32 บิตซึ่งใช้งานเครื่องเสมือน ภายในหนึ่งในเครื่องเสมือนเหล่านั้นใช้โหมดมาตรฐาน Windows 3.x ซึ่งทำรายการทั้งหมดที่กล่าวข้างต้น.
MS-DOS ก็จะทำงานในเครื่องเสมือนเหล่านั้นและดูเหมือนว่าพวกเขาทำงานได้หลายหน้าที่ก่อน - ดังนั้นจึงดูเหมือนว่าโหมดไฮเปอร์ไวเซอร์โหมด 386 ที่ปรับปรุงแล้วจะแชร์ช่วงเวลาของ CPU ระหว่างเครื่องเสมือน (หนึ่งในนั้นทำงานปกติ 3.x และ อื่น ๆ ที่รัน MS-DOS) และ VM แต่ละตัวจะทำสิ่งนั้นเอง - 3.x จะทำงานหลายอย่างพร้อมกันในขณะที่ MS-DOS จะทำงานแบบเดี่ยว.
MS-DOS
ดอสเองก็ทำงานแบบเดี่ยวบนกระดาษ แต่มันก็มีการสนับสนุนสำหรับโปรแกรม TSR ที่จะอยู่ในพื้นหลังจนกว่าจะมีการขัดจังหวะโดยฮาร์ดแวร์ขัดจังหวะ ห่างไกลจากมัลติทาสกิ้งที่แท้จริง แต่ก็ไม่ได้ทำงานแบบมอบหมายเดี่ยวอย่างเต็มที่.
ทั้งหมดนี้พูดถึงบิตเนส? ฉันถามเกี่ยวกับมัลติทาสกิ้ง!
การพูดอย่างเคร่งครัดบิต - เนสและมัลติทาสกิ้งไม่ได้ขึ้นอยู่กับกันและกัน มันควรจะเป็นไปได้ที่จะใช้โหมดมัลติทาสกิ้งใด ๆ ในบิตเนส อย่างไรก็ตามการย้ายจากตัวประมวลผลแบบ 16 บิตไปเป็นตัวประมวลผลแบบ 32 บิตยังนำเสนอฟังก์ชันการทำงานของฮาร์ดแวร์อื่น ๆ ที่อาจทำให้การทำงานแบบมัลติทาสก์แบบ pre-emptive ง่ายต่อการใช้งาน.
นอกจากนี้เนื่องจากโปรแกรม 32 บิตใหม่มันง่ายกว่าที่จะให้พวกเขาทำงานเมื่อพวกเขาถูกบังคับให้ปิด - ซึ่งอาจทำให้โปรแกรม 16 บิตแบบดั้งเดิมบางส่วนเสียหาย.
แน่นอนว่านี่คือการเก็งกำไรทั้งหมด หากคุณต้องการทราบว่าทำไม MS ไม่ได้ใช้งานมัลติทาสกิ้งแบบ pre-emptive ใน Windows 3.x (โหมดขั้นสูง 386 ถึงแม้ว่าคุณจะต้องถามคนที่ทำงานที่นั่น).
นอกจากนี้ฉันต้องการแก้ไขข้อสมมติของคุณว่า Windows 95 เป็นเพียงเสื้อคลุมสำหรับ DOS.
ตามมาด้วยคำตอบจาก Pete:
ในระบบปฏิบัติการที่ทันสมัยระบบปฏิบัติการจะควบคุมทรัพยากรฮาร์ดแวร์ทั้งหมดและแอปพลิเคชันที่ทำงานอยู่จะถูกเก็บไว้ในกล่องทราย แอปพลิเคชันไม่ได้รับอนุญาตให้เข้าถึงหน่วยความจำที่ระบบปฏิบัติการไม่ได้จัดสรรให้กับแอปพลิเคชันนั้นและไม่สามารถเข้าถึงอุปกรณ์ฮาร์ดแวร์ในคอมพิวเตอร์ได้โดยตรง หากจำเป็นต้องเข้าถึงฮาร์ดแวร์แอปพลิเคชันจะต้องสื่อสารผ่านไดรเวอร์อุปกรณ์.
ระบบปฏิบัติการสามารถบังคับใช้การควบคุมนี้ได้เนื่องจากจะบังคับให้ CPU เข้าสู่โหมดที่ได้รับการป้องกัน.
ในทางกลับกัน DOS ไม่เคยเข้าสู่โหมดป้องกัน แต่อยู่ในโหมดจริง (* * * *ดูด้านล่าง) ในโหมดจริงแอปพลิเคชันที่ทำงานอยู่สามารถดำเนินการทุกอย่างที่ต้องการเช่นเข้าถึงฮาร์ดแวร์โดยตรง แต่แอปพลิเคชันที่ทำงานในโหมดจริงยังสามารถบอก CPU ให้เข้าสู่โหมดป้องกัน.
และส่วนสุดท้ายนี้อนุญาตให้แอปพลิเคชันเช่น Windows 95 สามารถเริ่มต้นสภาพแวดล้อมแบบมัลติเธรดได้แม้ว่าจะเปิดตัวโดยทั่วไปจาก DOS.
DOS (Disk Operating System) เคยเป็นเท่าที่ฉันรู้ไม่มากไปกว่าระบบจัดการไฟล์ มันจัดเตรียมระบบไฟล์กลไกสำหรับการนำทางระบบไฟล์เครื่องมือสองสามอย่างและความเป็นไปได้ที่จะเรียกใช้แอปพลิเคชัน นอกจากนี้ยังอนุญาตให้บางแอปพลิเคชันพักอาศัยเช่นไดรเวอร์เมาส์และอีมูเลเตอร์ EMM แต่มันไม่ได้พยายามควบคุมฮาร์ดแวร์ในคอมพิวเตอร์เหมือนกับระบบปฏิบัติการที่ทันสมัย.
* * * *เมื่อ DOS ถูกสร้างขึ้นครั้งแรกในปี 1970 โหมดป้องกันไม่มีอยู่ใน CPU มันไม่ได้จนกว่าตัวประมวลผล 80286 ในกลาง 1980 ที่โหมดป้องกันกลายเป็นส่วนหนึ่งของ CPU.
อย่าลืมเรียกดูหัวข้อเดิมและอ่านการอภิปรายที่มีชีวิตชีวาในหัวข้อนี้โดยใช้ลิงก์ด้านล่าง!
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.