ถ้า DOS ทำงานแบบเดี่ยวสามารถทำงานหลายอย่างใน Windows เวอร์ชันเก่าได้อย่างไร


113

ฉันอ่านว่า DOS เป็นระบบปฏิบัติการเดี่ยว

แต่ถ้า Windows รุ่นเก่า (รวมถึง Windows 95?) เป็นเพียงโปรแกรมเสริมของ DOS Windows จะทำงานเป็นระบบปฏิบัติการหลายภารกิจได้อย่างไร


8
มันเรียกว่ามัลติทาสกิ้งแบบ preemptive - support.microsoft.com/kb/117567
joeqwerty

20
คุณจะต้องนิยามว่า "เก่า" ดีกว่านั้นมาก DOS + Windows 9x และ DOS + Windows 3.x ใน "386 Enhanced Mode" นั้นค่อนข้างต่างกับ DOS + Windows 3.x / 2.x ใน "Standard Mode" และ "Real Mode" และในฐานะที่เป็น joeqwerty alludes นั้นก็มีการทำงานแบบมัลติทาสกิ้งแบบcoöperative มีการเขียนหนังสือทั้งเล่มเกี่ยวกับเรื่องนี้ดังนั้นคำถามเฉพาะจึงดีกว่า
JdeBP

5
@joeqwerty IMO ที่ยอดเยี่ยมที่สุดคือ Microsoft เก็บเอกสารออนไลน์เกี่ยวกับซอฟต์แวร์โบราณ ยังมีบทความเกี่ยวกับหัวข้อขั้นสูงใน MS-DOS เวอร์ชันเก่า ... ดีมากสำหรับการรักษาชีวิต
NothingsImpossible

6
DOS ไม่ให้คุณทำงานหลายอย่างพร้อมกัน คุณยังสามารถเขียนโปรแกรมมัลติทาสกิ้งแบบเต็มรูปแบบได้โดยไม่ต้องใช้ความช่วยเหลือของ DOS ซึ่งเป็นสิ่งที่ Windows รุ่นก่อนทำ Windows 95 ไม่ได้เป็นเพียง "wrapper" สำหรับ DOS เท่านั้น
Boann

3
@NigelNquande ฉันพบ MS จริง ๆ แล้วค่อนข้างดีเกี่ยวกับการดูแลเอกสารเก่า บทความ KB ที่เกษียณอายุแล้วส่วนใหญ่ของพวกเขาออนไลน์อยู่ (ตัวอย่างเช่นสุ่ม Windows 3.1 KB หรือเอกสารใน print ประโยชน์ สำหรับ Windows 2.1-3.0 หรือ ansi.sys จาก MS-DOS 5.0) แม้หลังจากช่วงเวลาผ่อนผันระยะเวลา 12 เดือนที่ระบุไว้ มันไม่สามารถเรียกดูได้ง่ายเหมือนกับเอกสารคู่มือผลิตภัณฑ์ที่ใช้งานอยู่คุณต้องระบุเจาะจงในการค้นหาของคุณ
Jason C

คำตอบ:


160

วินโดวส์ 95

วินโดวส์ 95 เป็นมากกว่า "just wrapper" สำหรับ MS-DOS . การอ้างอิง Raymond Chen:

MS-DOS ทำหน้าที่สองประการใน Windows 95

  • มันทำหน้าที่เป็นบูตโหลดเดอร์
  • มันทำหน้าที่เป็นเลเยอร์ไดรเวอร์อุปกรณ์ดั้งเดิม 16 บิต

จริง ๆ แล้ววินโดวส์ 95 มีตะขอ / overrode เกือบทั้งหมดของ MS-DOS ทำให้มันเป็นเลเยอร์ที่เข้ากันได้ในขณะที่ทำการยกของหนักทั้งหมดเอง นอกจากนี้ยังใช้งานมัลติทาสกิ้งแบบ preemptive สำหรับโปรแกรม 32 บิต


Pre-Windows 95

Windows 3.x และรุ่นเก่าส่วนใหญ่มีขนาด 16 บิต (ยกเว้น Win32s ซึ่งเป็นเลเยอร์ความเข้ากันได้กับ kinda ที่เชื่อมต่อ 16 และ 32 แต่เราจะเพิกเฉยต่อเรื่องนี้ได้) ขึ้นอยู่กับระบบปฏิบัติการ DOS และใช้มัลติทาสก์แบบร่วมมือกันเท่านั้น ที่ที่พวกเขาไม่ได้บังคับให้โปรแกรมที่กำลังทำงานอยู่ทำการสลับออกไป พวกเขารอให้โปรแกรมที่รันอยู่ให้ผลตอบแทนการควบคุม (โดยทั่วไปให้พูดว่า "ฉันเสร็จแล้ว" โดยบอกให้ระบบปฏิบัติการรันโปรแกรมถัดไปที่กำลังรออยู่)

การทำงานหลายอย่างเป็นแบบร่วมมือเช่นเดียวกับ MacOS รุ่นเก่า (แม้ว่าจะไม่เหมือนกับ Multitasking DOS 4.x ซึ่งมีการทำงานแบบมัลติทาสก์แบบ preemptive) งานต้องยอมจำนนต่อระบบปฏิบัติการเพื่อกำหนดตารางงานที่แตกต่างกัน อัตราผลตอบแทนถูกสร้างขึ้นในการเรียก API บางอย่างการประมวลผลข้อความที่สะดุดตา ตราบใดที่งานประมวลผลข้อความในเวลาที่กำหนดทุกอย่างยอดเยี่ยม หากงานหยุดการประมวลผลข้อความและไม่ว่างในการดำเนินการวนรอบการประมวลผลการทำมัลติทาสก์ก็ไม่มาก

สถาปัตยกรรม Windows 3.x

สำหรับวิธีที่โปรแกรม Windows ก่อนจะให้การควบคุม:

Windows 3.1 ใช้ระบบมัลติทาสกิ้งแบบร่วมมือกัน - หมายความว่าแต่ละแอปพลิเคชันที่อยู่ในกระบวนการทำงานจะได้รับคำสั่งให้ตรวจสอบคิวข้อความเป็นระยะเพื่อดูว่ามีแอปพลิเคชันอื่นใดที่ขอใช้งาน CPU หรือไม่ . อย่างไรก็ตามแอปพลิเคชั่น Windows 3.1 จำนวนมากจะตรวจสอบคิวข้อความไม่บ่อยนักหรือไม่เลยและควบคุมการทำงานของซีพียูเป็นเวลานานเท่าที่จำเป็น ระบบมัลติทาสกิ้งที่ยึดเอาเสียก่อนเช่น Windows 95 จะควบคุม CPU ให้ห่างจากแอปพลิเคชันที่กำลังทำงานและแจกจ่ายให้กับผู้ที่มีลำดับความสำคัญสูงกว่าตามความต้องการของระบบ

แหล่ง

DOS ทั้งหมดจะเห็นว่าเป็นแอปพลิเคชันเดียว (Windows หรืออื่น ๆ ) ที่ใช้งานซึ่งจะผ่านการควบคุมโดยไม่ต้องออก ในทางทฤษฎีการทำงานแบบมัลติทาสกิ้งแบบ preemptive สามารถนำมาใช้บน DOS ได้ด้วยการใช้นาฬิกาเรียลไทม์และฮาร์ดแวร์ขัดจังหวะเพื่อบังคับให้ควบคุมตารางเวลา เช่น ความคิดเห็น Tonny จริง ๆ แล้วนี่คือสิ่งที่กระทำโดยระบบปฏิบัติการบางตัวที่ทำงานอยู่บน DOS

386 โหมดปรับปรุง?

หมายเหตุ: มีความคิดเห็นบางส่วนเกี่ยวกับ 386 โหมดปรับปรุง ของ Windows 3.x มีขนาด 32 บิตและรองรับการทำงานมัลติทาสกิ้งแบบ preemptive

นี่เป็นกรณีที่น่าสนใจ เพื่อสรุปการเชื่อมโยง โพสต์บล็อก 386 โหมดที่ได้รับการปรับปรุงนั้นเป็นไฮเปอร์ไวเซอร์แบบ 32 บิตซึ่งใช้งานเครื่องเสมือน ภายในหนึ่งในเครื่องเสมือนเหล่านั้นใช้โหมดมาตรฐาน Windows 3.x ซึ่งทำรายการทั้งหมดที่กล่าวข้างต้น

