תרגול 8 הרצאה 6.7 סנכרון Flashcards

1
Q

מה מבטיח
mutex
condition varibales

A

mutex
אטומיות - כשנבצע קטע קוד קריטי לא יהיה אף חוט אחר שיריץ את אותו הקוד קריטי עד שנסיים
לא מביטחים סדר, יכול להיות שנתחיל את הקוד ויהיה 100 החלפות הקשר עד שנסיים

condition varibales
מבטיחים סדר

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is the futex system?

A

It is by the kernel to implement the primitive mutex and conditional variables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

‏מהו תור מקבילי
ואיך צריך להגן עליו בעבודה עם חוטים

A

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

צריך כם להגן עם מנעולים וגם להבטיח סדר
מנעולים כדי שלא יהיו 2 חוטים שיכניסו או יוציאו בו זמנית

וסדר כדי להבטיח שחוט שרוצה להוציא איבר יעשה זאת רק אחרי שחוט אחר הכניס איבר והתור לא ריק

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

למי מיועד כל תהליכי הסנכון שאנחנו מדברים עליהם
חוטים או תהליכים

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

האם אפשר לממש מנעולים בעזרת חומרה או בעזרת תוכנה

A

עקרונית אפשר בעזרת תכונה אבל זה מאוד מסובך ומועד לטעויות

לכן מסתמכים על החומרה - המעבדים היום כולם תומכנים במנגנונים כאלה

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

כמו שהגרין מבטל חריגות בזמן נעליה
מה המשתמש יעשה?

A

יבטל סיגנלים

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

איזה פקודות מעבד תומכות באטומיות כדי לממש מנעולים

A

xchg - מחלפיה שתי משתנים

cas - compere and swap מעבירים לה 2 ערכים אם הם שווים אז שמים בראשון את הערך החדש טוב לIF

tas - test and set - בודק משתנה ושם בוא 1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

מתי משתמשים בspin ומתי בblock

A

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

אחרת נחסום וניתן להקשר להתחלף

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

מה הערך של סמפור אומר עליו

A

אם הערך חיובי
זה סופר את כמות המשאבים שיש לנו
לדוגמה כמות האיברים בתור

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

הסבר על הממשק עם סמפורים באופן תיאורתי

A

s = semaphore

wait(s)
value – כלומר מוריד אחד מהמשאבים
אם הערך נהיה שלילי נכנסים להמתנה
אם עדיין חיובי אז בעצם קיבלנו משאב ולא נכנס להמתנה

signal(s)
value ++
אם ההוספה עכשיו הפכה את הערך ל0 או שנשאר שלילי זה אומר שיש מישהו שמחכה מעירים אחד מהממתינים ובעצם נותנים לו את המשאב

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

הסבר על הממשק של סמפורים מבחינת פונק

A

סמפור הוא אובייקט של הגרעין
מדברים איתו ב
sem_wait() - wait
sem_post() - singal
sem_close()….
sem_getvalue()
.
.
.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

מה זה סמפור עם ערך מקסימלי 1

A

זה הופך להיות ספיןלוק
בעקרון - לא במציאות

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

מה ההבדל בין ספיןלוק לסמפור מבחינת הסיבוך שלהם

A

ספיןלוק הוא הרבה יותר פשוט
הוא חלק מהמימוש של הסמפור

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

האם שגרת הטיפול תוותר אי פעם כל המעבד
לדוגמה wait

A

לא

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

האם פסיקת חומרה יכולה לחתוך
טיפול בחריגה
קריאת מערכת
פסיקת חומרת אחרת?

A

כן היא תחתוך הכל

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

האם יכול להיות ששגרת הטיפול בפסיקת חומרה תייצר חריגה או תקרא לקריאת מערכת

A

רק במקרה אחד וזה
Page fault

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

מה ההבדל בין פסיקת תוכנה לחומרה
תן דוגמה לכל אחד

A

פסיקת תוכנה (חריגה)
נוצרת עי המשתמש לדוגמה על חלוקה ב0

פסיקת חומרה
היא אסינכרונית
ומגיעה מהתקן חומרה חיצוני
כמו פסיקת שעון

18
Q

מה זה מסלול בקרה בגרעין

A

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

19
Q

איזה מסלולים יכולים להחתך במערכת מרובת מעבדים

A

כל המסלולים יכולים להחתך עם כולם
אם הגרעין ניתן להפקעה

20
Q

במערכת מעבד יחיד מי יכול לחתוך את הבאים

קריאת מערכת או חריגה

פסיקת חומרה

A

קריאת מערכת או חריגה
כל מסלול בקרה אחר יכול לחתוך

פסיקת חומרה
יכולה להחתך רק עי פסיקת חומרה אחרת

21
Q

למעט חריגת דף
מה אפשר להגיד שקריאת מערכת וחריגות לעולם לא עושים

A

לעולם לא יגרמו לעוד חריגה

22
Q

מה פסיקת חומרה לעולם לא תעשה

A

לא תקרא לקריאת מערכת

חוץ
מחריגת דף לא תגרום לעוד חריגה

23
Q

איך להגן על מבנה הנתונים שלי מפני חיתוכים של מסלולי בקרה
במערכת חד מעבדית וגם במרובה

