דף (זיכרון מחשב)

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

העברה של דפים בין זיכרון ראשי לזיכרון משני, כגון דיסק קשיח, מכונה דפדוף או החלפה.

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

המושג נטבע כאנלוגיה לדפים בספר מודפס. לדוגמה: אם קורא היה רוצה, למשל, למצוא את המילה ה-5,000 בספר, הוא יכול היה לספור מהמילה הראשונה. אך לרוב, פעולה זו לא יעילה. דרך יעילה יותר היא להשתמש בתוכן עניינים שנקרא טבלת דפים. מתוך טבלה זו ניתן להסיק בקלות רבה יותר באיזה דף מופיעה המילה ה-5,000, וכמה מילים לספור בדף זה. רישום זה של המילים בכל דף של הספר מקביל לטבלת דפים (או תוכן עניינים) של מערכת קבצים ממוחשבת.

## גודל דף

### היבטים בנוגע לגודל דף
גודל הדף נקבע בדרך כלל על ידי ארכיטקטורת המעבד. בדרך כלל לדפים במערכת יש גודל אחיד, כגון 4096 בתים (4KB). עם זאת, תכנון מעבדים מאפשר לעתים קרובות להכפיל את גודל הדף או יותר. ישנן מספר נקודות שצריך לקחת בחשבון בבחירת גודל הדף.

#### גודל טבלת הדפים
מערכת עם גודל דף קטן יותר משתמשת ביותר דפים, כך שטבלת הדפים תופסת יותר מקום בזיכרון. לדוגמה, אם מרחב כתובות (וירטואלי) בגודל 2^{32} ממופה לדפים בגודל KiB 4 (2^{12} בתים), מספר הדפים הוא \frac{2^{32}}{2^{12}}=2^{20}. אך אם גודל הדף גדל ל-KiB 32 (2^{15} בתים), נדרשים רק \frac{2^{32}}{2^{15}}=2^{17} דפים. אלגוריתם דפים רב-שלבי (Multi-level paging) מאפשר לצמצם את צריכת הזיכרון הנדרשת עבור טבלאות דפים של תהליכים. האלגוריתם עושה זאת באמצעות חלוקת טבלת הדפים לתת-טבלאות קטנות יותר, ובכך למעשה ביצוע "דפדוף" לטבלת הדפים עצמה. גישה זו מונעת את הצורך בהקצאת זיכרון גדול ורציף עבור טבלת דפים שלמה, ומאפשרת להחזיק בזיכרון הראשי רק את חלקי הטבלה הנמצאים בשימוש בפועל. 

**שימוש ב-TLB**

מאחר שכל גישה לזיכרון דורשת מיפוי מכתובת וירטואלית לכתובת פיזית, קריאה חוזרת של טבלת הדפים מהזיכרון הראשי בכל פעם מחדש עלולה להיות יקרה מאוד מבחינת ביצועים. כדי לפתור זאת, נעשה שימוש ב-TLB, זיכרון מטמון מהיר במיוחד המוטמע בתוך המעבד. ה-TLB הוא בעל קיבולת מוגבלת. כאשר המיפוי המבוקש אינו נמצא בו (מצב המכונה "TLB miss"), המערכת נאלצת לשלוף את המידע מטבלת הדפים שבזיכרון. ככל שגודל הדף גדול יותר, כך ה-TLB מסוגל לכסות טווח גדול יותר של זיכרון וירטואלי. כתוצאה מכך, מספר ה"פספוסים" (TLB misses) פוחת, והביצועים הכלליים של המערכת משתפרים. עם זאת, דפים גדולים יכולים לגרום לזיהום של המטמון. המערכת טוענת לתוך המטמון נתונים רבים מהדף הגדול, למרות שייתכן והתהליך אולי זקוק רק לחלק קטן מהם, מה שבא על חשבון נתונים אחרים שיכולים היו להיות במטמון.

**[[קיטוע]] פנימי**

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

לדוגמה, נניח שגודל הדף הוא 1024 בתים (1KB). אם תהליך מקצה 1025 בתים, יש להשתמש בשני דפים, וכתוצאה מכך יהיו בזיכרון 1023 בתים של שטח לא בשימוש (כאשר הדף הראשון נצרך במלואו ובדף השני נצרך רק בית אחד).

## הערות שוליים

קטגוריה:התקני זיכרון אלקטרוניים
קטגוריה:זיכרון מחשב