MS-DOS ก็จะทำงานในเครื่องเสมือนเหล่านั้นและดูเหมือนว่าพวกเขาจะทำงานแบบมัลติทาสก์ล่วงหน้าดังนั้นจึงดูเหมือนว่าไฮเปอร์ไวเซอร์โหมด 386 ที่ปรับปรุงแล้วจะแชร์ช่วงเวลาของ CPU ระหว่างเครื่องเสมือน (หนึ่งในนั้นทำงานปกติ 3.x และอื่น ๆ ที่วิ่ง MS -DOS) และแต่ละ VM จะทำสิ่งที่เป็นของตัวเอง - 3.x จะทำงานหลายอย่างพร้อมกันในขณะที่ MS-DOS จะทำงานแบบเดี่ยว


MS-DOS

ดอสเองทำหน้าที่เป็นทาสก์เดียวบนกระดาษ แต่มันก็ได้รับการสนับสนุน TSR โปรแกรมที่จะอยู่ในพื้นหลังจนกว่าทริกเกอร์โดยฮาร์ดแวร์ขัดจังหวะ ห่างไกลจากมัลติทาสกิ้งที่แท้จริง แต่ไม่ได้มอบหมายงานเดี่ยวอย่างสมบูรณ์


ทั้งหมดนี้พูดถึงบิตเนส? ฉันถามเกี่ยวกับมัลติทาสกิ้ง!

การพูด bit-ness และ multitasking อย่างเคร่งครัดนั้นไม่ได้ขึ้นอยู่กับกันและกัน มันควรจะเป็นไปได้บนใช้โหมดมัลติทาสกิ้งในบิตใด ๆ อย่างไรก็ตามการย้ายจากตัวประมวลผลแบบ 16 บิตไปเป็นตัวประมวลผลแบบ 32 บิตยังนำเสนอฟังก์ชันการทำงานของฮาร์ดแวร์อื่น ๆ

นอกจากนี้เนื่องจากโปรแกรม 32 บิตใหม่มันง่ายกว่าที่จะให้พวกเขาทำงานเมื่อพวกเขาถูกบังคับให้ออกซึ่งอาจทำให้โปรแกรม 16 บิตแบบดั้งเดิมแตกหักได้

แน่นอนว่านี่คือการเก็งกำไรทั้งหมด หากคุณต้องการทราบว่าทำไม MS ไม่ได้ใช้มัลติทาสกิ้งแบบ preemptive ใน Windows 3.x (โหมดขั้นสูง 386 แม้จะมี) คุณจะต้องถามคนที่ทำงานที่นั่น

นอกจากนี้ฉันต้องการแก้ไขข้อสันนิษฐานของคุณว่า Windows 95 เป็นเพียงเสื้อคลุมสำหรับ DOS;)


4
เขียนได้ดีมาก ถ้าฉันจำได้อย่างถูกต้อง (คลาสการออกแบบระบบปฏิบัติการเป็นเวลาหลายปีมาแล้วสำหรับฉัน) Windows 9x เชื่อมต่อตัวจับเวลาขัดจังหวะเพื่อบังคับใช้ตัวกำหนดตารางเวลาของตัวเองเช่นเดียวกับที่คุณแนะนำในย่อหน้าที่ 2 ถึงย่อหน้าสุดท้าย มี OS'es อื่น ๆ ที่ด้านบนของ DOS ที่ทำเช่นเดียวกัน ฉันจำได้อย่างชัดเจนจาก AMX (ระบบปฏิบัติการเรียลไทม์สำหรับงานอุตสาหกรรม) และ XINU (วัตถุประสงค์ทางการศึกษาเล็ก ๆ Unix / Posix เช่น OS) ที่ทั้งสองทำงานบน DOS (AMX สามารถรันโลหะเปลือยได้โดยตรงจาก EPROM ด้วยเช่นกันมันง่ายกว่ามากในการทดสอบ / ดีบักเมื่อทำงานบน DOS ช่วยให้คุณประหยัดจาก EPROMS ใหม่สำหรับการทดสอบแต่ละครั้ง)
Tonny