A

במעבד יחיד

אם לא נגיש לפסיקות חומרה
ונגיש לחריגות או קריאות מערכת
מספיק מנעל סמפור
בשני המעבדים

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

ואילו במעבד מרובה מעבדים צריך גם להשתמש במנעול spinlock

24
Q

‏מה הבעיה בשימוש במנעולים בטיפול פסיקות חומרה במעבד יחיד

A

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

25
Q

מה זה אומר נטרול פסיקות מקומיות
ואיך זה מתבצע
ומה חשוב לעשות ולמה

A

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

מכבים את דגל if ברגיסטר הדגלים rflags
If==00
חשוב לגבות את תוכן הדגל לפני הקטע הקריטי ולטעון אותו בחזרה לאחריו
יכול להיות שלא היה דלוק לפני

זה פותר בעיות במקרים של טיפול מקונן בפסיקות

26
Q

מהי הפונקציה
schedule_tick()

A

שגרת הטיפול בפסיקת שעון

27
Q

דוגמה למבנה נתונים שנגיש גם עי קריאות מערכת וגם מפסיקות חומרה

A

תור הריצה
Runqueue

נגיש לקריאות מערכת כמו wait אשר מוציאה תהליך בן מהתור

ונגיש לפסיקות שעון שיכולות לשנות את המיקום של התהליך בתור

28
Q

למה בשגרת הטיפול במערכת מרובת ליבות נעדיף להשתמש ב
Spinlock
ולא במנעול סמפור

A

Spinlock
משתמש בbusy wait
אשר יעלה יותר במקרים של המתנה מהירה מאוד כי כך נחסכת התקורה של יציאה וכניסה מהמתנה

הוגנות
לא יהיה מצב שתהליך מקבל פסיקת חומרה היא לא מצליחה לתפוס מנעול ואז התהליך יצא להמתנה על משהו שלא הוא גרם

29
Q

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

A

או להשאיר את מבנה הנתונים במצב תקין לפני קריאה ל
Schedule()
צריך גם לוודא בחזרה שלא שונה עי מסלול בקרה אחר
לא אפשרי בדרך כלל

או שימוש בסמפורים כדי להבטיח אטומיות בגישה למבנה הנתונים

30
Q

דוגמה לשימוש בסמפורים להגנת מסנה נתונים שנגיש לקריאות מערכת וחריגות

A

Read()
מחזיקה מנעול לכל קובץ שעליו היא עובדת
אם תהליך ינסה לרכוש את המנעול והוא יהיה כבר נעול זה יכניס אותו לתור ההמתנה

31
Q

האם
Mutex
מבטיח סדר?

A

לא

32
Q

CREW ראשי תיבות
ואיך נקרא בעברית

A

Concurrent readers, exclusive writer

זאת בעיית הקוראים כותבים

33
Q

האם CREW מתייחס רק לקבצים

A

לא
לכל משאב שיש כמה גורמים שרוצים לקרוא ולכתוב אליו

34
Q

מה העקרון המנחה בCERW שהיינו רוצים שיהיה

A

לאפשר להרבה לקרוא תוך כדי
אבל אם מישהו אחד רוצה לכתוב אי אפשר לקרוא או לכתוב איתו ביחד

35
Q

האם סמפורים משתמשים בBUSY WAITING

A

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

36
Q

מהו חוק אמדל

A

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

מחשב בהיתן כמות מסויימת של ליבות את המקסימום שאפשר להגיל

יש נוסחא לזה

37
Q

מה הממשק לניהול משתני תנאי
פונק

A

חלק מpthreads

pthread_cond_init
מאתחל משתנה תנאי
מקבל מצביע למשתנה תנאי
ואת ההגדרות שלו

pthread_cond_wait
מקבל את משתנה התנאי
ומנעול
משחרר את המנעול
ונכנס להמתנה על המשתנה תנאי
בחזרה מהמתנה החוט יעבור להמתין על המנעול שהעביר

משחרר מענול - רוכש את משתנה התנאי - רוכש שוב את המנעול

pthread_cond_signal
ישחרר חוט כלשהו שממתין
לא בהכרח הוגן

pthread_cond_broadcar
ישחרר את כל החוטים הממתינים
אחרי זה ינסו לתפוס את המנעול

pthread_cond_destroy
משחרר את משתנה התנאי
יכשל אם יש עדיין חוטים הממתינים למשתנה תנאי

38
Q

מה קורה אם שלחתי במשתנה תנאי
signal
או
brodcast
ואין מי שממתין

A

ילך לאיבוד

39
Q

במימוש שלנו למשנתנה תנאי מה עלול לקרות בעייתי

איך פותרים

A

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

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

40
Q

איזה גרסה לא חוסמת יש לנסיו קבלת סמפור

A

sem_trywait
אם לא יכול אז לא יחסום ויכשל

41
Q

איך אפשר לקרוא את ערך הסמפור_

A

sem_getvalue

42
Q

במה שונה סמפור בינארי ממנעול

A

בסמפור כל אחד יכול לשלוח סיגנל גם אם לא עשה עליו המתנה לפי

במנעולים רק הרוכש יכול לשחרר