קצת off topic

nocgod

New member
קצת off topic

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

נניח ויש לי מערכת ובה יש two level paging
רמה ראשונה בגודל 1024 רשומות של 2nd level page tables
רמה שניה בגודל 1024 רשומות שמיצגות 4096 ביטים
במילים אחרות מערכת עם אורך כתובת 32 ביטים (4 גיגה בייט זיכרון כביכול)

נניח ואני מקבל כתובת Ox00403004 וירטואלית (לוגית), איך אני ממפה אותה לזיכרון פיזי כאשר אני יודע שכתובת מחולקת ל (10 ביט רמה ראשונה 10 ביט רמה שניה 12 ביט הייסט - כמובן מדובר משמאל לימין)
בספר (modern operating systems 3rd ed.) הם מיפו את זה לרשומה הראשונה בטבלה הראשונה לרשומה השניה בטבלה השניה וכמובן משם ישירות לזיכרון, מבלי להציג חישוב מתמטי של איך זה נעשה בפועל.

מישהו יכול להסביר או לתת לי איזה לינק למקום בו מסבירים? ראיתי כבר הרצאה של שעה של איזה הודי מהאוניברסיטה הלאומית של בומביי או משהו כזה וגם הוא לא עונה על השאלה הזאת.

תודה מראש!
 

selalerer

New member
לתרגם את הכתובת לביטים, אתה יודע?

ב-32 ביט, הכתובת שלך תיראה כך:

0000 0000 0100 0000 0011 0000 0000 0100

כלומר 10 ביטים ראשונים (שמאליים):

0000 0000 01

ו-10 ביטים שניים:

00 0000 0011

וה-12 ביטים האחרונים (ההיסט):

0000 0000 0100

כלומר דף מס' 1 ברמה הראשונה.
דף מספר שלוש ברמה השניה.
היסט 4.
 

nocgod

New member
יצאתי נעל

:) לא לומדים ב2 בלילה!
בכל מקרה המרצה ברבר משהו בשליש עברית שליש אנגלית שליש קבלית על משהו חלוקה עם שארית... כנראה קצת הוטעתי....

תודה!
 
למעלה