מרץ 2002אלן אזאגורי ©1 זיכרון משותף מבוזר Distributed Shared Memory
מרץ 2002 אלן אזאגורי ©2עמוד נושאים זיכרון משותף בין מעבדים מימושים של גישה לדף מרוחק קונסיסטנטיות שיתוף דפים לעומת שיתוף אוביקטים
מרץ 2002 אלן אזאגורי ©3עמוד מערכת מרובת מעבדים עם זיכרון משותף פיזי snoopy cache –קריאה cache hit – מהמטמון cache miss – דרך ה-bus –כתיבה write-through מטמונים אחרים מאזינים ב- busופוסלים את העותק המקומי –הטיפול הוא ברמת cache lines (כ מילים) וריאציות –העברת מידע ישירות בין המטמונים מעבד מטמון מעבד מטמון מעבד מטמון מעבד מטמון זיכרון bus
מרץ 2002 אלן אזאגורי ©4עמוד ארכיטקטורת טיפוסית למערכת מרובת מעבדים איך תהליכים הרצים על מעבדים שונים מתקשרים? 1.שליחה וקבלת הודעות רשת תקשורת רשת תקשורת מעבד זיכרון מעבד זיכרון..... sendreceive
מרץ 2002 אלן אזאגורי ©5עמוד ארכיטקטורת אלטרנטיבית... זיכרון משותף מבוזר איך תהליכים הרצים על מעבדים שונים מתקשרים? 1.שליחה וקבלת הודעות או 2.זיכרון משותף מדומה אשליה שהתהליכים רצים על אותו מעבד רשת תקשורת רשת תקשורת מעבד זיכרון מעבד זיכרון.....
מרץ 2002 אלן אזאגורי ©6עמוד זיכרון משותף מבוזר מימוש ניתן להתלבש על מנגנון ה-page fault –גישה לדף לא בזיכרון המקומי גורמת ל-page fault ארבע אפשרויות –הדף בזיכרון המקומי והגישה חוקית –הגישה אינה חוקית... –הדף הינו בזיכרון של מחשב אחר מצריך גישה לדף המרוחק –הדף אינו בזיכרון של אף מחשב
מרץ 2002 אלן אזאגורי ©7עמוד מימושים אפשריים לגישה לדף מרוחק Remote –הדף נשאר במקום, והגישה מבוצעת מרחוק –בדומה ל-function shipping Migrate –הדף מועבר, והגישה מבוצעת מקומית –בדומה ל-data shipping Replicate –הדף מועתק, והגישה מבוצעת מקומית
מרץ 2002 אלן אזאגורי ©8עמוד מימושים אפשריים לגישה לדף מרוחק ניתן לבחור מדיניות שונה לקריאה ולכתיבה –כמו כן, ניתן להחליף מדיניות עבור דף לפי תבניות הגישה אליו אפשרויות נפוצות replicate migrate remote קריאה כתיבה 1234
מרץ 2002 אלן אזאגורי ©9עמוד מימושים אפשריים לגישה לדף מרוחק read remote/write remote –הבקשות מבוצעות ע"י שרת מרכזי –או כל חלק מהזיכרון באחריות מעבד אחר מבטיח קוסיסטנטיות ופשוט למימוש דורש תקשורת לכל קריאה וכתיבה read migrate/write migrate –מעבירים את הדף למעבד שרוצה לבצע את הגישה יעיל מאוד כאשר יש מעט שיתוף דפים עלולים לנדוד כל הזמן במקרה של שיתוף
מרץ 2002 אלן אזאגורי ©10עמוד מימושים אפשריים לגישה לדף מרוחק read replicate/write migrate –הדף משוכפל עבור קוראים –כותב גורם לפסילת העותקים ומקבל את הדף לכתיבה אין נדידת דפים בשיתוף לקריאה אך בשיתוף לכתיבה, עלולה להיות נדידת יתר של דפים read replicate/write replicate –מחייב מנגנון לסידור הגישות (שמירה על קונסיסטנטיות) עשוי להיות יעיל מאוד לקריאות ולכתיבות גם כשיש שיתוף בד"כ המנגנון דורש פעולות מפורשות ע"י המתכנת
מרץ 2002 אלן אזאגורי ©11עמוד שכפול דפים ניתן להחזיק עותק של דף בכל מעבד –קריאה יכולה להתבצע בו-זמנית ע"י מעבדים שונים מהעותק המקומי אך איך נשמור על קונסיסטנטיות? –צריך פרוטוקול בעת כתיבה לעותקים –בדומה לניהול מטמונים במערכות מרובות מעבדים עם זיכרון משותף פיזי
מרץ 2002 אלן אזאגורי ©12עמוד סוגי קונסיסטנטיות ניתן להגדיר רמות שונות של קונסיסטנטיות –מחמירה – strict consistency מתנהג כאילו כל התהליכים רצים באותו מעבד וזיכרון –סדרתית – sequential consistency הפעולות של כל מעבד מופיעות לפי הסדר שהן קרו –ועוד... נסיבתית – causal consistency מהו היתרון של רמת קונסיסטנטיות חלשה? –לרוב, ניתן לממש מנגנונים יעילים יותר גורם נוסף חשוב הוא השקיפות למשתמש... –מודל התכנות בבניית יישומים
מרץ 2002 אלן אזאגורי ©13עמוד Strict Consistency קריאה של משתנה משותף x תחזיר את הערך האחרון שנכתב ל-x –נניח ש-x מאותחל בערך 0 זמן p1 w(x)1 p2 r(x)1 זמן p1 w(x)1 p2 r(x)0
מרץ 2002 אלן אזאגורי ©14עמוד Sequential Consistency מעבד רואה את הפעולות של מעבד אחר לפי הסדר שהן קרו בפועל –נניח ש-x ו-y שייכים לאותו דף משותף ומאותחלים בערך 0 –פחות מחמיר מ-strict consistency זמן p1 w(x)1 w(y)1 p2 r(x)0 r(y)1 זמן p1 w(x)1 w(y)1 p2 r(y)1 r(x)0
מרץ 2002 אלן אזאגורי ©15עמוד Entry Consistency הגדרה –כל משתנה משותף משויך למשתנה סנכרון (מנעול) כמה משתנים יכולים להשתייך לאותו מנעול –יש להשתלט על המנעול לפני גישה למשתנים מובטח שכל הכתיבות הקודמות מתבצעות עד סיום ה- acquire כמו כן, הערכים החדשים מעודכנים מקומית עם סיום ה- release
מרץ 2002 אלן אזאגורי ©16עמוד Entry Consistency –גישה למשתנים משותפים מוגנת בתוך קטע קריטי למשל, הגנה ע"י מוניטור –גישה בו זמנית למשתנים שונים אפשרית בקטעים קריטיים שונים בלתי תלויים מימוש פשוט ויעיל
מרץ 2002 אלן אזאגורי ©17עמוד Object-Based לעומת Page-Based מהי היחידה הבסיסית לשיתוף בין תהליכים? –דף – נוח עבור מערכת ההפעלה, אך מנותק מהסמנטיקה של התכנית –אוביקט – מתאים לסמנטיקה של התכנית, אך בד"כ זר למערכת ההפעלה Object-Based –נעשה בסביבת שפות תכנות: Linda, Orca, Java –גישה לאוביקט היא דרך methods (protected, synchronized)
מרץ 2002 אלן אזאגורי ©18עמוד בעיה נפוצה בשיתוף דפים: False Sharing הגדרה –תהליכים ניגשים למשתנים שונים אך המשתנים נמצאים באותו דף משותף הבעיה –אין שיתוף אמיתי אך משלמים את מחיר שמירת הקונסיסטנטיות בדף הפיתרון –הקצאה חכמה של משתנים לדפים בעיתי במערכים –הקטנת גודל הדף –דפים "מדומים" קטנים –overlays –...