Carmi Merimovich

כרמי מרימוביץ

אתר אישי

מצב קרנל ומצב משתמש

לפני שנמשיך לשיטות MMU מתקדמות יותר נחזור לנושא האבטחה.

אם המתכנת מסוגל לשנות את אוגרי ה-mmu אזי הוא יכול להשיג גישה לכל הזכרון במחשב. משמע יש לנו בעיה מעניינת. לפעמים רוצים לאפשר למעבד לשנות את אוגרי ה-mmu ולפעמים רוצים לאסור זאת עליו.

לשם כך מתכנני המעבדים הוסיפו שני מושגים חדשים:

מצב המעבד הוא ביט (או שניים) באוגר מיוחד במעבד. כאשר מדובר בביט אחד בדרך כלל מוגדר הדבר הבא:

מתכנני המעבד הגדירו כל פקודה אם היא פריבילגית או לא-פריבילגית.

התנהגות המעבד היא כזו:

דוגמא לפקודות פריבילגיות: גישה לאוגר המכיל את ביט מצב המעבד. גישה לאוגרי ה-mmu.

אם מערכת ההפעלה תנהל טוב אץ היכולות הנ"ל נקבל את האבטחה המבוקשת.

כלומר. מערכת ההפעלה תעבוד במצב קרנל. כאשר מערכת ההפעלה מעבירה את המעבד לתוכנית משתמש היא תעשה זאת כאשר המעבד במצב משתמש.

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