@Tonny ขอบคุณสำหรับการยืนยันว่าโครงการนั้นเป็นไปได้ (และใช้ในการปฏิบัติ) ด้วยเหตุผลที่ว่าเหตุผลที่ Windows 1-3 ไม่ได้ใช้มัลติทาสกิ้งแบบ preemptive นั้นไม่มากนักที่พวกเขาไม่สามารถทำได้ (MS-DOS 4 มีมันแม้ว่าจะยังไม่ได้เผยแพร่) แต่มันจะใช้งานไม่ได้กับ DOS โปรแกรม
Bob

3
Mmmmhhh พิจารณา Windows 1-3: ความจริงที่เป็นรหัสทั่วไปสำหรับ 8086 CPU และสูงกว่าอาจมีส่วนเกี่ยวข้องกับเรื่องนี้มากกว่า การจัดการ ring0-3 ที่เหมาะสมนั้นเป็นไปได้ด้วย 80286 ขึ้นไปและนั่นคือสิ่งที่ Win9x ใช้ในการใช้มัลติทาสกิ้ง 4DOS และผู้อื่นให้การทำงานแบบมัลติทาสกิ้งที่ จำกัด บน DOS (จำเป็นต้องใช้ 80286 ถ้าฉันจำได้ถูกต้อง) คุณสามารถเรียกใช้ Win3 เองเป็นกระบวนการแยกต่างหากใน 4DOS
Tonny

1
Xinu ทำจริงๆ ไม่ ทำงานบน DOS มันเริ่มต้นจากระบบปฏิบัติการ LSI-11 คำสั่งที่ไม่มีการทำงานมัลติทาสกิ้งแบบพิเศษใน DOS + Windows 3.x เป็นเท็จ ใน 386 Enhanced Mode นั้นได้รับความอนุเคราะห์จาก VMM และเรื่องไร้สาระเกี่ยวกับ 4DOS ทำให้คุณได้รับคำตอบที่พบบ่อย: 4DOS ไม่ใช่ระบบปฏิบัติการ . คำสั่งที่ให้การทำงานหลายอย่างผิดทั้งหมด
JdeBP

2
PDP-8 รองรับมัลติทาสกิ้ง pre-emptive และนั่นเป็นเพียงคอมพิวเตอร์ 12 บิต
david25272

26

มันรันโปรแกรมเดียวอย่างต่อเนื่องโปรแกรมหนึ่งเรียกว่า windows หนึ่งนั้นแพร่กระจายเวลา CPU (และทรัพยากรอื่น ๆ ) ระหว่างโปรแกรมต่าง ๆ

พิจารณาการเปรียบเทียบนี้:

คุณมีสำนักงานที่สามารถมีได้เพียงหนึ่งคนต่อครั้งเท่านั้น (บุคคลนั้นเรียกว่ามิสเตอร์หรือมิสซูสดอส) บุคคลนั้นทำงานกับสิ่งใดสิ่งหนึ่งในเวลา เช่น. มันโทรศัพท์คนเดียวและเริ่มแชท 24/7 กับเขา / เธอ

ตอนนี้คุณแทนที่บุคคลนั้นด้วยเลขานุการนาย (Windows) มันจะโทรหาใครบางคนและพูดคุยกับมันตลอดเวลา (ยังเป็นงานเดียว) หลังจากนั้นครู่หนึ่งคนอื่นจะพูดว่า "ฉันได้พูดคุยพอแล้วไปคุยกับคนอื่นแล้วโทรหาฉันทีหลัง"

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

  • ในแง่เทคนิคนี้เรียกว่าการทำงานหลายอย่างพร้อมกัน บุคคลอื่นต้องบอกว่าเขา / เธอมีเวลา CPU ที่เพียงพอ หากไม่มีใครทำอย่างนั้นทั้งหมดก็แยกจากกัน
  • ระบบที่ทันสมัยมีความชาญฉลาดมาก รวมถึงมัลติทาสกิ้งแบบ pre-emptive คิดว่าเลขาตั้งนาฬิกาปลุกและตัดคนอื่นออกหลังจาก 5 นาที "นั่นคือเจนที่ดี แต่ฉันต้องคุยกับโจตอนนี้ฉันจะโทรกลับหาคุณสักหน่อย - คลิก"

หากคุณเพิ่มโปรเซสเซอร์หลายตัวมันจะซับซ้อนยิ่งขึ้น :)


1
คุณไม่ได้หมายถึงการทำงานมัลติทาสกิ้งแบบร่วมมือกัน / ไม่ต้องเสียภาษีในจุดแรกของคุณ? นอกจากนี้ที่น่าสนใจคือ Windows 95 ได้แนะนำการทำงานหลายภารกิจไว้ล่วงหน้าสำหรับโปรแกรม 32 บิต มันไม่ได้เป็น wrapper สำหรับ DOS เพราะมันเป็นระบบปฏิบัติการที่ใช้ DOS เป็น bootloader แต่แทนที่ส่วนสำคัญของมัน (ทำให้เพียงพอสำหรับการสนับสนุนโปรแกรม 16-bit / DOS)
Bob

มิสเตอร์หรือคิดถึงทำไมไม่ 'ดร.' DOS?
gtrak

1
"มันรันโปรแกรมเดียวอย่างต่อเนื่อง ... มันแพร่กระจายเวลา CPU (และทรัพยากรอื่น ๆ ) ระหว่างโปรแกรมต่าง ๆ " ไม่สามารถพูดได้เกี่ยวกับระบบปฏิบัติการใด ๆ แม้ว่าคำถามจะบอกเป็นนัยว่า MS-DOS ไม่สามารถทำได้ ฉันไม่เห็นด้วยอย่างยิ่งกับการอุปมาอุปมัย / อุปมาอุปมัยเมื่อปฏิเสธรายละเอียดทางเทคนิคของเทคโนโลยี ตกลงตอนนี้เรารู้แล้วว่าสำนักงานสมมุติทำงานอย่างไร ไม่ได้อธิบายคำตอบของคำถามจริงๆ
Celeritas

13

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

ระบบปฏิบัติการสามารถบังคับใช้การควบคุมนี้ได้เนื่องจากจะบังคับให้ CPU เข้าสู่ โหมดป้องกัน .

ในทางกลับกัน DOS ไม่เคยเข้าสู่โหมดป้องกัน แต่ยังคงอยู่ โหมดจริง * * * * ในโหมดจริงแอปพลิเคชันที่ทำงานอยู่สามารถดำเนินการตามที่ต้องการเช่น เข้าถึงฮาร์ดแวร์โดยตรง แต่แอปพลิเคชันที่ทำงานในโหมดจริงสามารถบอก CPU ให้เข้าสู่โหมดป้องกันได้

และส่วนสุดท้ายนี้อนุญาตให้แอปพลิเคชันเช่น Windows 95 สามารถเริ่มสภาพแวดล้อมแบบมัลติเธรดได้แม้ว่าจะเปิดตัวโดยทั่วไปจาก DOS

DOS (Disk Operating System) คือ, ไม่มากไปกว่าระบบการจัดการไฟล์ มันจัดทำระบบไฟล์กลไกสำหรับการนำทางระบบไฟล์เครื่องมือสองสามอย่าง นอกจากนี้ยังอนุญาตให้บางแอปพลิเคชันพักอาศัยเช่น ไดรเวอร์เมาส์และอีมูเลเตอร์ EMM แต่มันไม่ได้พยายามควบคุมฮาร์ดแวร์ในคอมพิวเตอร์เหมือนกับระบบปฏิบัติการที่ทันสมัย

* เมื่อ DOS ถูกสร้างขึ้นครั้งแรกในยุค 70 โหมดป้องกันไม่มีอยู่ใน CPU มันไม่ได้จนกว่าตัวประมวลผล 80286 ในช่วงกลางยุค 80 ที่โหมดป้องกันกลายเป็นส่วนหนึ่งของ CPU


2
โปรดทราบว่าในขณะที่ CPU ไม่มีสิ่งต่าง ๆ เช่นโหมดป้องกัน
jwenting

1
@ jwenting - จุดที่ดีฉันเพิ่มบันทึกเกี่ยวกับมัน
Pete

6

ก่อนหน้า Windows 3.x ซึ่งเป็นเวอร์ชันแรกสำหรับแอปพลิเคชันมัลติทาสก์ DOS มีโปรแกรมเช่น DesqView ซึ่งสามารถทำได้เช่นเดียวกัน หากมีใครเช่น ใช้งานสามครั้งในคราวเดียว DesqView จะสร้างเครื่องเสมือนสี่เครื่อง แต่ละเซสชันของ DOS จะคิดว่าพวกเขา "เป็นเจ้าของ" ทั้งเครื่องยกเว้นว่าจะไม่มีการดำเนินการกับไฟล์ I / O แต่รุ่นของ DOS ที่ทำงานในแต่ละเซสชันจะได้รับการแก้ไขเพื่อที่จะส่งต่อคำขอใด ๆ สำหรับไฟล์ I / O ไปยังเซสชันพิเศษซึ่งอุทิศให้กับวัตถุประสงค์นั้น เนื่องจากฮาร์ดแวร์โหมดข้อความของพีซีจะแสดงเนื้อหาของหน่วยความจำอย่างต่อเนื่องเป็นตัวอักษร DesqView สามารถให้แต่ละเซสชันมีหน้าจอเสมือนของตนเองโดยการแมปช่วง 0xB8000-0xB9FFF ของแต่ละเซสชันไปยังพื้นที่ RAM ของตนเองและคัดลอกพื้นที่ของแอปพลิเคชันปัจจุบันเป็นระยะไปยังบัฟเฟอร์หน้าจอทางกายภาพ การสนับสนุนด้านกราฟิกนั้นยากกว่ามากเพราะ RAM 256K บนจอแสดงผลถูกควบคุมโดยใช้พื้นที่ที่อยู่ 64K ทะเบียน I / O บางตัวและฮาร์ดแวร์ "น่าสนใจ" บางตัวที่ต้องการอ่านและเขียนในลำดับเฉพาะบางอย่าง ในโหมดข้อความเมื่อแอปพลิเคชันเขียนอะไรลงในบัฟเฟอร์ข้อความถูกเขียน DesqView สามารถตั้งค่าสถานะเพื่อระบุว่าควรคัดลอกไปยังจอแสดงผลในเห็บตัวจับเวลาถัดไป เฉพาะการเขียนครั้งแรกไปยังบัฟเฟอร์ข้อความในช่วงเวลาที่กำหนดจะต้องมีการแทรกแซงของ DesqView ส่วนอื่น ๆ ทั้งหมดจะถูกรวมเข้ากับขีดจับเวลาถัดไป

ในทางกลับกันโหมดกราฟิกเสมือนจริงจะต้องใช้ DeskView เพื่อดักจับการเขียนแต่ละรายการเพื่อแสดงหน่วยความจำหรือการลงทะเบียน I / O ระบุว่าสิ่งนี้จะทำให้หน่วยความจำช้าลงโดยประมาณ 100 และโปรแกรมกราฟิกต้องเขียนข้อมูลมากกว่าโปรแกรมข้อความการจำลองเสมือนแบบเรียลไทม์ของซอฟต์แวร์กราฟิกส่วนใหญ่นั้นไม่สามารถใช้งานได้จริง แทนกราฟิกได้รับการจัดการโดยมีแอปพลิเคชันที่ไม่ทำงานเบื้องหน้าใด ๆ ซึ่งพยายามทำกราฟิกหยุดชั่วคราวจนกว่าจะกลายเป็นแอปพลิเคชันเบื้องหน้าและให้การควบคุมเต็มหน้าจอ เมื่อตัวควบคุมเปลี่ยนไปใช้แอปพลิเคชันอื่น DesqView จะพยายามทำสำเนาสถานะการลงทะเบียนกราฟิกทั้งหมดแล้วสลับ เมื่อเปลี่ยนกลับเป็นแอปพลิเคชันกราฟิก DesqView จะเรียกคืนสถานะที่บันทึกไว้

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


