Paul R. Wilson & Mark S. Johnstone University of Austine Texas 1993 Real Time Non-Copying GC מוגש ע ” י רם נתנאל.

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
לבופר המיקמק הכי יפה וחתיך ! הכנתי משהו בשבילך כדי שתיסלח לי ! קדימה !
מטרות בבניית התנורמטרות בבניית התנור שהתנור יהיה כמה שיותר קרוב לעיגול, אך שיהיה נוח לבנות אותו. לא נאבד את החום בפינות התנור לא לאבד חום בדפנות התנור.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 חישוב ואופטימיזציה של שאילתות חלק 2 Query Evaluation and Optimization Part 2.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
Questions are the Answer Penick&all H ISTORY R ELATIOINSHIPS A PPLICATION S PECULATION E XPLANATION.
מודל ONLINE לומדמורה 1. כל ניתן לחישוב בזמן פולינומיאלי 2. אחרי מספר פולינומיאלי של טעיות ( ) הלומד לא טועה ז"א שווה ל- Littlestone 1988.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
מבוא כללי למדעי המחשב רשימות מקושרות
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
גרפים - Graphs גרף G(V,E) מורכב מקבוצת צמתים V וקבוצת קשתות E.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
מודל הלמידה מדוגמאות Learning from Examples קלט: אוסף של דוגמאות פלט: קונסיסטנטי עם פונקציה f ב- C ז"א קונסיסטנטי עם S ז"א מודל הלמידה מדוגמאות Learning.
עקרון ההכלה וההדחה.
יחס סדר חלקי.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Data Structures, CS, TAU, RB-Tree 1 עץ אדום-שחור - עץ חיפוש בינארי - בכל צומת ביט אינפורמציה נוסף - צבע « עץ “ כמעט מאוזן ” « (O(log n במקרה גרוע ביותר.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
עצים בינאריים - תזכורת דרגת צומת שורש עלה צומת פנימי מרחק בין 2 צמתים
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
(C) סיון טל גילוי מידע וזיהוי תבניות תרגול מס. 9 גילוי מידע וזיהוי תבניות תרגול מס. 9 דחיסת נתונים מהו קידוד תכונות של קידודים אי - שוויון קרפט.
בקרה תומר באום ב"הב"ה. סוגי בקרה חוג פתוח Open-loop control : אנו מכוונים את הרובוט למצב הבא שהוא אמור להיות בו לפי מודל מסוים, כמו שעשינו בקינמטיקה הפוכה.
מבוא למדעי המחשב תרגול 12 – הקצאת זיכרון דינאמית שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא לחשבונאות ניהולית. היחס בין חשבונאות פיננסית לניהולית פיננסיתניהולית פנימיים מותאמים לארגון בחלקים מסוימים יכול להיות : תחזית כמותי או איכותי מוניטרי.
Kashrut is a mitzvah in the Torah and has been passed on through generations. Kashrut is a chok. this means that we don’t know why we do it but we.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
Data Structures Hanoch Levi and Uri Zwick March 2011 Lecture 3 Dynamic Sets / Dictionaries Binary Search Trees.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
מבוא למדעי המחשב סיבוכיות.
חיפוש לוקלי Local Search.
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
בעיות נוספות ב-NPC.
הנעה חשמלית.
מערכים של מצביעים הקצאה דינאמית
תוכנה 1 תרגול 13 – סיכום.
A* and AO* Search Algorithm
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

Paul R. Wilson & Mark S. Johnstone University of Austine Texas 1993 Real Time Non-Copying GC מוגש ע ” י רם נתנאל

הקדמה עד היום לא שולב בהצלחה Garbage Collection במערכות Real Time. הדבר גרם לכך ששפות שמשתמשות ב GC לא חדרו לתחומים רבים בהם שילוב בתוך חומרה ומערכות הפעלה ובקרה של מכשירים.

דרישות מ GC בסביבת RT n הבטחת יחס ביצועים קבוע לכל התכנית n הבטחת יחס ביצועים קבוע באופן נקודתי בתכנית n OverHead קטן ככל האפשר

תנאים הכרחיים GC שפועל בסביבת RT חייב להיות אינקרימנטלי – מסוגל לבצע פעולות קטנות בזמן ריצתה של התכנית במקום לעצור את התכנית לזמן ארוך בכל פעם. ( הבטחת יחס ביצועים לטווח קצר ) לא מספיק למצוא חסם על אורך פעולות העדכון, צריך למצוא חסם על התדירות שבה יש עדכונים. ( הבטחת יחס ביצועים גלובלית ) בכל זמן שהוא מוקצה אחוז מסוים מפעולת ה CPU לטובת התכנית. ( הבטחת יחס ביצועים נקודתית )

מסקנה לכן עדיף שה Collector יהיה תכנית שרצה במקביל ל Mutator ואוספת זיכרון מבלי להפריע לריצה השוטפת של ה Mutator.

Write Barrier לעומת Read Barrier Read Barrier בכל פעם שה Mutator ניגש לקריאה של פוינטר יתבצע קוד נוסף שידאג לכך שהמידע שה Mutator עומד לקרוא הוא עדכני. למשל להפנות את ה Mutator למקום אחר. Write Barrier בכל פעם שה Mutator מנסה לשנות את אחד הפוינטרים בתכנית, יתבצע קוד נוסף שידאג לכך שה Collector יודע על השנוי ונערך בהתאם.

Read Barrier בהפעלת Read Barrier יש בעצם סנכרון בין התמונה שרואה ה Mutator לבין פעולות ה Collector בכך שבכל פעם שמה שרואה ה Mutator אינו עקבי עם פעולות ה Collector ה Mutator ישנה את תמונת העולם שלו. ה Collector מבחינתו מתנהג בדיוק כמו שה Mutator נעצר לצורך ה GC.

Write Barrier בהפעלת Write Barrier ה Mutator הוא שקובע וה Collector מעדכן את תמונת העולם שלו לפי פעולות ה Mutator כך שיתכן שה Collector יאלץ לבצע יותר פעולות מאשר יהי מבצע אילו ש Mutator היה עוצר בזמן ה GC.

האחריות על הסנכרון חייבת להיות של ה Mutator כי לא ניתן לצפות את פעולותיו.

Read Barrier תכונות : n עלות גבוהה. n לא צפוי – יתכן שבפרוש ביטוי אחד יש שימוש בהרבה ערכי פוינטרים ולכן קשה לקבוע עלות ממוצעת של OverHead.

Write Barrier תכונות : n עלות נמוכה. n יותר צפוי – קיים יחס ביצועים טוב יותר גם ב Worst Case. לכן מתאים יותר לסביבת RT. n ה Mutator אינו תלוי בעבודה שעשה עד עכשיו ה Collector ולכן ה Collector לא יכול לעקב את התקדמות התכנית. Write Barrier מתאים יותר לאפליקציות Real Time כי לא ממש חשוב כמה עבודה יעשה ה Collector כל עוד אינו מפריע לפעולת ה Mutator.

אלגוריתם Baker האלגוריתם מבצע Copying Garbage Collection בצורה אינקרימנטלית. ה Mutator וה Collector מדברים ביניהם ע " י העברת הודעות באופן שוטף. יש שימוש ב Read Barrier לשם שמירה על עקביות של מה שרואה ה Mutator לעומת גרף האובייקטים.

בעיות : העברת מידע בין ה Mutator וה Collector היא בעקרון בעיה במערכות RT כי קיימת הפרעה לריצת התכנית. אם ה MailBox נבדקת בתדירות מסוימת ע " י ה Mutator העלות גדולה. אם משתמשים ב Interrupt יש הפרעה לריצת ה Mutator שעלולה להגיע ברגעים קריטיים. יש שימוש ב Read Barrier אשר אמנם כל עדכון בו נעדה מהר יחסית אבל יתכן שעדכונים נעשים בתדירות גבוהה וגורמים לתכנית לא להספיק למועד הסיום.

לדוגמא : ריצה על רשימה מקושרת for i=1 to list.size p=p.next end אם הרשימה עדיין לא הועתקה ע ” י ה Collector היא תועתק איבר איבר בגלל ה Read Barrier. אמנם העתקת איבר היא לא ארוכה אבל סך כל העבודה המצטברת תגרום לכך שהתכנית לא תסיים הזמן.

תגובת האלגוריתם : בכל צעד ה Mutator יורה ל Collector להביא את האיבר הבא ברשימה. למרות שביצוע כל צעד לוקח זמן קטן לאורך כל הרימה של התכנית ה Collector יעקב מאד את התכנית ויתכן שלא נעמוד ב deadline.

הרחבות : קיימים אלגוריתמים שניסו לשפר את האלגוריתם של Baker ע " י פעולות ברמה של Page שלם ואיטרציות יותר גדולות ופחות תכופות. התוצאה היא שהתנהגות התכנית עוד פחות ניתנת לצפייה מראש.

הגישה לפתרון אנחנו לא נבטיח שבכל מסלול אפשרי בתכנית תמיד סך העבודה לא יצטבר ליותר מאשר חסם קבוע, אבל ננסה להבטיח שהעדכונים לא יקרו בתדירות גבוהה מידי. הבטחה כזו דורשת קשר פחות הדוק בין ה Mutator לבין ה Collector. נשתמש ב Write Barrier בלבד, ב Garbage Collection שאינו מבצע Copying.

יישום ניתן לצבוע את האובייקטים בשלושה צבעים : שחור – אובייקט אשר סרקנו אותו ואת כל הבנים שלו. אפור – אובייקט אשר הגענו אליו בסריקה אבל לא בהכרח עברנו על כל שכניו. לבן – אובייקט שעדיין לא נסרק. אנו צריכים לגרום לכך שבכל עדכון של פוינטרים ע " י ה Mutator לא נגיע למצב שבו אובייקט שחור מצביע על אובייקט לבן. אחרת יתכן וזה המצביע היחידי אל האובייקט הלבן ואז יישאר Dangling Pointer

לדוגמא : מתחיל במצב חוקי : כל האובייקטים הלבנים נגישים

לדוגמא : עדיין מצב חוקי

לדוגמא : קיים אובייקט אשר לא יסרק לעולם

דרכים לפתרון n SnapShot at beginning – אף פוינטר לא יעלם. בכל פעם שפוינטר ישנה ערך ניצור משתנה דמי שיצביע על הערך הישן. n Incremental Update – בכל פעם שישתנה פוינטר שנמצא באובייקט שחור נודיע על כך ל Collector כדי שיסרוק את האובייקט החדש או ישנה את הצבע לאפור.

SnapShot-at-Beginning השיטה מבטיחה : בכל פעם שנשבר מסלול לאובייקט נוצר מסלול חדש לאובייקט. לכן לא יתכן שקיים אובייקט אשר ה Mutator יכול להגיע אליו אך ה Collector לא.

בעיות אופטימיזציה : n קשה לבנות טיפול שונה במשתנים על המחסנית n לא ניתן להשתמש במידע על Liveness של משתנים. n קשה לשילוב עם טכניקות של Generational ו hierarchical Garbage Collection. n גם אם המתכנת שיחרר את הזיכרון קשה להשתמש במידע הזה.

Incremental Update שומר על התכונה המקומית שלא יווצר מצב שבו יש פוינטר מאובייקט שחור לאובייקט לבן. אם ה Mutator יוצר פוינטר כזה אז נודיע על כך ל Collector כדי שיהפוך אחד מהם לאפור.

יתרונות אופטימיזציה n פחות קונסרבטיבי - שנוי של פוינטר מאובייקט לבן לא מפריע. n לא ניגע במחסנית עד סוף הסריקה - עוזר להפטר מהרבה Floating Garbage. n קל יותר להסבה ל Generational GC. n ניתן לשלב מידע מהמתכנת ( כגון שחרור זכרון )

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

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

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

ישום האלגוריתם יושם בשפת ++C ע ” י Operator Overloading ונבחן על מספר תכניות. זמני ריצה הראו פגיעה של % 10-90, כנראה בגלל חוסר תמיכה מהקומפיילר.

לסיכום : ראינו Garbage Collector שפועל בסביבת Real Time, ניתן לשילוב במספר טכניקות של GC, ומסוגל בפועל להבטיח יחס ביצועים קבוע לאורך ריצת התכנית. האלגוריתם כולל Write Barrier בלבד ולכן הוא יחסית זול למימוש, ואינו דורש חומרה מיוחדת או תמיכה מיוחדת ממערכת ההפעלה.

תכניות לעתיד n להפעיל בצורה מבוזרת n לשלב Generational GC n להפעיל מספר Collectors בו זמנית. n לשכלל את ניהול הזכרון להתמודד עם פרגמנטציה.