تفاوت بین Semaphore و Mutex

تفاوت بین Semaphore و Mutex
تفاوت بین Semaphore و Mutex

تصویری: تفاوت بین Semaphore و Mutex

تصویری: تفاوت بین Semaphore و Mutex
تصویری: تلسکوپ چطور کار می‌کنه؟ 2024, جولای
Anonim

Semaphore vs Mutex

Semaphore یک ساختار داده ای است که برای اطمینان از عدم دسترسی همزمان چندین فرآیند به یک منبع مشترک یا یک بخش مهم در محیط های برنامه نویسی موازی استفاده می شود. سمافورها برای جلوگیری از قفل های مرده و شرایط مسابقه استفاده می شوند. Mutex (شیء حذف متقابل) همچنین برای جلوگیری از دسترسی همزمان به یک منبع مشترک توسط چندین فرآیند همزمان استفاده می شود.

سمافور چیست؟

Semaphore یک ساختار داده ای است که برای ارائه حذف متقابل برای بخش های مهم استفاده می شود. سمافورها عمدتاً از دو عملیات به نام‌های انتظار (از لحاظ تاریخی به عنوان P) و سیگنال (از لحاظ تاریخی به عنوان V) پشتیبانی می‌کنند.عملیات انتظار یک فرآیند را تا زمانی که سمافور باز شود مسدود می کند و عملیات سیگنال اجازه می دهد تا فرآیند دیگری (رشته) وارد شود. هر سمافور با صفی از فرآیندهای انتظار همراه است. هنگامی که عملیات انتظار توسط یک نخ فراخوانی می شود، اگر سمافور باز باشد، نخ می تواند ادامه یابد. اگر سمافور هنگام فراخوانی عملیات انتظار توسط یک نخ بسته شود، نخ مسدود شده و باید در صف منتظر بماند. عملیات سیگنال یک سمافور را باز می کند و اگر نخی از قبل در صف منتظر باشد، به آن فرآیند اجازه داده می شود تا ادامه یابد و اگر هیچ رشته ای در صف منتظر نباشد، سیگنال برای رشته های بعدی به خاطر سپرده می شود. دو نوع سمافور به نام سمافورهای موتکس و سمافورهای شمارشی وجود دارد. سمافورهای Mutex یک دسترسی واحد به یک منبع را می‌دهند و سمافورهای شمارش به چندین رشته اجازه می‌دهند به یک منبع (که چندین واحد در دسترس دارد) دسترسی داشته باشند.

Mutex چیست؟

هنگامی که یک برنامه کامپیوتری راه اندازی می شود، یک mutex ایجاد می کند و آن را به یک منبع متصل می کند.هنگامی که منبع توسط یک رشته استفاده می شود، قفل می شود و رشته های دیگر نمی توانند از آن استفاده کنند. اگر تاپیک دیگری بخواهد از همان منبع استفاده کند، باید درخواست بدهد. سپس آن رشته در یک صف قرار می گیرد تا اولین رشته با منبع تمام شود. وقتی اولین رشته با منبع تمام شد، قفل حذف می شود و رشته ای که در صف منتظر است می تواند به منبع دسترسی پیدا کند. اگر چندین رشته در صف منتظر باشند، به صورت چرخشی به آنها دسترسی داده می شود. عملاً، زمانی که mutex دسترسی به یک منبع را بین چندین رشته متناوب می‌کند، از آنجایی که چندین رشته همزمان یک منبع را مصرف می‌کنند، قابل مشاهده خواهد بود. اما در داخل تنها یک رشته در یک زمان معین به منبع دسترسی دارد.

تفاوت Semaphore و Mutex چیست؟

حتی اگر هم سمافورها و هم اشیاء mutex برای دستیابی به حذف متقابل در محیط های برنامه نویسی موازی استفاده می شوند، تفاوت هایی با هم دارند.یک شی mutex تنها به یک رشته اجازه می دهد تا یک منبع یا یک بخش حیاتی را مصرف کند، در حالی که سمافورها تعداد محدودی از دسترسی های همزمان به یک منبع (تحت حداکثر تعداد مجاز) را امکان پذیر می کنند. با اشیاء mutex، رشته‌های دیگری که می‌خواهند به منبع دسترسی پیدا کنند، باید در یک صف منتظر بمانند تا رشته فعلی با استفاده از منبع به پایان برسد.

توصیه شده: