12Sep

איך היה Multi-Tasking אפשרי בגירסאות ישנות יותר של Windows?

בהתחשב בכך ש- DOS הייתה מערכת הפעלה אחת ומקשיה עם גירסאות מוקדמות של Windows, איך בדיוק גרסאות קודמות של Windows הצליחו לבצע משימות מרובות?מודעת הסופר של היום, Q & פוסט בודק את התשובות לשאלה זו.

השאלה של היום &מפגש תשובה מגיע אלינו באדיבות SuperUser - חלוקה של סטאק שערי, קהילה מונחה קיבוץ של Q & אתרי אינטרנט.Windows 95 מסך באדיבות ויקיפדיה.

השאלה

SuperUser הקורא LeNoob רוצה לדעת איך גרסאות ישנות יותר של Windows היו מסוגלים לרוץ כמו מערכות מרובת משימות?

קראתי כי DOS היא מערכת הפעלה אחת המשימות.אבל אם גירסאות ישנות יותר של Windows( כולל גם Windows 95?) היו רק wrappers עבור DOS, איך הם יכולים לרוץ כמו מערכת הפעלה מרובת משימות?

שאלה טובה!כיצד הצליחו גרסאות ישנות של Windows לפעול כמערכות מרובות משימות?

תשובה

תורמים SuperUser בוב ופיט יש את התשובה עבורנו.ראשית, בוב:

Windows 95 היה הרבה יותר מאשר "רק מעטפת" עבור MS-DOS.ציטוט ריימונד חן:

  • MS-DOS שימש שתי מטרות ב- Windows 95: 1.) זה שימש את מטעין אתחול.&2.) היא פעלה כמו 16-bit מורשת התקן שכבת התקן.

Windows 95 למעשה מכור / overrode רק על כל MS-DOS, שמירה על זה כמו שכבת תאימות תוך עושה את כל הרמת כבד עצמו.זה גם מיושם מראש מרובה משימות עבור תוכניות 32 סיביות.

לפני Windows 95

Windows 3.x ומעלה היו ברובם 16 סיביות( למעט Win32s, סוג של שכבת תאימות כי גשרים 16 ו 32, אבל אנחנו נתעלם כי כאן), היו תלויים יותר DOS, והשתמשו רק במשימה מרובת שיתופי פעולה - זה שבו הם לא מכריחים תוכנית ריצה כדי לצאת;הם מחכים שתוכנית הריצה תניב שליטה( בעצם, נגיד "סיימתי" בכך שאומר למערכת ההפעלה להריץ את התוכנית הבאה שממתינה).

  • Multi-tasking היה שיתוף פעולה, בדיוק כמו בגרסאות ישנות של MacOS( אם כי בניגוד למשימות מרובות משימות של DOS 4.x, שעסקו במשימות מרובות מראש).משימה היתה צריכה להיכנע למערכת ההפעלה כדי לתזמן משימה אחרת.התשואות נבנו בשיחות API מסוימות, בעיקר עיבוד הודעות.כל עוד משימה מעובד הודעות במועד, הכל היה נהדר.אם משימה הפסיקו לעבד הודעות והיה עסוק בהפעלת לולאת עיבוד מסוימת, ריבוי המשימות לא היה עוד.

Windows 3.x אדריכלות

לגבי כמה מוקדם תוכניות Windows תניב שליטה:

  • Windows 3.1 משתמשת שיתוף פעולה מרובת משימות - כלומר כל יישום כי הוא בתהליך של ריצה הוא הורה לבדוק מעת לעת תור הודעה כדי לברר אם בכלליישום אחר מבקש שימוש של המעבד, ואם כן, כדי להניב שליטה לאותו יישום.עם זאת, יישומים רבים של Windows 3.1 יבדקו את תור ההודעות רק לעתים נדירות, או כלל לא, וישתלטו על המעבד למשך זמן רב ככל שיידרש.מערכת טרום מרובה משימות כגון Windows 95 תוציא את בקרת המעבד מיישום ריצה ותפיץ אותו לאלו שיש להם עדיפות גבוהה יותר בהתאם לצורכי המערכת.

מקור

כל DOS יראה זה יישום יחיד( Windows או אחרים) פועל, אשר יעבור שליטה מסביב מבלי לצאת.בתיאוריה, מראש מרובה tasking יכול להיות מיושם על גבי DOS בכל מקרה עם השימוש בזמן אמת שעון וחומרה interrupts בכוח לתת שליטה על מתזמן.כמו הערות טוני, זה נעשה למעשה על ידי כמה מערכות הפעלה פועל על גבי DOS.

386 מצב משופר?

הערה: היו כמה הערות על מצב משופר 386 של Windows 3.x להיות 32 סיביות, ותמיכה מראש multive-tasking.

זהו מקרה מעניין.כדי לסכם את הפוסט המקושר של הבלוג, מצב משופר 386 היה בעצם היפרוויסור של 32 סיביות, שהפעיל מכונות וירטואליות.בתוך אחד ממכונות וירטואליות אלה רץ Windows 3.x מצב רגיל, אשר עושה את כל הדברים המפורטים לעיל.

MS-DOS גם ירוץ בתוך המכונות הווירטואליות, וכנראה שהם היו מרובי משימות מרובות - כך נראה כי 386 משופרת מצב hypervisor יחלקו פרוסות זמן CPU בין מכונות וירטואליות( אחד מהם רץ נורמלי 3.xואחרים אשר פעלו MS-DOS), וכל VM יעשה את עצמו - 3.x היה שיתוף פעולה רב, בעוד MS-DOS יהיה משימה אחת.

MS-DOS

DOS עצמו היה מטלה בודדת על הנייר, אבל זה היה תמיכה עבור תוכניות TSR כי יישאר ברקע עד מופעלות על ידי הפסקת חומרה.רחוק אמיתי tasking רב, אבל לא מלא יחיד גם משימה.

כל הדיבורים על סיביות?שאלתי על ריבוי משימות!

ובכן, בהחלט, את bit-ns ו multi-tasking אינם תלויים זה בזה.זה צריך להיות אפשרי ליישם כל מצב מרובת משימות בכל סיביות.עם זאת, המעבר ממעבדים של 16 סיביות למעבדים של 32 סיביות גם הציג פונקציונליות חומרה אחרת שיכלה להפוך למשימות מרובות מראש למניעה קלה יותר ליישום.

כמו כן, מאחר שתוכניות של 32 סיביות היו חדשות, היה קל יותר לגרום להן לעבוד כאשר הן נמחקו בכוח - דבר שעלול לשבור כמה תוכניות מדור קודם של 16 סיביות.

כמובן, זה כל ספקולציות.אם אתה באמת רוצה לדעת מדוע MS לא ליישם מראש multive-tasking ב- Windows 3.x( 386 מצב משופרת למרות), תצטרך לשאול מישהו שעבד שם.

כמו כן, רציתי לתקן את ההנחה כי Windows 95 הוא רק מעטפת עבור DOS.

ואחריו התשובה מפיט:

במערכת הפעלה מודרנית, מערכת ההפעלה שולטת בכל משאבי החומרה, ויישומים פועלים נשמרים בארגזי חול.יישום אינו רשאי לגשת לזיכרון שבו מערכת ההפעלה לא הקצתה לאפליקציה זו, והיא אינה יכולה לגשת ישירות להתקני חומרה במחשב.אם נדרשת גישת חומרה, היישום חייב לתקשר באמצעות מנהלי התקנים.

מערכת ההפעלה יכולה לאכוף את הפקד הזה, מכיוון שהוא מאלץ את ה- CPU להיכנס למצב מוגן.

DOS, לעומת זאת, אף פעם לא נכנס למצב מוגן, אבל נשאר במצב אמיתי( * ראה להלן).במצב ריאלי, היישומים הפועלים יכולים לבצע כל פעולה שהיא רוצה, כלומר לגשת ישירות לחומרה.אבל יישום פועל במצב אמיתי יכול גם להגיד CPU להיכנס למצב מוגן.

וזה החלק האחרון מאפשר ליישומים כמו Windows 95 להתחיל ריבוי הליכי הסביבה למרות שהם הושקו בעצם מ DOS.

DOS( דיסק מערכת ההפעלה) היה, ככל שאני יודע, לא הרבה יותר מאשר מערכת ניהול הקבצים.הוא סיפק מערכת קבצים, מנגנונים לניווט מערכת הקבצים, כמה כלים, ואת האפשרות להשיק יישומים.זה גם לאפשר ליישומים מסוימים להישאר תושב, כלומר מנהלי עכבר emulators EMM.אבל זה לא ניסה לשלוט על החומרה במחשב כמו מערכת ההפעלה המודרנית עושה.

* כאשר DOS נוצר לראשונה בשנות ה -70, מצב מוגן לא היה קיים במעבד.זה לא היה עד 80286 מעבד באמצע שנות 1980s כי מצב מוגן הפך חלק CPU.

הקפד לדפדף על פתיל המקורי ולקרוא את הדיון תוסס בנושא זה באמצעות הקישור שלהלן!

יש משהו להוסיף להסבר?נשמע את ההערות.רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי?בדוק את נושא הדיון המלא כאן.