ขอบคุณที่เตือนฉันเกี่ยวกับ DesqView ฉันเคยใช้มันตลอดเวลา แต่ลืมไปโดยสิ้นเชิง
Emmet

3

การทำงานหลายอย่างเป็นอะไรที่มากกว่าภาพลวงตาของการเรียกใช้แอพพลิเคชั่นพร้อมกัน มันถูกมองว่าเป็นการดำเนินการพร้อมกันในตอนท้ายของคุณ แต่ในความเป็นจริงกระบวนการ A, B และ C กำลังแชร์เวลา CPU ในลำดับนี้: A, B, C, A, B, C, A, B ... พวกเขาเพียงแค่เปิด ปิดเร็วมาก ไม่มีกระบวนการใดที่ทำงานอยู่ในเวลาเดียวกัน

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

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

สำหรับผู้ที่จำได้ว่าเกมยังคงทำงานบน DOS4GW เพราะ Windows ช้าเกินไป


1
และส่วนใหญ่ยังคงเป็นสิ่งที่ทำงานในระบบปฏิบัติการจนถึงทุกวันนี้ นั่นเป็นเหตุผลที่คุณสามารถเรียกใช้ 10 สิ่ง "ในเวลาเดียวกัน" ในซีพียู 4 คอร์เช่น
jwenting

2
ไม่ใช่ว่า“ CPU เริ่มเร็วพอ” เป็นไปได้ที่จะเรียกใช้ระบบปฏิบัติการมัลติทาสกิ้งแบบหลายผู้ใช้ใน '286 (เช่น The Mark Williams Company) เชื่อมโยงกัน เป็นระบบปฏิบัติการที่ดีที่นำมาใช้กับพีซีในปี 1983) MS-DOS และ Windows (ไม่ใช่ NT) เวอร์ชันสูงถึง (และรวมถึง)“ Millenium” มีความเลวทรามโดยมาตรฐานวัตถุประสงค์ใด ๆ แม้แต่มาตรฐานทางเทคนิคของเวลา แต่เมื่อ MS-DOS ถูกสร้างเป็นมาตรฐานสำหรับพีซีโดย IBM การตลาดและโมเมนตัมของ Microsoft (ไม่พูดถึงการใช้อำนาจผูกขาดในทางที่ผิด) ไม่รวมการแข่งขันที่ดีขึ้นเป็นเวลานาน
Emmet

2
"การทำงานหลายอย่างเป็นเพียงคุณสมบัติที่พัฒนาขึ้นเมื่อซีพียูเริ่มเร็วพอ ... " คุณหมายความว่าอย่างไร Apollo Guidance Computer เป็นการออกแบบแบบมัลติทาสกิ้ง ?
a CVn

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

0

แม้ว่ามันจะสามารถมุ่งความสนใจไปที่งานใดงานหนึ่งได้ แต่สิ่งที่ต้องทำคือขั้นตอนง่าย ๆ ในการเปลี่ยนจากงานหนึ่งไปอีกงานหนึ่งอย่างรวดเร็ว วิธีนี้ดูเหมือนว่ามันเป็นมัลติทาสกิ้ง แต่ในความเป็นจริงมันมุ่งเน้นไปที่ 1 จากนั้นเป็นอีกหนึ่งจากนั้นก็ไปที่อื่น ฯลฯ


คุณกำลังคุยกัน มัลติทาสกิ้ง กับ การคำนวณแบบมัลติโปรเซสเซอร์ ที่นั่น การสลับไปมาระหว่างหลาย ๆ งานอย่างรวดเร็วมากคือการทำงานหลายอย่างในโลกคอมพิวเตอร์ คำจำกัดความปกติไม่ได้ ความต้องการ การประมวลผลแบบขนาน "รุ่นเก่าของ Windows" หลายอย่างทำงานหลายอย่างแตกต่างกันขึ้นอยู่กับรุ่นของ Windows โหมดที่มันทำงานอยู่และไม่ว่าจะเป็นระบบปฏิบัติการ DOS ก็ตาม (Windows NT 3.1 เก่ากว่า DOS + Windows 95 และสามารถทำ SMP ได้) ตามที่ฉันชี้ให้เห็นในความคิดเห็นอื่นหนังสือทั้งหมดได้ถูกเขียนลงบนสิ่งนี้ นั่นไม่ใช่บทสรุปประโยคที่ดีที่สุด 2 ข้อ
JdeBP

