שאלת מבחן במערכות הפעלה - האוניברסיטה הפתוחה 2020 - ליבה
איזו פעולה מן הפעולות הבאות אפשר לבצע אך ורק במצב ראשוני (kernel mode) במערכת ההפעלה Linux?
יש לבחור תשובה אחת:
יש לבחור תשובה אחת:
- חסימת פסיקות החומרה (disabling hardware interrupts)
- החלפת תהליכונים (thread switch) כאשר מדובר בספריית תהליכונים ברמת המשתמש
- השמת ערך במשתנה גלובאלי
- את כל שלוש הפעולות הנ"ל יש לאפשר אך ורק במצב ראשוני
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמבחן 2020 סמסטר ב2020סמסטר ב
★★★★★
ליבהתהליכוניםפסיקות
חשבו איזו מהפעולות, אם תתבצע על ידי תהליך משתמש, עלולה לסכן את יציבות המערכת כולה או למנוע ממערכת ההפעלה לבצע את תפקידה כראוי.
התשובה הנכונה היא חסימת פסיקות החומרה (disabling hardware interrupts).
פעולות מסוימות במערכת ההפעלה נחשבות לפעולות "מיוחסות" (privileged) ויכולות להתבצע אך ורק במצב ראשוני (kernel mode). הסיבה לכך היא שאם תהליך משתמש רגיל (שרץ במצב משתמש - user mode) יוכל לבצען, הוא עלול לסכן את יציבות המערכת, לפגוע בתהליכים אחרים, או להשתלט על משאבי המערכת באופן בלעדי. נבחן את האפשרויות:
1. חסימת פסיקות החומרה: זוהי פעולה מיוחסת קלאסית. פסיקות (Interrupts) הן הדרך של התקני חומרה (כמו הדיסק, כרטיס הרשת, או שעון המערכת) לאותת למעבד על התרחשות אירוע. שעון המערכת, למשל, מייצר פסיקות קבועות המאפשרות למתזמן של מערכת ההפעלה לפעול. אם תהליך משתמש יוכל לחסום את כל הפסיקות, הוא יוכל למעשה למנוע מהמתזמן לרוץ ולהקצות זמן מעבד לתהליכים אחרים, ובכך להשתלט על המעבד ללא הגבלת זמן ("להרעיב" תהליכים אחרים) ולשתק את המערכת כולה. לכן, פעולה זו חייבת להיות מוגבלת לליבת מערכת ההפעלה בלבד, המשתמשת בה באופן מבוקר מאוד, למשל בתוך קטעים קריטיים קצרים מאוד.
2. החלפת תהליכונים (thread switch) ברמת המשתמש: כאשר מדובר בתהליכונים ברמת המשתמש (User-Level Threads), כל ניהול התהליכונים מתבצע על ידי ספרייה בתוך מרחב הכתובות של התהליך עצמו, ללא ידיעת הליבה. הליבה רואה רק תהליך אחד. החלפת ההקשר בין תהליכונים כאלה כוללת שמירת רגיסטרים ושינוי מצביע המחסנית, פעולות שאינן דורשות הרשאות מיוחדות ומתבצעות כולן במצב משתמש.
3. השמת ערך במשתנה גלובאלי: זוהי פעולת כתיבה בסיסית לזיכרון, בתוך מרחב הכתובות של התהליך עצמו. כל תהליך רשאי ויכול לשנות את המשתנים שלו ללא כל צורך בהתערבות הליבה או במעבר למצב ראשוני. זוהי אחת הפעולות הבסיסיות ביותר בכל תוכנית.
4. כל שלוש הפעולות: מכיוון ששתי הפעולות האחרונות יכולות להתבצע במצב משתמש, אפשרות זו אינה נכונה.
לסיכום, חסימת פסיקות היא הפעולה היחידה מבין האפשרויות שחייבת להיות מוגבלת למצב ראשוני כדי להבטיח את תקינותה ויציבותה של מערכת ההפעלה.
פעולות מסוימות במערכת ההפעלה נחשבות לפעולות "מיוחסות" (privileged) ויכולות להתבצע אך ורק במצב ראשוני (kernel mode). הסיבה לכך היא שאם תהליך משתמש רגיל (שרץ במצב משתמש - user mode) יוכל לבצען, הוא עלול לסכן את יציבות המערכת, לפגוע בתהליכים אחרים, או להשתלט על משאבי המערכת באופן בלעדי. נבחן את האפשרויות:
1. חסימת פסיקות החומרה: זוהי פעולה מיוחסת קלאסית. פסיקות (Interrupts) הן הדרך של התקני חומרה (כמו הדיסק, כרטיס הרשת, או שעון המערכת) לאותת למעבד על התרחשות אירוע. שעון המערכת, למשל, מייצר פסיקות קבועות המאפשרות למתזמן של מערכת ההפעלה לפעול. אם תהליך משתמש יוכל לחסום את כל הפסיקות, הוא יוכל למעשה למנוע מהמתזמן לרוץ ולהקצות זמן מעבד לתהליכים אחרים, ובכך להשתלט על המעבד ללא הגבלת זמן ("להרעיב" תהליכים אחרים) ולשתק את המערכת כולה. לכן, פעולה זו חייבת להיות מוגבלת לליבת מערכת ההפעלה בלבד, המשתמשת בה באופן מבוקר מאוד, למשל בתוך קטעים קריטיים קצרים מאוד.
2. החלפת תהליכונים (thread switch) ברמת המשתמש: כאשר מדובר בתהליכונים ברמת המשתמש (User-Level Threads), כל ניהול התהליכונים מתבצע על ידי ספרייה בתוך מרחב הכתובות של התהליך עצמו, ללא ידיעת הליבה. הליבה רואה רק תהליך אחד. החלפת ההקשר בין תהליכונים כאלה כוללת שמירת רגיסטרים ושינוי מצביע המחסנית, פעולות שאינן דורשות הרשאות מיוחדות ומתבצעות כולן במצב משתמש.
3. השמת ערך במשתנה גלובאלי: זוהי פעולת כתיבה בסיסית לזיכרון, בתוך מרחב הכתובות של התהליך עצמו. כל תהליך רשאי ויכול לשנות את המשתנים שלו ללא כל צורך בהתערבות הליבה או במעבר למצב ראשוני. זוהי אחת הפעולות הבסיסיות ביותר בכל תוכנית.
4. כל שלוש הפעולות: מכיוון ששתי הפעולות האחרונות יכולות להתבצע במצב משתמש, אפשרות זו אינה נכונה.
לסיכום, חסימת פסיקות היא הפעולה היחידה מבין האפשרויות שחייבת להיות מוגבלת למצב ראשוני כדי להבטיח את תקינותה ויציבותה של מערכת ההפעלה.