دستور fork در لینوکس

در حالت معمول هنگامی که شما یک برنامه در زبانی مانند سی می نویسید سیستم عامل کد شما را خط به خط اجرا می کند و اجرای بخش های بعدی وابسته به اجرا شدن قسمت های قبلی است. اما در برخی شرایط شما نیاز دارید تا برنامه ای بنویسید تا چند عمل را به صورت موازی انجام دهد. یک مثال معمول می تواند یک سرور وب باشد. هنگامی که یک کلاینت یک صفحه را از یک سرور وب درخواست می کند اگر سرور پاسخ آن کلاینت را بدهد و سپس به پاسخ کلاینت دیگری گوش دهد ، در آن فاصله زمانی بسیاری از درخواست ها به سرور بی پاسخ مانده و شکست می خورند. بنابراین اگر سرور بتواند هر درخواستی که دریافت می کند را به شکل موازی با درخواست های دیگر پاسخ دهد می تواند بسیار کارا تر عمل کند و در یک زمان به تعداد بیشتری کلاینت سرویس دهی کند.
کاربرد تابع fork دقیقا همین موضوع می باشد. هنگامی که برنامه شما این تابع را صدا کند سیستم عامل برنامه شما را که در قالب یک پروسه اجرا می شود به دو پروسه دقیقا همانند هم تبدیل می کند که به طور موازی اجرا می شوند. ( یک چنگال را تصور کنید! ) خروجی تابع  یا صفر است و یا یک عدد. برنامه شما می تواند با بررسی خروجی این تابع متوجه شود که الان کدام پروسه می باشد و با توجه به این موضوع به کاری متفاوت بپردازد. مثلا پروسه سرور وقتی یک درخواست از یک کلاینت دریافت می کند تابع fork را صدا می کند. حال برنامه شما در دو پروسه اجرا می شود. اکنون با بررسی مقدار خروجی تابع fork  میتوان فهمید که پروسه جاری پروسه فرزند است یا والد . اگر پروسه والد بود که یعنی همان سرور است و دوباره به درخواست های کلاینت ها پاسخ می دهد. اما اگر پروسه فرزند بود حال ازکلاینت اطلاعات بیشتری می گیرد و صفحه وب مورد نظر را برای کلاینت می فرستد.
به این ترتیب یک برنامه می تواند در تعداد زیادی نسخه به شکل موازی اجرا شود که هرکدام کار متفاوتی را انجام می دهند.

برای حمایت از نویسنده روی عکس تبلیغاتی زیر کلیک کنید



نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:








تاریخ: چهار شنبه 3 آبان 1391برچسب:,
ارسال توسط ارشیو

آرشیو مطالب
پيوند هاي روزانه
امکانات جانبی

نام :
وب :
پیام :
2+2=:
(Refresh)

خبرنامه وب سایت:





آمار وب سایت:  

بازدید امروز : 1
بازدید دیروز : 1
بازدید هفته : 50
بازدید ماه : 95
بازدید کل : 79257
تعداد مطالب : 6
تعداد نظرات : 1
تعداد آنلاین : 1