کنترل همروندی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

کنترل همروندی[۱] در علوم رایانه به خصوص در مبحث برنامه‌نویسی (برنامه‌نویسی همروند، برنامه‌نویسی موازیسیستم‌عامل (رایانش موازیچندپردازها و پایگاه داده تضمین می‌کند که دستورهای همروند منجر به نتایج درست شوند و روش‌هایی که با به‌کارگیری آن‌ها این نتایج درست را در کوتاه‌ترین زمان ممکن به‌دست‌آورد.

کنترل همروندی خوشبینانه[ویرایش]

کنترل همروندی خوشبینانه از سه مرحله تشکیل شده است.

۱. خواندن[ویرایش]

فرض کنید که فردی در خانه نشسته است و می‌خواهد یک صفحه از ویکی‌پدیا را ویرایش کند. فرد مزبور ابتدا بر دکمه ویرایش می‌فشارد و تغییرات مورد نظر خود را انجام می‌دهد. این تغییرات در کاشه رایانه قرار دارد. سپس با فشردن دکمه «ذخیره شود» متن ویرایش به سرور ویکی‌پدیا فرستاده می‌شود.

۲. تأیید[ویرایش]

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

۳. نوشتن[ویرایش]

اگر درگیری وجود نداشت تراکنش انجام می‌شود.

نمونه این نوع کنترل نرم‌افزار مدیاویکی است. الگوریتم کنترل آن در این‌جا توصیف شده است. نمونه دیگر باگزیلا است (این‌جا).

کنترل همروندی بدبینانه[ویرایش]

در این روش به وسیله قفل گذاری جلوی هرگونه همروندی گرفته می‌شود. تا زمانیکه یک دستور درحال اجراست جلوی اجرای دستورهایی که ممکن است مانع اجرای صحیح دستور نخست شوند گرفته می‌شود.

پروتوکل‌ها[ویرایش]

۱. قفل‌گذاری[ویرایش]

قفل‌گذاری روش بدبینانه کنترل همروندی است. بقیه روش‌ها خوشبینانه هستند. قفل امتیاز دستیابی به یک واحد داده است که توسط سیستم قفل گذاری به یک تراکنش داده می‌شود یا از او پس گرفته می‌شود.

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

روش‌های قفل‌گذاری[ویرایش]

قفل انحصاری Exclusive Lock اگر تراکنش T قفل انحصاری را برروی یک Object قرار دهد هیچ‌کدام از تراکنش‌های دیگرمانند t’ نمی‌توانند هیچ قفلی را برروی آن قرار دهند تا زمانی که Tقفلش را آزاد کند.

قفل اشتراکی Shared Lock اگر تراکنشT قفل اشتراکی برروی Objectقرار دهد آن وقت تراکنش‌های دیگر مانند

۲. برچسب زمانی[ویرایش]

۳. تعیین اعتبار[ویرایش]

۴. دانه‌بندی چندگانه[ویرایش]

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

علاوه بر قفل انحصاری و اشتراکی سه نوع قفل دیگر هم در دانه بندی چند گانه وچود دارند .( Intention-shared(IS. نشان می‌دهد که در سطوح پایین‌تر قفل اشتراکی به صورت صریح انجام شده است. Intention-exclusive. نشان می‌دهد که در سطوح پایین‌تر قفل اشتراکی یا انحصاری به صورت صریح انجام شده است. Shared and Intention exclusive. زیردرخت با ریشه نود بصورت صریح در مد اشتراکی قفل شده است وقفل صریح در سطوح پایین‌تر در مد صریح رخ داده است قفل‌های intention به نود اجازه می‌دهند که در مد انحصاری یا اشتراکی بدون نیاز به چک تمام زیر درخت زیر آن قفل شوند.

۵. نسخه‌سازی[ویرایش]

مسئله بن‌بست[ویرایش]

کابردها[ویرایش]

کنترل همروندی در پایگاه‌های داده[ویرایش]

کنترل همروندی در سیستم‌های عامل[ویرایش]

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

پانویس[ویرایش]

  1. کنترل همزمانی هم گفته‌اند

منابع[ویرایش]