מבנה מערכת הפעלה ווינדוס¶
ווינדוס נראה למשתמש הרגיל כמו שולחן עבודה, תפריט התחל, וכמה חלונות. אבל מתחת לממשק הזה יש ארכיטקטורה שכבתית מורכבת, שנבנתה במשך עשרות שנים כדי לאזן בין ביצועים, יציבות, ואבטחה. הנה מבט כללי על איך זה בנוי.
מצב משתמש מול מצב קרנל¶
החלוקה הכי בסיסית והכי חשובה בווינדוס היא בין שני מצבי הרשאה - user mode ו-kernel mode. תוכנות רגילות, כמו הדפדפן או עורך התמלילים שלכם, רצות במצב משתמש. במצב הזה, לתוכנה יש גישה מוגבלת בלבד - היא לא יכולה לגעת ישירות בחומרה או בזיכרון של תוכנות אחרות.
מצב קרנל, לעומת זאת, שמור לחלקים הכי קריטיים של המערכת - הקרנל עצמו, דרייברים של חומרה, ורכיבים מרכזיים אחרים. קוד שרץ שם יכול לגעת בכל דבר במחשב. החלוקה הזו היא בדיוק מה שמונע מתוכנה רגילה, אפילו אם היא זדונית, להפיל את כל המערכת - כי היא פשוט לא יכולה לגעת ברמה הזו בלי אישור.
הרכיבים המרכזיים בקרנל¶
בליבה של ווינדוס יש כמה רכיבים מרכזיים שעובדים יחד:
- HAL - Hardware Abstraction Layer. שכבה שמסתירה את ההבדלים בין חומרה שונה, כדי שאותו קרנל יוכל לרוץ על מגוון עצום של מעבדים וכרטיסי אם בלי שינוי.
- Kernel - האחראי על תזמון תהליכים ותהליכונים, וניהול סנכרון בין רכיבים שרצים במקביל.
- Executive - שכבה מעל הקרנל שמנהלת שירותים בסיסיים כמו ניהול זיכרון, ניהול קבצים, ואבטחה. רוב הקריאות שתוכנות רגילות שולחות למערכת, עוברות דרך השכבה הזו.
איך תוכנית רגילה מדברת עם המערכת¶
כשתוכנה שרצה במצב משתמש צריכה לבצע פעולה שדורשת גישה למשאבי מערכת, כמו לפתוח קובץ או להקצות זיכרון, היא לא עושה זאת ישירות. היא מבצעת קריאת מערכת - system call - שמעבירה את הבקשה בצורה מבוקרת אל הקרנל. הקרנל בודק שהבקשה חוקית, מבצע אותה, ומחזיר תשובה בחזרה לתוכנית. כל המנגנון הזה קורה תוך אלפיות שנייה, אבל הוא מה שמאפשר לווינדוס לשמור על שליטה ויציבות למרות שרצות עליו אלפי תוכנות שונות במקביל.
תת-מערכות - subsystems¶
ווינדוס תומך היסטורית בכמה סביבות ריצה שונות באמצעות מה שנקרא subsystems - שכבות שמתרגמות בקשות מסביבה ספציפית אל הממשק הפנימי של הקרנל. ה-subsystem העיקרי היום הוא Win32, שדרכו רצות רוב התוכנות הרגילות. בעבר היו גם תת-מערכות נוספות לתמיכה בסביבות אחרות, אם כי רובן פחות רלוונטיות כיום.
שירותים - services¶
מעל הקרנל, ווינדוס מריץ אוסף גדול של שירותים - תהליכי רקע שרצים ללא תלות בהתחברות משתמש, ומטפלים במשימות כמו רשת, הדפסה, או עדכונים. שירותים אלה מתחילים אוטומטית עם המחשב, וניתן לנהל אותם דרך כלי הניהול של ווינדוס.
למה ההבנה הזו שימושית¶
הבנה בסיסית של איך ווינדוס בנוי מסבירה תופעות שמשתמשים נתקלים בהן כל הזמן - למה מסך כחול (BSOD) קורה בדרך כלל בגלל דרייבר פגום שרץ במצב קרנל, ולא בגלל תוכנה רגילה שקרסה. תוכנה רגילה שקורסת פשוט נסגרת, כי היא מבודדת במצב משתמש. דרייבר פגום, לעומת זאת, יכול להפיל את כל המערכת, כי הוא רץ עם הרשאות מלאות.
מי שרוצה להבין את ווינדוס ברמה עמוקה יותר, מהיסודות ועד עבודה מעשית, מוזמן להתחיל בקורס שלנו: קורס ווינדוס בסיסי.
יש לכם שאלה על מבנה המערכת, או שנתקלתם ב-BSOD ורוצים להבין מה קרה שם? בואו נדבר על זה.