فرایند فرزند: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۶:
هر فرایند می‌تواند به تعداد دلخواهی فرایند فرزند ایجاد کند (تا وقتی که محدودیت سیستمی اجازه دهد). همچنین فرایندهای فرزند هم می‌توانند به نوبه خود فرایندهای فرزند دیگری ایجاد کنند. به این ترتیب یک ساختار [[درخت (ساختار داده)|درختی]] از فرایندها در سیستم ایجاد خواهد شد. اما هر فرایند تنها و تنها می‌تواند ''یک'' فرایند والد داشته باشد. اگر فرایندی، والد نداشته باشد، معمولا به این معنی خواهد بود که فرایند مورد نظر مستقیما توسط [[هسته سیستم‌عامل]] ایجاد شده است. در بیشتر سیستم‌عامل‌ها، از جمله [[لینوکس]] و [[بی‌اس‌دی]]، اولین فرایند در هنگام بوت شدن سیستم توسط هسته بوجود می‌آید و هرگز نابود نمی‌شود. به این فرایند خاص [[اینیت]] می‌گویند که والد همه فرایندهای دیگر است و تمام فرایندها از آن سرچشمه می‌گیرند. فرایندهای بدون والد دیگری هم ممکن است به منظور انجام دادن کارهای خاصی در [[فضای کاربری]] بوجود آیند. اگر والد یک فرایند زودتر از خودش خاتمه یابد، فرایند مورد نظر به یک [[فرایند یتیم]] تبدیل خواهد شد. در صورت پیش آمدن چنین موقعیتی، فرایند اینیت جای والد از بین رفته را خواهد گرفت و به عنوان والد جدید فرایند یتیم اداره آن را بر عهده خواهد گرفت.
 
وقتی که اجرای یک فرایند فرزند خاتمه می‌یابد، دچار وقفه شود یا اینکه پس از وقفه اجرای آن ادامه یابد، یک سیگنال SIGCHLD به والدش ارسال خواهد شد. اگر فرایند والد این سیگنال را اداره نکند، به شکل پیشفرض سیگنال نادیده گرفته خواهد شد. <ref>{{man|7|signal||overview of signals}}</ref>
 
وقتی که فرایند فرزندی، قبل از اینکه والدش [[wait]] را اجرا کند، خاتمه یابد، هسته برخی از اطلاعات مربوط به فرایند فرزند را حفظ می‌کند، از جمله [[وضعیت خروج]] فرایند فرزند خاتمه یافته را. این کار به این منظور صورت می‌گیرد که والد بعدا بتواند wait(){{چر}} را اجرا کند<ref name="man2wait">{{man|2|wait||wait for process to change state}}</ref> و آن اطلاعات حفظ شده را بدست آورد و بر طبق آنها واکنش مناسبی نشان دهد. به خاطر اینکه فرایند فرزند (که خاتمه یافته) هنوز هم از منابع سیستم استفاده می‌کند، اما دیگر در حال اجرا نیست، تبدیل به یک [[فرایند زامبی]] می‌شود. فراخوان سیستمی wait معمولا در روال وقفه‌گیر SIGCHLD اجرا می‌شود.
 
== جستارهای وابسته ==
 
== پیوند به بیرون ==
 
== منابع ==
{{پانویس}}