نمایش نتایج 1 تا 5 از 5

نام تاپیک: Critical Section و Swap

  1. #1

    Critical Section و Swap

    سلام
    در کتاب مهندسی نرم افزار نوشته اگر Swap به شکل زیر نوشته بشود مشکل انتظار محدود (Bounded Waiting) را حل نمی کند . می شه بگید مشکل کجاست ؟!


    key := true;
    repeat
    swap(lock,key);
    until key = false;

    Creitical section

    lock := false

  2. #2
    مدیر بخش آواتار whitehat
    تاریخ عضویت
    مهر 1382
    محل زندگی
    شیراز
    پست
    2,175
    فرض کنید پروسه ای در زمانی که قفل را بدست می اورد قبل از شرط until وقفه بخورد ، در این زمان پروسه دیگری می تواند قفل را بگیرد و شرط بر قرار نمی شود و در این صورت این پروسه به مشکل انتظار محدود بر می خورد.
    موفق باشید
    To follow the path:
    Look to the master
    Follow the master
    Walk with the master
    See through the master
    Become the master

  3. #3
    بعد از Swap اگر وقفه بیاد Lock مقدارش true شده , پروسه دوم چطوری می تونه قفل را بگیره؟؟؟!!

  4. #4
    مدیر بخش آواتار whitehat
    تاریخ عضویت
    مهر 1382
    محل زندگی
    شیراز
    پست
    2,175
    درسته حق با شماست منظور شما انتظار مشغول است :) ؛ انتظار مشغول زمانی روی می دهد که یک پروسه مجبور باشد برای گرفتن هر منبعی دائما منبع را چک کند که آزاد باشد ، همانطور که می بینید هر پروسه ای که قفل را بگیرد دیگر پروسه ها می بایست دائما قفل را چک کرده تا بعد از خالی بودن آن وارد ناحیه بحرانی شوند.شما هر گاه به پروسه هایی مانند این برخورد کردید که شامل دوحلقه باشد مطمئن باشید که انتظار مشغول وجود دارد.
    پ.ن: برای از بین بردن این مشکل باید پروسه ای که قفل را گرفته شده می بیند یک Signal ؛ Sleep را فراخوانی کرده و به صف Sleep برود و پروسهای که قفل را آزاد می کند یک Signal؛ Awake را فرخوانی کرده تا اولین پروسه صف Sleep را فراخوانی کند.
    موفق باشید
    To follow the path:
    Look to the master
    Follow the master
    Walk with the master
    See through the master
    Become the master

  5. #5
    اولا ممنون از اینکه جواب می دهید.

    منظورم انتظار مشغول نبود که بخوام با سمافور حلش کنم ,
    در این کتاب دو روش TSL و Swap را پشت هم توضیح داده و یک کد اولیه برای هردو نوشته بعد گفته هر دو این روشها مشکل Bounded Waiting دارند . بعد طرز استفاده درست از TSL را نوشته ولی SWAP را ننوشته و توضیحی هم نداده !!!!!

تاپیک های مشابه

  1. Critical handle
    نوشته شده توسط zoncpp در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 3
    آخرین پست: جمعه 16 آذر 1386, 13:40 عصر
  2. آموزش ناحیه بحرانی ::Critical Section
    نوشته شده توسط Farhad_Mohammadi در بخش مقالات مرتبط با Delphi/Win32
    پاسخ: 2
    آخرین پست: شنبه 05 اسفند 1385, 19:42 عصر
  3. monitors::critical section
    نوشته شده توسط Farhad_Mohammadi در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: چهارشنبه 02 اسفند 1385, 20:27 عصر
  4. هنگام نصب phpbb پیغام Critical Error میدهد چه کنم ؟
    نوشته شده توسط sfm_designer در بخش PHP
    پاسخ: 1
    آخرین پست: شنبه 05 شهریور 1384, 19:09 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •