שיעור 14: mmap() — קבצים ממופי זיכרון
mmap() ממפה קובץ או זיכרון אנונימי ישירות לתוך ה-VAS. פעולה זו מאפשרת קריאה מקובץ גדול כאילו הוא מערך בזיכרון, ללא read() מפורש. בשיעור נלמד את ה-API, את ההבדל בין MAP_PRIVATE ל-MAP_SHARED, ואת הקשר ל-CUDA IPC.
mmap היא כמו לפתוח ספר ישירות על השולחן במקום להעתיק פרקים בכל פעם. אתה קורא ישירות מהמקור.
- mmap
- קריאת מערכת שממפה קובץ או זיכרון אנונימי ישירות לתוך ה-VAS של התהליך. מחזירה pointer לתחילת האזור.
- page fault
- חריגה שמתרחשת כשתהליך ניגש לדף זיכרון שאינו ב-RAM. ה-OS טוען את הדף (מקובץ או swap) ומחזיר את הביצוע.
- MAP_SHARED
- שינויים כתובים חזרה לקובץ ונראים לתהליכים אחרים שממפים את אותו הקובץ. משמש לIPC.
- MAP_PRIVATE
- copy-on-write: שינויים גלויים רק לתהליך הנוכחי ולא נכתבים לקובץ. קבצי ELF נטענים ב-MAP_PRIVATE.
- mapping מגובה-קובץ
- mmap שיש לו קובץ כmapping source. page faults טוענים את הנתונים מהקובץ. מנוגד ל-anonymous mmap שיש לו אפס כמקור.