(۱۰ بهمن ۱۳۹۲ ۰۱:۵۸ ب.ظ)sonia1990 نوشته شده توسط: نه تا اونجایی که من می دونم سمافور وقفه فرق داره
تست کامپیوتر آزاد ۸۹ پاسخی که مقسمی داده:
می تونیم روتین پاسخگویی وقفه رو یک نخ یا پردازش در نظر بگیریم که از یک سمافور با مقدار اولیه صفر استفاده می کند. به این صورت که این روتین وقفه روی سمافر wait می کند. چون مقدار اولیه صفر است این پردازه بلوکه می شود. بعد از اینکه وقفه اتفاق بیافتد این مقدار صفر تبدیل به یک می شود پس یعنی روتین وقفه که رو این سمافور wait کرده بود بیدار می شود و به وقف رسیدگی می کند.
تست IT آزاد ۹۰
می خواهیم هرگاه سرویس روتین وقفه ای اجرا می شود تقاضاهای دیگر برای آن وقفه منتظر بمانند.برای این کار از سمافوری با مقدار اولیه یک برای هر وقفه استفاده می کنیم و این موضوع تفاوتی بین وقفه های سخت افزاری و نرم افزاری ندارد.
هردوتا سوالتون سوال دانشگاه آزاده!
ببینید چیزی که من فکر میکنم اینه که کلا منظورشون اینه شما یه ناحیه بحرانی داری میخوای نذاری که همزمان دو تا فرآیند دسترسی داشته باشه!
حالا توی سوال اول و سوال دوم که توضیحشو گذاشتی دوتاشون دارن دقیقا یه حرف رو میزنن!سوال اول حالتی رو داره میگه که یه فرایند توی ناحیه بحرانیه یعنی اومده مقدار سمافور که ۱ بوده رو صفر کرده بعد فرآیند دوم میاد به ناحیه بحرانی دسترسی داشته باشه حالا مقدار سمافور صفر هستش نمیتونه منتظر بمونه بلوکه میشه تا زمانی که اون اولیه که توی ناحیه بحرانی هستش خارج بشه و مقدار سمافور دوباره ۱ بشه
حالا سوال دوم حالتی رو در نظر میگیره که هنوز هیچ فرآیندی توی ناحیه بحرانی وجود نداره یعنی مقدار سمافور ۱ هستش فرایند اول میاد اونو صفر میکنه و وارد بحرانی میشه و بقیه اش هم میشه همون توضیحات قبلی
اینکه گفتم مقدار سمافور میتونه هرعددی باشه هم واسه اینه که تست های زیادی هست که فرض کرده مثلا فلان سمافور y با مقدار اولیه ۳ رو داریم و .... این مدل تست ها توی کتاب مقسمی هست
مقدار سمافور منفی هم میتونه باشه که برابر تعداد فرایند هایی هستش که منتظر ناحیه بحرانی هستن یعنی به اصطلاح wait کردن و توی صف سمافور موندن