process and thread

hookipa

New member
process and thread

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

desertboy

New member
יש הרבה הבדלים

בין פרוסס לתרד. יש גם כל מיני סוגים של תרדים וכל מערכת הפעלה מייצגת אותם באופן שונה (קרנל תרד , user space threads , ושלוב בינהם ברמות שונות) כך זה גם לגבי תהליכים (אבל הבדלים פחותים). בגדול . תרד דורש פחות משאבים מהמערכת בוינדוס NT משתמשים בקרנל תרד. לכן כאשר תרד נגש ל IO תהליך יכול להמשיך לרוץ. כדי להריץ תהליך חדש מתוכנית רצה תשתמש ב createProcess.
 

hookipa

New member
ןמהי המשמעות של הוספת

פרוסס לתוכנית כאשר יש לי את הפרוסס הראשי של התוכנית שרצה ?
 

selalerer

New member
זה כמו שתוכנית יוצרת עוד תוכנית.

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

desertboy

New member
אי אפשר להוסיף

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

neko

New member
נצלו"ש לגבי PROCESS\THREAD

עברנו ב"מערכות הפעלה" על ההבדל בין KERNEL LEVEL THREADS ל-USER LEVEL THREADS, ואת זה הבנתי. אבל כשעברתי על מבחנים משנים קודמות, נתקלתי במושג "USER LEVEL PROCESSES". יש למישהו מושג מה זה? יכול להיות שהם סתם התבלבלו?
 

vinney

Well-known member
באיזה הקשר?

על פניו נראה שהם סתם התבלבלו...
 

neko

New member
השאלה:

Which of the following events is unlikely to happen by user level processes? a. A running process is interfered and another is being run instead b. A resource is taken away from a process while the process still needs it c. Process in the ready queue is terminated d. The ready queue is not empty, but no process allowed to run​
ללא שום קשר לביטוי התמוה "USER LEVEL PROCESS", נראה לי ש-C זו התשובה הנכונה, כי כדי שתוכנית תעצור טבעית, היא חייבת להיות במצב "RUNNING", וכדי שמישהו יפסיק אותה בכוח (למשל אם יש DEADLOCK), היא חייבת להיות במצב "BLOCKED". אבל עדיין מטריד אותי הביטוי המוזר הזה.
 

vinney

Well-known member
הבנתי...

אני מסכים איתך לגבי התשובה, אבל מההקשר לדעתי הכוונה לuser level process במובן של not kernel level processes. הרי גם לkernel יש תהליכים (יותר מאחד), ושם התשובות בהחלט יכולות להיות שונות.
 
למעלה