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

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

    בהתחשב בכך DOS היה אחד tasking OS ואת הקשרים היה לו עם גירסאות מוקדמות של Windows, איך בדיוק גירסאות קודמות של Windows לנהל להשיג multi-tasking? פוסט SuperSser של Q & A של היום בוחן את התשובות לשאלה זו.

    מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.

    Windows 95 מסך באדיבות ויקיפדיה.

    השאלה

    קורא הקורא לנואוב רוצה לדעת כמה גרסאות ישנות יותר של 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, אשר ספגה pre-rective רב המשימות). משימה היתה צריכה להיכנע למערכת ההפעלה כדי לתזמן משימה אחרת. התשואות נבנו בשיחות 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 כי יישאר ברקע עד מופעלות על ידי הפסקת חומרה. רחוק ריבוי משימות אמיתי, אבל לא לגמרי מלא משימה אחת.

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

    ובכן, בהחלט, את 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.

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


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