האם לינוקס משתמשת בטבעות הגנה?
טבעות הגנה
זה מאפשר היררכיה שלמה של קטעים והרשאות ביניהם. יכול להיות ששמת לב לשיחת קטע חוצה נשמעת בדיוק כמו שיחת מערכת. אם אי פעם הסתכלת על הרכבה של Linux X86 הדרך הסטנדרטית לבצע שיחת מערכת היא int 0x80, מה שמגלה את הפרעה 0x80 . הפרעה עוצרת את המעבד והולכת לשער הפרעה, שאחר כך עובד זהה לשער שיחה – הוא משנה את רמת הפריבילגיה ומקפיץ אותך לאזור אחר של קוד אחר .
האם לינוקס משתמשת בטבעות הגנה?
הזכרנו כיצד אחת המשימות העיקריות של מערכת ההפעלה היא ליישם אבטחה; כלומר לא לאפשר ליישום אחד או למשתמש להפריע לכל אחד אחר שפועל במערכת. משמעות הדבר היא כי יישומים לא צריכים להיות מסוגלים להחליף אחד את הזיכרון או הקבצים של זה, ורק למשאבי מערכת כפי שמוכתבים על ידי מדיניות המערכת.
עם זאת, כאשר יישום פועל יש לו שימוש בלעדי במעבד. אנו רואים כיצד זה עובד כאשר אנו בוחנים תהליכים בפרק הבא. הבטחת היישום גישה רק לזיכרון שבבעלותו מיושמת על ידי מערכת הזיכרון הווירטואלית, אותה אנו בוחנים בפרק לאחר מכן. הנקודה המהותית היא שהחומרה אחראית לאכיפת כללים אלה.
ממשק שיחת המערכת שבדקנו הוא השער ליישום שמגיע למשאבי מערכת. על ידי אילוץ היישום לבקש משאבים באמצעות שיחת מערכת לגרעין, הגרעין יכול לאכוף כללים לגבי סוג גישה. לדוגמה, כאשר יישום מבצע שיחת מערכת פתוחה () לפתיחת קובץ בדיסק, היא תבדוק את הרשאותיו של המשתמש כנגד הרשאות הקבצים ויאפשרו או תכחיש גישה.
4 . 1 . 1 רמות פריבילגיה
בדרך כלל ניתן לראות בהגנה על חומרה כמערכת טבעות קונצנטריות סביב מערך פעולות ליבה.
רמות הפריבילגיה ב- x86
איור 4 . 1 . 1 . טבעות 1
בטבעת הפנימית ביותר הם ההוראות המוגנות ביותר; לאלה שרק לגרעין יש לאפשר להתקשר. לדוגמה, אין לאפשר את הוראות HLT להפסקת המעבד להפעלה על ידי יישום משתמש, מכיוון שהוא ימנע מכל המחשב לעבוד. עם זאת, הגרעין צריך להיות מסוגל להתקשר להוראות אלה כאשר המחשב נסגר באופן לגיטימי. 1
כל טבעת פנימית יכולה לגשת לכל הוראות המוגנות על ידי טבעת נוספת, אך לא מוגנת על ידי טבעת נוספת. לא לכל הארכיטקטורות יש מספר רמות טבעות כנ”ל, אך רובם יספקו לפחות רמת “גרעין” ו”משתמש “.
4 . 1 . 1 . 1 386 מודל הגנה
במודל ההגנה של 386 יש ארבע טבעות, אם כי מרבית מערכות ההפעלה (כמו לינוקס ו- Windows) משתמשות רק בשתי מהטבעות כדי לשמור על תאימות לארכיטקטורות אחרות שאינן מאפשרות כמה שיותר רמות הגנה נפרדות.
386 שומר על הרשאות על ידי הפיכת כל פיסת קוד יישום הפועל במערכת, יש מתאר קטן, הנקרא A מתאר קוד, המתאר, בין היתר, את רמת הפריבילגיה שלה. בעת הפעלת קוד יישום מקפיצה לקוד אחר מחוץ לאזור המתואר על ידי מתאר הקוד שלו, רמת הרשאות של היעד נבדקת. אם הוא גבוה יותר מקוד ההפעלה כרגע, הקפיצה אינה מאושרת על ידי החומרה (והיישום יתרסק).
4 . 1 . 1 . 2 העלאת פריבילגיה
יישומים רשאים להעלות רק את רמת ההרשאות שלהם על ידי שיחות ספציפיות המאפשרות זאת, כגון ההוראות ליישום שיחת מערכת. בדרך כלל מכונים אלה התקשר לשער מכיוון שהם מתפקדים בדיוק כשער פיזי; כניסה קטנה דרך קיר בלתי חדיר אחרת. כאשר נקראת ההוראה הזו ראינו כיצד החומרה מפסיקה לחלוטין את יישום הפועל ושליטה על הידיים על הגרעין. על הגרעין לשמש כשומר סף; להבטיח ששום דבר מגעיל לא מגיע דרך השער. המשמעות היא שהיא חייבת לבדוק בזהירות טיעוני שיחת מערכת כדי לוודא שהיא לא תשתולל לעשות דבר שהוא לא אמור (אם זה יכול להיות, זה באג אבטחה). כאשר הגרעין פועל בטבעת הפנימית ביותר, יש לו הרשאות לבצע כל פעולה שהיא רוצה; לאחר סיום זה יחזור לשלוט בחזרה ליישום שתפעל שוב עם רמת הפריבילגיה הנמוכה יותר.
4 . 1 . 1 . 3 שיחות מערכת מהירות
בעיה אחת עם מלכודות כמתואר לעיל היא שהם יקרים מאוד עבור המעבד ליישם. יש הרבה מצב שיש לשמור לפני שהקשר יכול לעבור. מעבדים מודרניים הבינו תקורה זו ושואפים לצמצם אותו.
כדי להבין את מנגנון השער המתואר לעיל מחייב חקירת תכנית הפילוח הגאונית אך המסובכת המשמשת את המעבד. הסיבה המקורית לפילוח הייתה להיות מסוגלת להשתמש יותר מ -16 הסיביות הזמינות בפנקס לכתובת, כפי שמודגם באיור 4 . 1 . 1 . 3 . 1, כתובת פילוח x86.
פילוח מרחיב את שטח הכתובות של מעבד על ידי חלוקתו לנתחים. המעבד שומר על רישומי קטעים מיוחדים, וכתובות מוגדרות על ידי רישום קטעים ושילוב קיזוז. הערך של פנקס הקטע מתווסף לחלק הקיזוז כדי למצוא כתובת סופית.
איור 4 . 1 . 1 . 3 . 1 x86 פילוח פילוח
כאשר x86 עבר לרישומי 32 סיביות, תוכנית הפילוח נותרה אך בפורמט אחר. במקום גדלי קטע קבוע, קטעים מותר להיות בכל גודל. המשמעות היא שהמעבד צריך לעקוב אחר כל הקטעים השונים והגדלים שלהם, בהם הוא משתמש מתארים. מתארי הקטע העומדים לרשות כולם נשמרים ב טבלת מתאר גלובלית או GDT בקיצור. לכל תהליך מספר רישומים המצביעים על רשומות ב- GDT; אלה הקטעים אליהם יכול התהליך לגשת (יש גם מְקוֹמִי שולחנות מתאר, והכל אינטרו
נקודות מפתח:
- לינוקס מיישם אבטחה כדי למנוע הפרעות בין יישומים למשתמשים.
- החומרה אוכפת כללים הנוגעים לגישה לזיכרון וגישה למשאבים.
- ממשק שיחות המערכת משמש כשער ליישומים לגישה למשאבי מערכת.
- רמות הפריבילגיה קובעות גישה להוראות ותפעול מסוימים.
- במודל ההגנה 386 יש ארבע טבעות, אך מרבית מערכות ההפעלה משתמשות רק בשניים.
- לכל קוד יישום יש מתאר קוד המגדיר את רמת הרשאות שלו.
- יישומים יכולים להעלות רק את רמת הזכות שלהם באמצעות שיחות ספציפיות, כגון שיחות מערכת.
- הגרעין משמש כשומר סף כדי להבטיח את אבטחת שיחות המערכת.
- שיחות מערכת מהירות שואפות לצמצם את תקורה של מיתוג ההקשר.
- תוכנית הפילוח של X86 מרחיבה את שטח הכתובות של המעבד.
שאלות:
- מה המטרה של יישום אבטחה במערכת הפעלה?
- כיצד החומרה אוכפת את כללי הגישה לזיכרון?
- איזה תפקיד ממלא ממשק קריאת המערכת בגישה למשאבי מערכת?
- כיצד משתמשים ברמות הפריבילגיה בהגנת חומרה?
- כמה טבעות יש למודל ההגנה 386?
- מהו מתאר קוד?
- כיצד יישומים יכולים להעלות את רמת הפריבילגיה שלהם?
- מה תפקיד הגרעין כשומר סף?
- מה המטרה של שיחות מערכת מהירות?
- מדוע הוצג פילוח במעבד X86?
- איך פועלת תוכנית הפילוח של X86?
- מהם מתארי הקטע ואיפה הם מאוחסנים?
טבעות הגנה
זה מאפשר היררכיה שלמה של קטעים והרשאות ביניהם. יכול להיות ששמת לב לשיחת קטע חוצה נשמעת בדיוק כמו שיחת מערכת. אם אי פעם הסתכלת על הרכבה של Linux X86 הדרך הסטנדרטית לבצע שיחת מערכת היא int 0x80, מה שמגלה את הפרעה 0x80 . הפרעה עוצרת את המעבד והולכת לשער הפרעה, שאחר כך עובד זהה לשער שיחה – הוא משנה את רמת הפריבילגיה ומקפיץ אותך לאזור אחר של קוד אחר .
האם לינוקס משתמשת בטבעות הגנה?
הזכרנו כיצד אחת המשימות העיקריות של מערכת ההפעלה היא ליישם אבטחה; כלומר לא לאפשר ליישום אחד או למשתמש להפריע לכל אחד אחר שפועל במערכת. משמעות הדבר היא כי יישומים לא צריכים להיות מסוגלים להחליף אחד את הזיכרון או הקבצים של זה, ורק למשאבי מערכת כפי שמוכתבים על ידי מדיניות המערכת.
עם זאת, כאשר יישום פועל יש לו שימוש בלעדי במעבד. אנו רואים כיצד זה עובד כאשר אנו בוחנים תהליכים בפרק הבא. הבטחת היישום גישה רק לזיכרון שבבעלותו מיושמת על ידי מערכת הזיכרון הווירטואלית, אותה אנו בוחנים בפרק לאחר מכן. הנקודה המהותית היא שהחומרה אחראית לאכיפת כללים אלה.
ממשק שיחת המערכת שבדקנו הוא השער ליישום שמגיע למשאבי מערכת. על ידי אילוץ היישום לבקש משאבים באמצעות שיחת מערכת לגרעין, הגרעין יכול לאכוף כללים לגבי סוג גישה. לדוגמה, כאשר יישום מבצע שיחת מערכת פתוחה () לפתיחת קובץ בדיסק, היא תבדוק את הרשאותיו של המשתמש כנגד הרשאות הקבצים ויאפשרו או תכחיש גישה.
4 . 1 . 1 רמות פריבילגיה
בדרך כלל ניתן לראות בהגנה על חומרה כמערכת טבעות קונצנטריות סביב מערך פעולות ליבה.
רמות הפריבילגיה ב- x86
איור 4 . 1 . 1 . טבעות 1
בטבעת הפנימית ביותר הם ההוראות המוגנות ביותר; לאלה שרק לגרעין יש לאפשר להתקשר. לדוגמה, אין לאפשר את הוראות HLT להפסקת המעבד להפעלה על ידי יישום משתמש, מכיוון שהוא ימנע מכל המחשב לעבוד. עם זאת, הגרעין צריך להיות מסוגל להתקשר להוראות אלה כאשר המחשב נסגר באופן לגיטימי. 1
כל טבעת פנימית יכולה לגשת לכל הוראות המוגנות על ידי טבעת נוספת, אך לא מוגנת על ידי טבעת נוספת. לא לכל הארכיטקטורות יש מספר רמות טבעות כנ”ל, אך רובם יספקו לפחות רמת “גרעין” ו”משתמש “.
4 . 1 . 1 . 1 386 מודל הגנה
במודל ההגנה של 386 יש ארבע טבעות, אם כי מרבית מערכות ההפעלה (כמו לינוקס ו- Windows) משתמשות רק בשתי מהטבעות כדי לשמור על תאימות לארכיטקטורות אחרות המאפשרות כיום רמות הגנה נפרדות רבות.
386 שומר על הרשאות על ידי הפיכת כל פיסת קוד יישום הפועל במערכת, יש מתאר קטן, הנקרא A מתאר קוד, המתאר, בין היתר, את רמת הפריבילגיה שלה. בעת הפעלת קוד יישום מקפיצה לקוד אחר מחוץ לאזור המתואר על ידי מתאר הקוד שלו, רמת הרשאות של היעד נבדקת. אם הוא גבוה יותר מקוד ההפעלה כרגע, הקפיצה אינה מאושרת על ידי החומרה (והיישום יתרסק).
4 . 1 . 1 . 2 העלאת פריבילגיה
יישומים רשאים להעלות רק את רמת ההרשאות שלהם על ידי שיחות ספציפיות המאפשרות זאת, כגון ההוראות ליישום שיחת מערכת. בדרך כלל מכונים אלה התקשר לשער מכיוון שהם מתפקדים בדיוק כשער פיזי; כניסה קטנה דרך קיר בלתי חדיר אחרת. כאשר נקראת ההוראה הזו ראינו כיצד החומרה מפסיקה לחלוטין את יישום הפועל ושליטה על הידיים על הגרעין. על הגרעין לשמש כשומר סף; להבטיח ששום דבר מגעיל לא מגיע דרך השער. המשמעות היא שהיא חייבת לבדוק בזהירות טיעוני שיחת מערכת כדי לוודא שהיא לא תשתולל לעשות דבר שהוא לא אמור (אם זה יכול להיות, זה באג אבטחה). כאשר הגרעין פועל בטבעת הפנימית ביותר, יש לו הרשאות לבצע כל פעולה שהיא רוצה; לאחר סיום זה יחזור לשלוט בחזרה ליישום שתפעל שוב עם רמת הפריבילגיה הנמוכה יותר.
4 . 1 . 1 . 3 שיחות מערכת מהירות
בעיה אחת עם מלכודות כמתואר לעיל היא שהם יקרים מאוד עבור המעבד ליישם. יש הרבה מצב שיש לשמור לפני שהקשר יכול לעבור. מעבדים מודרניים הבינו תקורה זו ושואפים לצמצם אותו.
כדי להבין את מנגנון השער המתואר לעיל מחייב חקירת תכנית הפילוח הגאונית אך המסובכת המשמשת את המעבד. הסיבה המקורית לפילוח הייתה להיות מסוגלת להשתמש יותר מ -16 הסיביות הזמינות בפנקס לכתובת, כפי שמודגם באיור 4 . 1 . 1 . 3 . 1, כתובת פילוח x86 .
פילוח מרחיב את שטח הכתובות של מעבד על ידי חלוקתו לנתחים. המעבד שומר על רישומי קטעים מיוחדים, וכתובות מוגדרות על ידי רישום קטעים ושילוב קיזוז. הערך של פנקס הקטע מתווסף לחלק הקיזוז כדי למצוא כתובת סופית.
איור 4 . 1 . 1 . 3 . 1 x86 פילוח פילוח
כאשר x86 עבר לרישומי 32 סיביות, תוכנית הפילוח נותרה אך בפורמט אחר. במקום גדלי קטע קבוע, קטעים מותר להיות בכל גודל. המשמעות היא שהמעבד צריך לעקוב אחר כל הקטעים השונים והגדלים שלהם, בהם הוא משתמש מתארים. מתארי הקטע העומדים לרשות כולם נשמרים ב טבלת מתאר גלובלית או GDT בקיצור. לכל תהליך מספר רישומים המצביעים על רשומות ב- GDT; אלה הקטעים אליהם יכול התהליך לגשת (יש גם מְקוֹמִי טבלאות מתאר, והכל מתקשר עם קטעי מצב המשימות, אבל זה לא חשוב עכשיו). המצב הכללי מאויר באיור 4 . 1 . 1 . 3 . 2, קטעי x86 .
קטעי X86 בפעולה. שימו לב כיצד “רחוק שיחה” עובר דרך שער שיחה המפנה מחדש לקטע של קוד הפועל ברמת טבעת נמוכה יותר. הדרך היחידה לשנות את בורר קטע הקוד, המשמשת באופן מרומז לכל כתובות הקוד, היא באמצעות מנגנון השיחה. לפיכך, מנגנון השער של שיחה מבטיח כי לבחור מתאר קטעים חדש, ומכאן שאולי לשנות את רמות ההגנה, עליך לעבור באמצעות נקודת כניסה ידועה.
איור 4 . 1 . 1 . 3 . 2 קטעי x86
מכיוון שמערכת ההפעלה מקצה את רישומי הקטע כחלק ממצב התהליך, חומרת המעבד יודעת לאילו מגזרי זיכרון יכולים תהליך ההפעלה כרגע ויכול לאכוף הֲגָנָה כדי להבטיח שהתהליך לא נוגע בשום דבר שהוא לא אמור. אם זה אכן יוצא מגבולות, אתה מקבל א תקלת פילוח, שרוב המתכנתים מכירים.
התמונה הופכת להיות מעניינת יותר כאשר הפעלת קוד צריכה לבצע שיחות לקוד השוכן אַחֵר מִגזָר. כפי שנדון בסעיף 4 . 1 . 1 . 1, 386 מודל הגנה, x86 עושה זאת עם טבעות, כאשר טבעת 0 היא ההרשאה הגבוהה ביותר, טבעת 3 היא הנמוכה ביותר, וטבעות פנימיות יכולות לגשת לטבעות חיצוניות אך לא להיפך.
כפי שנדון בסעיף 4 . 1 . 1 . 2, העלאת פריבילגיה, כאשר קוד הטבעת 3 רוצה לקפוץ לקוד טבעת 0, הוא בעצם משנה את בורר קטעי הקוד שלה כדי להצביע על קטע אחר. לשם כך, עליו להשתמש במיוחד שיחה רחוקה הוראה איזו חומרה מבטיחה עוברת דרך שער השיחה. אין דרך אחרת לתהליך ההפעלה לבחור מתאר חדש לקטעי קוד, ומכאן שהמעבד יתחיל לבצע קוד בקיזוז הידוע בתחום הטבעת 0, האחראי על שמירה על יושרה (ה.ז. לא לקרוא קוד שרירותי ואולי זדוני ולהבצע אותו. כמובן שתוקפים נפרדים תמיד יחפשו דרכים לגרום לקוד שלך לעשות את מה שלא התכוונת אליו!).
זה מאפשר היררכיה שלמה של קטעים והרשאות ביניהם. יכול להיות ששמת לב לשיחת קטע חוצה נשמעת בדיוק כמו שיחת מערכת. אם אי פעם הסתכלת על הרכבה של Linux X86 הדרך הסטנדרטית לבצע שיחת מערכת היא int 0x80, מה שמגלה את הפרעה 0x80 . הפרעה עוצרת את המעבד והולכת לשער הפרעה, שאחר כך עובד זהה לשער שיחה – הוא משנה את רמת הפריבילגיה ומקפיץ אותך לאזור אחר של קוד אחר .
הבעיה בתכנית זו היא שכן לְהַאֵט. דרוש מאמץ רב כדי לבצע את כל הבדיקה הזו, ויש לשמור רישומים רבים כדי להיכנס לקוד החדש. ובדרך חזרה החוצה, הכל צריך לשחזר שוב.
על פילוח מערכות X86 מודרני ומערכת הטבעת עם ארבע המפלס אינה משמשת בזכות הזיכרון הווירטואלי, שנדון במלואו בפרק 6, זיכרון וירטואלי . הדבר היחיד שקורה באמת עם מיתוג פילוח הוא שיחות מערכת, אשר למעשה עוברות ממצב 3 (Puserspace) למצב 0 וקפוץ לקוד המטפל במערכת בתוך הגרעין. כך המעבד מספק נוסף שיחת מערכת מהירה הוראות שנקראו Sysenter (ו- Sysexit לחזור) המזרזות את כל התהליך על פני שיחה 0x80 int על ידי הסרת האופי הכללי של שיחה רחוקה-זוהי האפשרות לעבור לכל קטע בכל רמת טבעת-ולהגביל את ההתקשרות למעבר רק לקוד טבעת בקטע ולקזז ספציפי, כמאוחסן ברגשים רק לגיבוש לטבעת 0 בקטע ולקזז, שנאגר ברשומים בגרביסטים בלבד לקטע וקיזוז ספציפי, במגרשים ברג’יסטים.
מכיוון שהטבע הכללי הוחלף במידע כל כך ידוע מראש, ניתן להאיץ את כל התהליך, ומכאן שיש לנו את האמור לעיל שיחת מערכת מהירה. הדבר האחר שצריך לציין הוא שמדינה לא נשמרת כאשר הגרעין מקבל שליטה. הגרעין צריך להקפיד לא להרוס את המדינה, אך זה גם אומר שהוא חופשי לחסוך רק במדינה קטנה כמו שנדרש לבצע את העבודה, כך יכול להיות הרבה יותר יעיל לגבי זה. זוהי פילוסופיה מאוד של RISC, וממחישה כיצד הקו מטשטש בין מעבדי RISC ו- CISC.
למידע נוסף על אופן יישום זה בגרעין לינוקס, ראה סעיף 8 . 1 . 1, ספריית גרעינים .
4 . 2 דרכים נוספות לתקשר עם הגרעין
4 . 2 . 1 ioctl
4 . 3 מערכות קבצים
אודות Proc, Sysfs, Debugfs וכו ‘
טבעות הגנה

טבעת 0 האם ה גַרעִין מצב. טבעת 3 האם ה מִשׁתַמֵשׁ מצב. בדרך כלל לא משתמשים בטבעות האחרות. VirtualBox טוען את הגרעין של המכונה הווירטואלית לתוכו טבעת 1.
מצב גרעין לעומת ביצוע מצב משתמש
במצב גרעין, קוד ההופעה יש גישה מלאה ובלתי מוגבלת לחומרה הבסיסית. זה יכול לבצע כל הוראות מעבד ולהתייחס לכל כתובת זיכרון. במצב משתמש, לקוד ההפעלה אין שום יכולת לגשת ישירות לחומרה או לזיכרון התייחסות. קוד הפועל במצב משתמש חייב להאציל ממשקי API למערכת כדי לגשת לחומרה או לזיכרון.
שני המצבים הללו אינם תוויות גרידא; הם נאכפים על ידי חומרת ה- CPU. אם קוד ביצוע במצב משתמש מנסה לעשות משהו מחוץ לתפיסתו- כמו, נניח, גישה להוראות מעבד מיוחסות או שינוי זיכרון שאין לו גישה אליו- נזרק חריג הניתן לטרוף. במקום שהמערכת כולה תתרסק, רק יישום מסוים מתרסק. זה הערך של מצב המשתמש.
תוצאות התואמות “”
אין תוצאות תואמות “”
מבוא לארכיטקטורת לינוקס ליבה: טבעות הגנה

זהו המאמר הבא שלנו בנושא ארכיטקטורת Core Linux, במאמר הקודם למדנו על מצבי מעבד שונים כמו הרשאות שהקוד מותר לבצע בהן. אז בדקנו את מצב הגרעין ומצב המשתמש ובעצם טבעות הגנה עליה אנו מסתכלים היום בתרשים הבא. אנו יכולים לראות את טבעות ההגנה השונות.
אז תן’קדימה תתחיל
טבעות הגנה ב- x86:
לתת’S דון לראשונה מהו x86? ולמה אנחנו צריכים את זה?
X86 היא ארכיטקטורת מעבד פופולרית ביותר למחשבים שולחניים ומשהו כשאתה בוחן את הטלפונים החכמים אתה יכול לראות את המעבדים האלה אני.ה. ארכיטקטורת המעבדים הפופולרית ביותר למכשירים ניידים מכיוון שהיא יעילה יותר עם ניצול הסוללה שלה. אבל כמו שמחשבים שולחניים לא’זה באמת צריך שיש להם קצת הבדל. דבר אחד שאתה יכול לראות את ה- x ב- x86 בעצם זה’רק אומר מספר עם 86 בסוף אני.ה. x86 כך שבכל פעם שתוכלו לראות משפחה של מעבדים תוכלו לראות רבים ושונים אולם הם תמיד יסתיימו ב 86.

אז אנחנו נכנסים לעומק טבעות הגנה. אנו יכולים להסתכל על טבעות ההגנה כייצוג גרפי של רמות הפריבילגיה של ה- CPU בהן דיברנו קודם לכן. במאמרים הבאים, אנו נעבור עמוק בארכיטקטורת ה- CPU וכיצד טבעות ההגנה עובדות? זה כמו ללכת עם רמה נמוכה עם זה.
כבר ידענו את המעבד הזה’ג “מצב גרעין” זה שווה עם “טבעת 0” בתרשים ובמעבד’ג “מצב משתמש” צריך להתמודד עם “טבעת 3”. כאן אתה בטח חושב על טבעת 1 ו -2. בעיקרו של דבר במערכת הפעלה מודרנית’S כולל לינוקס משתמשת רק בטבעת 0 וטבעת 3 בארכיטקטורות x86, בגלל האופן בו משהו נקרא א “טבלת עמוד” מיושם.
זה כמו בטוח במהירות ואין אף אחד’זה כן. זו הסיבה שאנו משתמשים בטבעת 0 ובצלילה 3.
טבלת עמוד היא קובץ מיפוי זיכרון המשמש מערכות זיכרון וירטואליות במערכת מחשב. למרות שאדריכלות מודרנית יכולות להיות x86 שיכולות לקבל את כל הטבעות הללו. בטבעת סביבת וירטואליזציה מסוימת, משתמשים בפועל 1. זֶה’S למעשה תיבה וירטואלית או מכונה וירטואלית. שם את ה- VM’קוד גרעין S בפועל בטבעת 1 וקוד הגרעין בפועל של המכונה המודגשת הוא בטבעת 0.
לתת’קדימה וראה מה כבר ידענו שזה – אם כל התהליכים מתחילים בטבעת 3 כפי שכבר דיברנו עליהם, איך הם מבצעים טבעת 0 הרשאות? מכיוון שהגרעין העוסק בממשק המשתמש או היישום או התהליך של מערכת ההפעלה המודגשת במערכת ההפעלה, אנו צריכים לפעמים להסתכל על מצבי מערכת הקבצים או על דברים קלט. אלה הטבעות המוגבלות בעיקרן לטבעת 0 הרשאות או סוג של הרשאות גרעין.
אז איך זה מתרחש? כידוע פעולות קלט-פלט, מניפולציה של מערכות קבצים וכו ‘. זֶה’משהו שנקרא ממשק שיחת מערכת וזה’S באמת של מתווך נוסף בין שטח המשתמש שהם אותם פריטים שמבצעים בטבעת 3 לבין שטח הגרעין שמבצע בטבעת 0.
כך שניתן להשתמש בתהליכי מרחבי המשתמש למעשה. הממשק הזה, זה’סוג של API של גרעין כדי שהגרעין יפעיל כמה מתפקידיו עצמו. אז תן’s בדוק מהי שיחת מערכת.
שיחת מערכת: זוהי בקשה לגרעין על ידי תהליך משתמש לביצוע פעולה מיוחסת i.ה. פעולה גרעינית.
הפרעות: זהו אות הנפלט למעבד שאומר ” יש אירוע שצריך את תשומת הלב המיידית שלך”.
מה עושה הפרעה? איך זה שימושי? הם יכולים ליזום שיחת מערכת כמו הפרעות מבוססות תוכנה. אז קוד על ארכיטקטורות מעבד מודרניות יותר עשוי להשתמש בתהליך חניכה אחר במקום בהפרעה. אבל התהליך העיקרי שמאחורי הכל זהה.
זה’זה ניואנס קטן קטן אבל לפעמים ההפרעות הללו אינטנסיביות יותר, הן צריכות להיות בטוחות. אז מערכות מודרניות יותר מסוג ארכיטקטורה במקום שהפרעות הללו יכולות להיות אחרות. אז הרעיון התחתון זהה.
לתת’S עבור לדוגמא לשיחת מערכת:
- תהליך המשתמש זקוק לפעולה גרעינית כך שהוא יוזם הפרעה.
- ההפרעה או ההוראות מכניסים את ה- CPU לטבעת 0 ומעבירים שליטה לגרעין.
- הגרעין קובע אם יש להעניק לתהליך המשתמש את שיחת המערכת על בסיס הרשאות.
- אם יינתן, הגרעין יבצע את שיחת המערכת.
- לאחר סיום, הגרעין יוזם שינוי לטבעת 3.
- הגרעין מחזיר שליטה על תהליך המשתמש.
לְבַקֵר- Hostdens
Vishwajit Kale
Vishwajit קייל התנודד על סצנת השיווק הדיגיטלית עוד בשנת 2015 והיא אסטרטג השיווק הדיגיטלי של Hostdens, חברה שמטרתה לספק פתרונות אירוח אתרים אמינים. Vishwajit מנוסה בשיווק דיגיטלי ותוכן יחד עם SEO. הוא אוהב לכתוב בלוגים טכנולוגיים, לטייל ולקרוא.
Vishwajit Kale
Vishwajit קייל התנודד על סצנת השיווק הדיגיטלית עוד בשנת 2015 והיא אסטרטג השיווק הדיגיטלי של Hostdens, חברה שמטרתה לספק פתרונות אירוח אתרים אמינים. Vishwajit מנוסה בשיווק דיגיטלי ותוכן יחד עם SEO. הוא אוהב לכתוב בלוגים טכנולוגיים, לטייל ולקרוא.
שכבות של מערכת הפעלה
ניתן לחלק מערכות הפעלה למספר שכבות נפרדות, שלכל אחת מהן הפריבילגיות שלה. מערכת זו ידועה כטבעת הגנה. מערכת ההפעלה מנהלת מחשב’משאבים, כגון זמן עיבוד ב- CPU וגישה לזיכרון. לעתים קרובות מחשבים מפעילים תהליכי תוכנה מרובים בבת אחת, ואלה ידרשו רמות שונות של גישה למשאבים ולחומרה.
ניתן לחלק מערכות הפעלה למספר שכבות נפרדות, שלכל אחת מהן הפריבילגיות שלה. מערכת זו ידועה בשם טבעת הגנה.
מהי טבעת הגנה?
מערכת ההפעלה מנהלת מחשב’משאבים, כגון זמן עיבוד ב- CPU וגישה לזיכרון. לעתים קרובות מחשבים מפעילים תהליכי תוכנה מרובים בבת אחת, ואלה ידרשו רמות שונות של גישה למשאבים ולחומרה.
תהליכים מבוצעים בשכבות “טבעות”, כאשר לכל טבעת זכויות גישה שונות למשאבים. לטבעת המרכזית יש את הפריבילגיות הגבוהות ביותר, ולכל שכבה שלאחר מכן פחתה בגישה. ליישום נפוץ של טבעת הגנה עבור מעבדי X86 (סוג משותף של מעבד) יש ארבע טבעות, ממוספרות מ- 0 עד 3, כמתואר להלן.
למה שכבות?
רוצה לשמור
לְמִידָה?
תוכן זה נלקח מ
קורס מקוון של קרן Raspberry Pi,
הבנת מערכות מחשב
צפה במסלול
הדגם השכבה מציע שני יתרונות עיקריים. ראשית, זה מגן מפני קריסות מערכת. בדרך כלל ניתן לשחזר שגיאות בטבעות גבוהות יותר (עם פחות גישה). הסיבה לכך היא שרק לטבעת 0 יש גישה ישירה לזיכרון ול- CPU, כך שאם תהליך המריץ בטבעת החיצונית מתרסק, ניתן להפעיל אותו מחדש מבלי לאבד נתונים או לגרום לשגיאה במעבד. שנית, הוא מציע אבטחה מוגברת. כדי לבצע הוראות הדורשות גישה רבה יותר למשאבים, על התהליך לבקש את ההרשאות ממערכת ההפעלה. לאחר מכן מערכת ההפעלה יכולה להחליט אם להעניק את הבקשה או להכחיש אותה. תהליך בחירה זה מסייע בהגנה על המערכת שלך מפני התנהגות לא רצויה או זדונית.
חלקי טבעת ההגנה
טבעת 0 (הכי מיוחסת) ו -3 (הכי פחות מיוחסת)
טבעת 0 נגישה ל גַרעִין, שהוא חלק מרכזי ברוב מערכות ההפעלה ויכול לגשת לכל דבר. קוד הפועל לכאן אומר שהוא פועל פנימה מצב גרעין. תהליכים הפועלים במצב גרעין יכולים להשפיע על המערכת כולה; אם משהו נכשל כאן, זה כנראה יביא לכיבוי מערכת. לטבעת זו יש גישה ישירה ל- CPU ולזיכרון המערכת, ולכן כל הוראות הדורשות שימוש בשניהם יבוצעו כאן.
טבעת 3, הטבעת הכי פחות מסומנת, נגישה לתהליכי משתמש הפועלים פנימה מצב משתמש. זה המקום בו רוב היישומים הפועלים במחשב שלך ישכבו. לטבעת זו אין גישה ישירה למעבד או לזיכרון, ולכן נאלץ להעביר הוראות הכרוכות באלה לצלצל 0.
טבעות 1 ו -2
לטבעות 1 ו -2 יש הרשאות מיוחדות המצלצלות 3 (מצב משתמש) לא. טבעת 1 משמשת לאינטראקציה עם חומרה ושליטה המחוברת למחשב שלך. נגינה של שיר דרך רמקולים או אוזניות, או הצגת וידאו בצג שלך, הם דוגמאות להוראות שיצטרך לרוץ בטבעת זו. טבעת 2 משמשת להוראות שצריכות לקיים אינטראקציה עם אחסון המערכת, טעינה או שמירת קבצים. סוגים אלה של הרשאות נקראים קֶלֶט וכן תְפוּקָה, מכיוון שהם כרוכים בהעברת נתונים לזיכרון העבודה או החוצה (RAM). טעינת מסמך מילה מאחסון, למשל, תהיה בטבעת 2. הצפייה ועריכה של המסמך תיפול לטבעת 3, שכבת היישום.
דִיוּן
- חשוב על תהליך שיכול לרוץ במחשב שלך, כמו תוכנית מחשבון, או משחק משחק. איזה סוג של הוראות יהיה מעורב, ואילו טבעות הם ישתמשו?
- מה לדעתך יקרה אם כל הקוד יפעל בטבעת 0?



