ההבדל בין Mmap ו- malloc הפרש בין

Anonim

mmap לעומת malloc

יש זיכרון דינמי ב- C וזה מצביע על הקצאת זיכרון בשפת התכנות C באמצעות סדרה של פונקציות הנמצאות בספריית C סטנדרטית. אחד מהם הוא מאלוק, אשר מתייחס הקצאת זיכרון. במערכת UNIX יש mmap, אשר מתייחס למערכת ממופה זיכרון שמגיע עם I / O הייחודי שלה. אלה שני (mmap ו malloc) יהיה ערך ערך לבצע את אותה פונקציה, אבל בדיקה נוספת מגלה כמה הבדלים. הבדלים אלה, הנובעים מפונקציונליות, מפורטים להלן.

-> ->

ההבדלים

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

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

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

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

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

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

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

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

Mmap הוא יתרון על malloc כי זיכרון בשימוש על ידי mmap מוחזר מיד למערכת ההפעלה. זיכרון בשימוש על ידי מאלוק הוא מעולם לא חזר אלא אם כן יש קטע קטע לנתק. זיכרון זה נשמר במיוחד לשימוש חוזר.

סיכום

'malloc' מייצג את נקודת הקצאת הזיכרון הראשית

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

Mmap אינו מומלץ עבור מקצה את הזיכרון כפי שהוא פיצול זיכרון זמין ולא יכול לבצע שיחות מערכת

היתרון של mmap על malloc הוא זמינות של זיכרון, בניגוד לזיכרון malloc, שבו נעשה שימוש חוזר.