ההבדל בין מזלג () ל- vfork ()

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 2 אַפּרִיל 2021
תאריך עדכון: 10 מאי 2024
Anonim
ההבדל בין מזלג () ל- vfork () - טכנולוגיה
ההבדל בין מזלג () ל- vfork () - טכנולוגיה

תוֹכֶן


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

בואו ונמצא כמה הבדלים בין מזלג () ל- vfork () בעזרת תרשים השוואה המוצג להלן.

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

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


הגדרת מזלג ()

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

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

חלק מהילדים עוברים תהליך לאחר יצירתם מיד מתקשר exec (). שיחת המערכת של ה- exec () מחליף את התהליך עם התוכנית שצוינה בפרמטר שלה. ואז מרחב הכתובות הנפרד של תהליך הילד אינו מועיל. האלטרנטיבה האחת כאן היא העתקה-על-כתיבה.

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


הגדרה של vfork ()

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

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

מכיוון ששימוש ב- vfork () אינו יוצר רווחי כתובות נפרדים לתהליכי ילד והורה. מכאן, בטח שכן מיושם איפה התהליך הילד מתקשר exec () מיד לאחר יצירתו. אז לא יהיה בזבוז של שטח הכתובות, וזה יעיל דרך ליצור תהליך. vfork לא משתמש העתקה-על-כתיבה.

  1. ההבדל העיקרי בין מזלג ל- vfork הוא שתהליך הילד נוצר על ידי מזלג יש שטח זיכרון נפרד מתהליך ההורה. עם זאת, תהליך הילד שנוצר על ידי vfork מערכת שיחה משתפת את אותו שטח כתובת של תהליך האב שלה.
  2. תהליך הילד שנוצר באמצעות מזלג לבצע במקביל עם תהליך ההורה. מצד שני, תהליך ילד נוצר באמצעות vfork להשעות ביצוע תהליך האב עד לביצועו.
  3. מכיוון שמרחב הזיכרון של תהליך הורה וילד הוא שינוי נפרד שנעשה על ידי אחד מהתהליכים אינו משפיע על דפי האחר. עם זאת, כאשר תהליך ההורה והילד חולקים את אותו שינוי כתובת זיכרון שנעשה על ידי כל תהליך שמשקף במרחב הכתובות.
  4. מזלג השיחה של המערכת () משתמש העתקה-על-כתיבה כחלופה, המאפשרים לעבד ילד והורה לחלוק את אותו כתובת כתובת עד שאחד מהם ישנה את הדפים. מצד שני, ה- vfork אינו משתמש ב- copy-on-write.

סיכום:

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