@JdeBP ... ฉันรู้ถึงความแตกต่างระหว่างมัลติทาสก์และมัลติโปรเซสเซอร์เนื่องจากฉันยังคงใช้โปรเซสเซอร์แกนเดียวเป็นหลัก! คอมพิวเตอร์ทำงานตามลำดับ True ขนานจะเห็นได้เฉพาะในการคำนวณควอนตัม
Thoth

0

สิ่งหนึ่งที่ฉันไม่เห็นพูดถึงที่นี่เป็นสิ่งที่น่าสนใจ:

Windows 3.0 ไม่ใช่ระบบมัลติทาสกิ้งแบบ pre-emptive มันให้ความร่วมมือเหมือนกับ MacOS ทุกรุ่นจนถึง OS X - แอปหนึ่งต้องส่งคืนจากการโทรก่อนที่แอปอื่นจะสามารถดำเนินการใด ๆ ได้

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

ในเวลานั้นมีโปรแกรมที่เรียกว่า TSRs (Terminate-Stay Resident) ที่ใช้แทนไดรเวอร์อุปกรณ์ในปัจจุบัน ไดรเวอร์เหล่านี้จะทำงานโดยอิสระ - โดยทั่วไปในเธรดของตนเองโดยการแทรกตัวเองลงในตัวจัดการเหตุการณ์ของ OS Windows โดยทั่วไปไม่ทราบเกี่ยวกับพวกเขาพวกเขาวิ่งในระดับที่ต่ำกว่า

สิ่งเหล่านี้ไม่ใช่แอพพลิเคชั่นของ windows แต่เป็นกิจกรรมการทำเกลียวทั้งหมดก่อน windows 3.1 เช่นไดรเวอร์เครื่องพิมพ์ไดรเวอร์ com และอื่น ๆ

แม้ว่า windows 3.1 จะเป็นแบบมัลติทาสกิ้ง แต่ DOS ก็ไม่ได้ แต่ Windows 3.1 เพิ่งผลัก dos ออกไปและเข้าควบคุมเมื่อมันเริ่มต้นขึ้น (ย้อนกลับมาคุณมักจะเริ่ม windows จาก DOS prompt)


Windows 3.0 รองรับมัลติทาสกิ้งของแอปพลิเคชัน DOS เมื่อทำงานบนโปรเซสเซอร์ 386 หรือสูงกว่า มีเพียงแอปพลิเคชัน Windows เท่านั้นที่ทำงานหลายอย่างพร้อมกัน
Jules

โอ้ถูกต้องแล้ว - ฉันกำลังเขียนรหัสแอป windows อยู่ในขณะนั้นและไม่ได้คิดถึง DOS จริงๆ มันปฏิบัติกับแอพ DOS ต่างกัน - ขอบคุณที่ชี้ให้เห็น
Bill K

-8

คำถามที่ดี. ใน MS-DOS เคอร์เนลเป็นเสาหินซึ่งหมายความว่าจัดการได้ครั้งละหนึ่งงานเมื่อเทียบกับเคอร์เนลใหม่ที่ทันสมัยซึ่งใช้ใน Windows 9x และเวอร์ชันปัจจุบัน คุณสามารถตรวจสอบเพิ่มเติม ที่นี่ .


11
-1 คุณแนะนำว่าระบบปฏิบัติการแบบ monothithic ไม่สามารถทำงานหลายอย่างได้ linux เป็นเคอร์เนล monothithic ที่มีชื่อเสียง (มีการอภิปรายที่มีชื่อเสียงระหว่าง linus torvalds และ andrew tanenbaum) แต่ linux สามารถเห็นได้ชัดว่ามีหลายงาน นี่คือลิงค์ที่จะแสดงให้คุณเห็น linux คือเสาหิน stackoverflow.com/questions/1806585/...
barlop

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