Threads Flashcards

1
Q

בספרייה pthread כיצד יוצרים חוט חדש?

A

בעזרת pthread_create

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

מה עושה הפונ’ pthread_self?

A

מחזירה לחוט הקורא את המזהה של עצמו. מזהה זה הוא פנימי לספרייה pthreads ואינו קשור ל-PID של החוט.

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

מה עושה: void pthread_exit(void *retval);

A

מסיימת את פעולת החוט הקורא. ערך הסיום יוחזר לחוט שימתין לסיום חוט זה.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
מה עושה 
int pthread_cancel(pthread_t thread);?
A

מסיימת את ביצוע החוט thread בעזרת סיגנל ייעודי.

ערך סיום הביצוע של החוט שנהרג יהיה PTHREAD_CANCELED.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
מה עושה?
int pthread_join(pthread_t thread, void **thread_return)
A

גורמת לחוט הקורא להמתין לסיום החוט המזוהה ע”י thread.
ניתן להמתין על סיום אותו חוט פעם אחת לכל היותר – ביצוע pthread_join() על אותו חוט יותר מפעם אחת ייכשל.

כל חוט יכול להמתין לסיום כל חוט אחר באותו תהליך.

ההמתנה על סיום החוט משחררת את מידע הניהול של החוט ברמת הספריה pthreads וברמת הגרעין.

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

בעזרת איזו קריאת מערכת הגרעין יוצר חוטים?

A

clone.

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

מהם חוטי גרעין?

A

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

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

האם יש קשרי משפחה בין חוטים?

A

לא

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

לכל חוט, בהיותו תהליך רגיל, יש PCB משלו ו-PID משלו.

עם זאת, המתכנת מצפה שלכל החוטים השייכים לאותו תהליך ניתן יהיה להתייחס דרך PID יחיד – של התהליך המכיל אותם.

איך לינוקס תומכת בכך?

A

לינוקס מאחדת את כל החוטים של תהליך מסוים לקבוצת חוטים (thread group) כדי שאפשר יהיה להתייחס אליהם יחד.

השדה tgid במתאר התהליך מכיל את ה-PID המשותף לכל החוטים באותה קבוצה.
למעשה, זהו ערך ה-PID של החוט הראשון (הראשי) של התהליך.
חוטים חדשים יקבלו ערך PID חדש וערך TGID זהה לחוט הראשון.
קריאת המערכת getpid() מחזירה למעשה את currenttgid.

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

מה עושה קריאת המערכת clone?

A

יוצרת תהליך בן המשתף עם תהליך האב משאבים ונתונים לפי בחירה.

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

איזו מחסנית משותפת כאשר קוראים לclone?

A

משתמש. clone נקראת מתהליך משתמש ואסור לתת לה גישה למחסנית הגרעין.

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

מה ההבדל בין mutex_lock ל-mutex_trylock?

A

trylock לא חוסמת אם המנעול כבר תפוס היא פשוט נכשלת.

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