صفحه 1:
صفحه 2:
صفحه 3:
در فصل 4 مدلی از سیستم را اجرا کردیم که شامل تعدادی از
فرآیندهای ترتیبی همکار بوده است که همگی به طور
ناهماهنگ اجرا می شدند و احتمالا داده های مشترکی
داشتند. این مدل را با استفاده از الگوی میانگیر (بافر)
محدود , به عنوان نمایشی از سیستم های عامل » توضیح
داریم.
Joely حاقظه مفترکپراق مسئله: باقن محدود در انظیر مین
گیریم : گفتیم که حداکثر یک سه ۵۵ قلم داده می تواند
به طور همزمان در بافر وجود داشته باشد . برای برطرف
گردن: این at از نک xe orld sil al ye oni sled اكنيم
که دارای مقدار است با ورود هر قلم شمارنده اضافه و با
صفحه 4:
صفحه 5:
این دو روال به طور جداگانه درست عمل می کنند اما به طور
همزمان ممکن است به درستی عمل نکنند مثلا اگر ده و
فرآیندهای تولیدکننده و مصرف کننده دستورات "سیون++۲ و
*ییون--" را همزمان اجرا کنند مقدار جوم ممکن است 4
5 6 باشد ولی مقدار درست 5 و وقتی تولید می شود که هر
کدام به طور جداگانه عمل کنند.
#*علت رسیدن به حالت نادرست دسترسی همزمان فرآیندها به
داده ی مشترک یوم است.
صفحه 6:
چنین وضعیتی که چندین فرآیند به طور همزمان به داده ای
دسترسی دارند و نتیجه اجرا به ترتیب دستیابی فرآیندها
بستگی دارد » 029 ۲) می گوییم.
Rue حل مقابله با لین ol,
sl, مقابله با حالت مسابقه باید تضمین شود که در هر زمان
تنها یک فرآیند به متغیر جح دسترسی داشته باشد که
برای چنین کاری نیاز به هماهنگی فرآیندهاست.
صفحه 7:
2-7 مسئله ناحیه بحرانی
سیستمی با » فرآیند [ 4 , ... , 06 , ۵ ) را در نظر بگیرید. هر
فرآیند بخشی کد به نام ناحیه بحرانی (-۵ )0۳٩ دارد که
فرآیند ممکن است در آن متغیرهای مشترک را تغییر دهد ,
جدولی را بروز کند , فایلی را بنویسد , و ...
۷ ویژگی مهم این است هنگامیکه یک فرآیند در حال اجرای ناحیه
ی بحرانی خودش است , هیچ فرآیند دیگری نباید اجازه داشته
باشد ناحیه بحرانی خودش را اجرا کند. بنابراین اجرای ناحیه ی
بحرانی توسط فرآیندها , از نظر زمانی انحصار متقابل (بلسیه
حصامج) است.
صفحه 8:
مسئله ناحیه بحرانی
طراحی پروتکلی است که فرآیندها می توانند به صورت همکار
عمل کنند , هر فرآیند برای ورود به ناحیه ی بحرانی خودش +
باید اجازه بگیرد. بخشی از aS که درخواست اجازه صادر می
کند , ناحیه ی ورودی (بسح) نام دارد و بقیه کد را ناحیه
باقیمانده می نامند.
صفحه 9:
Jo ol, مسئله ناحیه ی بحرانی باید 3 نیازمندی را
برآورده کند :
عصاهه یه : لگر فرلیند 0© در حا لتاجرلى ناحيد ى
بحرانیاشباشد , هیچ فرآیند دیگرین باید اجازم ی اجرای
تاحیه ب حرلنیاشرا داشته باشد.
so nin oll : اگر هیچ فرآیندی در ناحیه ی بحرانی اش نباشد
ولی فرآیندهایی باشند که بخواهند وارد ناحیه ی بحرانی
خودشان شوند , آنگاه فقط فرآیندهایی که در حال اجرای
acl ی باقیمانده خودشان نیستند می توانند برای ورود به
ناحیه ی بحرانی خودشان انتخاب شوند و این اتفاق نمی
تواند بطور نامحدود به تعویق بیفتد.
صفحه 10:
1-2-7 راه حل هاى دو فرآیندی
در اين قسمت به الكوريتم هايى مى بردازيم كه در هر زمان
فقط بروى دو فرآيند عمل مى كنند. فرآيندها با 0© و ٩۳
ناحيه
مشخص مى شوند براى سهولت وقتى از
برای نشان دادن فرآیند بعدی از 6۱ است ps)
whee ack دادح
ساختار كلى فرآيند نمونه :03 ليا
صفحه 11:
1-1-2-7 الگوریتم 1
اولین راه حل این است که از فتغیر هشترگی wea pli as استفاده
فرآکنیمکه|مقدلر الیو آبار9 افتبه ی بحرانی خود شود مه
۷" این راه حل تضمین می کند که
در هر زمان فقط یک فرآیند وارد
s acl بحرانی اش شود اما
نیازمندی پیشروی را برآورده نمی
کند زیرا دقیقا مشخص می کند که
چه فرآیندی باید وارد acl ی
بحرانی خودش شود.
صفحه 12:
2-1-2-7 الگوریثم 2
مشکل الگوریتم 1 این است که اطلاعات کافی در مورد حالت هر
فرآیند نگهداری نمی کند بلکه فقط مشخص می کند کدام
فرآیند اجازه ی ورود به ناحیه ی ورود asl a: ی بحرانی
خودش را دارد که برای حل ایو سنکلبه جای متغیر مب از
آرایه زیر استفاده می شود :
مقدار اولیه عناصر آرایه طخ است [6] موس
اگر صبد [۲۷ باشد نشان می دهد که ۵۱ آماده ورود به ناحیه
فك معواتس. افق صل
صفحه 13:
#*هر فرآیند برای ورود به ناحیه ی بحرانی منتظر می ماند تا ۲۱
مربوط به فرآیند ناحیه ی بحرانی ۳ شود و هر فرآیند هنگام
خروج از ناحیه ی بحرانی پ۲۳ مربوط به خود را < می کند
صفحه 14:
در اين روش:
|« شرط انحصار متقابل برقرار است
اا.ءشرط پیشروی برقرار نیست
مثال: برای تشریج مسئله فوق اين دنباله را در نظر می گیریم :
< [9 ]مط د 6۵ : 20
کنون PO و 4 در حلقه Got Peed] = Tre eS cre oS hte ¢@ :10
** این الگوریتم به زمانبندی دقیق دو فرآیند بستگی دارد. اين
دنباله می تواند در محیطی باشد که چندین فرآیند به طور
همزمان در حال اجرا هستند و یا بلافاصله بعد از ۲۵ وقفه
رخ دهد و 00 از یک فرآیند به فرآیند دیگر برود.
صفحه 15:
3-1-2-7 الگوریتم 3
در اين روش فرآیندها دارای دو متغیر
تعمد 44
صفحه 16:
# فرآیند 6۷ براى ورود به ناحيه ى بحرانى ابتدا [8]0 را ص1 مى
iS اكر هر دو فرآيند سعى كنند همزمان وارد ناحيه ى بحرانى
شوند . دى؛ در آن واحد مى خواهد ؛ و شود. اما فقط یک دستور
انتساب بعدى انجام مى شود و مقدار قبلى از بين مى رود.
مقدار نهايى دى؛ مشخص مى كند كداميك از دو فرايند » زودتر
اجازه ورود به ناحيه ى بحرانى را ييدا مى كنند.
صفحه 17:
"اين روش ویژگی های زیر را دارا می
باشد :
حصاهه رلعی0: هر فرآیند 0 وقتیمیتولند وارد ناحیه
ی بحرانیاششود که یا -ط ۳ [۲۳ با !مه . لگر دو
فرآیند بخواهند همزمانوارد ناحیه ی بحرانیشوند
آنگاه ع۲ > [۲]6 < [۱۳0 کم بدینترتیب0؟ و 64
نمیتولنند همزمانحلقه طاب خود را اجرا کنند چرا کم
مقدار موه میتولند در یکزمان0 یا 1 باشد.
all شرط پیشروی
ااا.ءشرط انتظار محدود
صفحه 18:
v
برای اثبات ویژگی 2 و 3 در صورتی می توان مانع از 2939
فرآیند ۱ به ناحیه ی بحرانی اش شد که يا ۲7۷ 2 [۲۳ و سد
ص18 - در حلقه عاب كير كند.
4. اكر :© آماده ورود به ناحيه ى بحرانى نباشد آنكاه - [إدع
ro Pig Pobre تواند وارد ناحيه ى بحرانى مى شود.
8 اگر :موه باشد و 6 وارد ناحیه بحرانی می گردد. وقتی 6۱
وارد ناحیه بحرانی طخ 2 Profi] می گردد و ۲ اجازه use Lay
کند تا وارد ناحیه ی بحرانی خود شود.
6 اگر ۵۱ مقدار [ب! را برابر صب قرار دهد باید 2۱ مه نیز
باشد اما جون ,© در حين اجراى دستور طلب » مقدار مسب را
تغییر نمی دهد , 6 حداکثر پس از یک بار ورود در ناحیه ی
صفحه 19:
ol, 2-2-7 حل های چند فرآیندی
الكوريتم نانوايى (موكللاجيك بوله) برای حل ناحیه ی بحرانی به اندازه
ی » فرایند است که این الگوریتم را برای محیط توزیعی طراحی
این الگوریتم به هر مشتری هنگام ورود شماره ای می دهد و
مشتری بعدی که باید خدمات بگیرد مشتری است که شماره ی
کوچگعزیدارد در ضمن آلگوریتم بصمیننمی کید که سمارهی
مشتریان یکسان نباشد اگر شماره ی مشتریان یکسان بود
| مشتربى كه نإ كوجكهرة کاره زودتر دما می كيت oh
1
شود 6 يكسان اكد
صفحه 20:
ساختمان داده های مشترک عبارتند از :
۷مقدار اولیه ی این ساختمان داده ها به هه مس
ترتیب ۳ و 0 است. [] اسب داز
این الگوریتم شرط های سه گانه را داراست.
ساختار فرآیند ۱ بر الگوریتم وله در شکل زیر نشان داده شده
/ Obovern( =r;
]ساديم ,... ,[ سه ,[© مسجت [] سس 0[+0(:
صفحه 21:
3-7 ویژگی های سخت افزاری برای هماهنگی فرآیند
برای مسئله ی ناحیه بحرانی در محیط تک پردازنده ای کافی
است اجازه ندهیم در حین تغییر متغییرهای عمومی ؛ وقفه ای
رخ دهد. اولین روش در محیط چند پردازنده ای امکان پذیر
نیست چرا که غیر فعال کردن وقفه ها در یک محیط چند
پردازنده ای می تواند موجب اتلاف وقت شود زیرا پیام به
elas پردازنده ها ارسال می شود
۷ بنابر این اغلب ماشین ها دستورات سخت افزاری خاصی را
coe a8 allen gue Sled نوان كلمه: اى برا تست گنه یا
محتویاتش را تغییر دهد يا اتمی محتویات دو کلمه را عوض
کند.
صفحه 22:
دستور 6 ۵ بو
به طور اتمیک اجرا می شود یعنی به عنوان یک واحد بدون وقفه
اجرا می شود بنابراین اگر دو دستور ۰۱6 2 همزمان , هر
كدام در يى 00600 اجرا شوند , , ته ترتيبى اجرًا ضى يد
صفحه 23:
0 اگر ماشین از دستور 720۱6 پشتیبانی کند برای پیاده
سازی انحصاری یک متغیر بولین به نام ۲ تعریف می کنیم و
مقدار اولیه آنرا عط۳ در نظر می گیریم. ساخت فرآیند 0۱ در
اینجا آمده است.
ط(
((سا)۲2)<:۵) دننز
ناحیه ی بحرانی
jlock = Pube
ناحيه ى بآقيمانده
صفحه 24:
دستور Gun
تور کین وی مجبونات دو كلمة کار می > کندا که ان دستور
نیز مانند 0۰46 به د ۲
)4 & ان 6 تیلم
A ن |
ين الكوريتم ها 0 = ioe twp
نيازمندى انتظار محدود را
web 8
براورده مى كنند.
ib = ewp
{
صفحه 25:
7 5
ce
15
الگوریتمی که در زیر آمده از دستور ۲226 استفاده می کند و
تمام نیازمندیهای سه گانه ناحیه ی بحرانی را برآورده می کند.
ساختمانر البلمبهای مظترک ربا لتیدمازنیج
ست. [ از
برای اثبات اینکه الگوریتم عمصاهمه بلعیی را رعایت joke Oe
می دانیم که فرآیند ) وقتی می تواند وارد ناحیه ی بحرانی شود که
۳ < پجهن يا ۳1 < نوا باشد و بها وقتى مى تواند عط۳ باشد
که دستور 26" اجرا شده باشد. اولین فرآیندی که
دستور ino US ino Io |, Test Oud Get فهمد که g hey = Pube بقیه
فرآیندها باید منتظر بمانند.
متغیر [بهسب در صورتی عط۳ می شود که فرآیند دیگری از ناحیه ی
Cc Lee Illa. It.
صفحه 26:
4-7 سمافورها
سمافور يك متغير صحيح است كه صرف نظر از مقداردهى
اولیه , فقط از طریق دو عمل استاندارد اتمیک به نام های
صفحه 27:
هنگامیکه یک فرآیند در حال تغییر مقدار سمافور است هیچ
فرآیند دیگری نمی تواند مقدار همان سمافور را در همان زمان
تغییر دهد.
در حالت (ح)همب » تست مقدار سمافور SO)
0-7 )کر برون وقنمافلرنها.
مسئله ی ناحیه ی بحرانی » فرآیند را می
توانیم با استفاده
از سمافورها حل کنیم» فرآیند دارای
سمافور مشترکی به
تام هی هستند که مقادیر اولیه آن 1
اس ه هر فر آنتد
صفحه 28:
7
ee Oe
2-4-7 پیاده سازی سمافور
wus عمده ی راه حل های انحصار متقابل و تعریف سمافوری که
ارائه شد این است همه ی آن ها نیازمند انتظار مشغول هستند
(بچهمب بصطا). انتظار مشغول در سیستم های چند برنامه ای با
OPO Ss 1 زمان 060 را هدر می دهد اما اين روش در سیستم
های چند پردازنده ای مفید است چرا که دیگر نیاز به صرف
زمان زیادی برای تعویض بستر نیست و فرآیند تنها می بایست
در مدت زمان قفل منتظر بماند.
۷ برای رفع مشکل پهست بط تعریف عملیات هب و Loker تغيير
می دهیم. وقتی فرایندی عب را اجرا می کند , در صورتیکه
مقدار سمافور مثبت نباشد , باید منتظر بماند و به جای buoy
صفحه 29:
** عمليات انسداد , فرآیندی را در صف انتظار وابسته به آن سمافور
قرار می دهد و حالت فرآیند به حالت انتظار تبدیل می شود. سپس
کنترل به زمانبند 0060 می رود تا فرآیند دیگری را برای اجرا
انتخاب کند.
# فرآیندی که در انتظار سمافور 6 مسدود است ؛ در اثر عملیات
اجه , توسط فرآیند دیگر , باید دوباره شروع as اجرا نماید که
شروع دوباره ی فرآیند با عملیات جصلس انجام می شود که فرآیند
را از حالت انتظار به حالت آمادگی می برد. سپس این فرآیند در
صف آمادگی قرار می گیرد.
هر سمافور دارای یک مقدار صحیح و لیستی از فرآیندهاست.
وقتی فرآیندی باید منتظر سمافور بماند » به لیستی از فرآیندها
ey
صفحه 30:
عملیات سب سمافور مى تواند به صورت زیر پیاده سازی شود:
(۵ سجن لاس(
jouer
}Oarke<0)
io OL دصح هذا لوز
عاعطط() ز
{
ا 0
فرخوانی کرده به تعویق می
اندازد
صفحه 31:
(۵ ساوسو لس(
صلس 6+ + ز
(ععسس. 8)م(
irewove u process P Prow OL
(ماصحطسز
{
نکته : عملیات سا و جحجلس به صورت فرخوان های سیستم
در سیستم عامل پیاده سازی شده اند
صفحه 32:
3-4-7 بن بست ها و حالت گرسنگی
پیاده سازی سمافور با صف انتظار , ممکن است منجر به این شود
که دو يا چند سمافور دائما منتظر رویدادی باشند که توسط یکی
از فرآیندهای منتظر ناشی شود. رویداد مورد انتظار , اجرای
عملیات است ( به این حالت بن بست مى كوييم )
قواسجکنت بو Hidde (0)وفرآرلدا 98 06 وجود داپیهی؟ دراک :
jwea(Q); wat) سیم(فون حقذللیک هستند.
: : همینت رتیبوقتی0 a ules Ll 1 wa(Q)
iGrqri(S); (ه)سمت
تن |
را اجرا من کند باید متتظر بماند نا ۵ عملیات
اتويت |
صفحه 33:
#امسعلة دیگر در نورد بن نست استداه با فرستنگی است: در این
وضعیت , فرآیندها در داخل سمافور به طور نامحدود منتظر می
ماند. انسداد نامحدود در صورتی اتفاق می افتد که فرآیندهایی را
از صف مربوط به سمافور حذف یا اضافه کنیم که به ترتیب ۷۵
ws? siege ley Asp”
سمافورهای دودویی بر خلاف سمافورهای شمارشی که در بخش
قبل od شند: من جوانند ‘Leas مغادیز 8 با 1 را ديرد
(سمافورهای شمارشی می توانند هر مقدار صحیحی را
بپذیرند)
sjlw ol, سمافورهای شمارشی با استفاده از
سمافور دودویی:
صفحه 34:
عملیات ore در ۵
صفحه 35:
5-7 مسائل کلاسیک هماهنگی فرآیندها
1-5-7 مسئله بافر محدود
ساختار کلی الگوی بافر محدود بدین صورت است که فرض می
کنیم انبار بافرها حاوی ه بافر است و هر بافر می تواند یک
قلم داده را ذخیره کند.
© سمافور جضی انحصار متقابل را برای دستیابی به انبار بافر
فراهم می کند و مقدار اولیه آن یک است.
*** سمافورهاى بوجت و لذ به ترتيب تعداد بافرهاى خالى و پر
را شمارش مى كنند.
صفحه 36:
ساختار فرآیند تولید
کننده :
> > مقدار اولیه
۳۳
0 < مقدار اولیه اد
صفحه 37:
صفحه 38:
2-5-7 مسئله خوانندگان و نویسندگان
۷یک شی داده مثل فایل را رکورد : بین فرآیندهای همزمان به
اشتراک گذاشته می شود که بعضی از فرآیند ها ممکن است
نخواهند محتویات شی را بخوانند ولی بعضی دیگر
است بخواهند شی داده را تغییر دهند. فرآیندهایی که فقط
عمل خواندن را انجام می دهند را خوانندگان و بقیه
نویسندگان می نامیم.
۷ گر دو خواننده همزمان به شی داده مشترک دستیابی داشته
ببياشنن مشكلي ابجان نهى شود اما أكرئويسنده و فرآيند
of بويسيدم يا حوانيدما ae ۳
قه باشند , مشكل ايجاد مى شود
صفحه 39:
مسئله خوانندگان و نویسندگان شکل های گوناگونی دارد و شامل
اولویت های نیز هستند.
1 اولین مسئله ی خوانندگان و نویسندگان , هیچ فرآیندی منتظر نماند
مگر اينکه خواننده ای قبلا اجازه دستیابی به شی مشترک را کسب
کرده باشد( منجر به گرسنگی نویسندگان می شود)
2 دومین مسئله خوانندگان - نویسندگان : وفتی نویسنده ای آماده ی
نوشتن شد ء عمل نوشتن را هر چه زودتر انجام می دهد ( یعنی اگر
نویسنده ای منتظر دستیابی به شی باشد , هیچ خواننده ای شروع به
خواندن نمی کند) (منجر به گرستگی خواننده می شود)
به همین دلیل شکل های دیگری از مسئله طراحی شد.
صفحه 40:
: حل برای اولین مسئله خوانندگان - نویسندگان ol,
سمافور 0 2 بط ,سب
readout =O -
: ساختار فرایند نویسنده
: مشخصمیک ند چند
فرآیند در حالخواندن شی
2300
Durex : تضمینمیکند وقتی
کند انحصار متقابلبرقرار
صفحه 41:
صفحه 42:
3-5-7 مسئله غذا خوردن
فیلسوفان %
پنج فیلسوف را در نظر بگیرید که b ©
زندگی خود را صرف فکر 0
کردن و غذا خوردن می کنند. .سح a)
۳
فیلسوفان دارای یک میز دایره
ای هستند که پنج صندلی دارد 76
و هرکدام متعلق به یک ور ۹ ۹
فيلسوف است . در مرکز یک 6 02 ١.
ديس از برنج قرار دارد و ينج [١ 1
قاشق نيز بروى ميز واقع
صفحه 43:
وقتی فیلسوفی در حال فکر کردن است , تعاملی با
همکارانش ندارد. گاهی یک فیلسوف گرسنه ro شود و
سعی می کند قاشق نزدیک خود (قاشق بین او و همکاران
چپ و زاستا را بردارد.. فیلینتوف: در هر زمان فقط یک
قاشق می تواند بردارد.
بدیهی است که فیلسوف نمی تواند قاشقی که دست
همکازانش است زا بردارد:
اگر فیلسوف گرسنه , هر دو قاشق را در آن واحد در اختیار
داشته باشد , بدون وقفه می تواند به خوردن ادامه دهد.
هنگامیکه کار خوردن تمام شد هر دو قاشق را به روی میز
مى گذارد و دوباره شروع به فکر كردن مى كند.
صفحه 44:
ee
#*تذکر : مسئله غذا خوردن فیلسوفان نمایش ساده ای از نیاز
به تخصيص چندین منبع بین فرآیندهای مختلف است که بدون
بست و گرسنگی انجام می شود.
* یک راه حل سادهبرای مسئله غذا خوردن فیلسوفان اين
است که هر قاشق با یک سمافور نمایش داده شود.
هر فیلسوف برای بدست آوردن یک قاشق , عملیات سب را
بروی آن سمافور اجرا می کند و با اجرای عملیات له بروی
سمافور متاسب , قاشق را آزاد می کند لذا داده مشترک به
میورب ربیاسب که مقداز اذلنه ی اعتامن اقب براي ركه
است.
iGewophore chopstch[S]
صفحه 45:
ساختار فیلسوف :
ura chopetch{i));
xt (chopatch| (#0) %S];
oot
([] اصس ديد
chopotch{(+0)%S]); سیب
تسا
())طاس(
صفحه 46:
۷ اگرچه اين راه حل تضمین می کند که هیچ دو همسایه ای به
طور همزمان نمی خورند اما منجر به بن بست می گردد.
تشریح بن بست در oly حل فوق : اگر هر پنج فیلسوف
همزمان گرسنه شوند و هر کدام قاشق سمت چپ خود را
تصاحب کنند اکنون تمام عناصر 6د هبرابر با صفر خواهند
بود. وقتى هر فيلسوفى سعى مى كند قاشق سمت راست
خودش را بكيرد , به تعويق مى افتد.
صفحه 47:
7 مناطق بحرانی
استفاده نادرست از سمافورها ممکن است منجر به خطاهای
تنظیم وقت شود که کشف آن ها مشکل |
منال :
اگر ترتیب اجرای عملیات عب fF sted g
*** ممكن است چندین فرآیند به طور همز.
ناحیه ی بحرانی باشد.
صفحه 48:
* فرض کنید به جای (ضصضح)صيد از (صمامس. استفاده می
کند که در این حالت بن بست اتفاق می افتد.
* همچنین اگر (صمس يا (صملسبه يا هر دو را حذف
کنیم , يا انحصار متقابل از بين مى رود يا بن بست رخ مى
دهد.
ساختار منطقه بحرانی يا ناحیه ی مشروط Cniicd)
2۳؟)) : یک ساختار هماهنگی سطح بالا می باشد که جهت
جل .مشکلات مفرح شده:در بالاً ازائهاخی گزدید:
در ساختار منطقه ی بحرانی و ساختار ناظر که در جلوتر بیان
می شود. فرض بر این است که یک فرآیند حاوی داده ی
محلی ؛ و یک برنامه ترتیبی است که می تواند بروی آن داده
صفحه 49:
لا داده محلی فقط از طریق آن برنامه قابل دستیابی است که در
همان فرآیند بسته بندی شده است یعنی هیچ فرآیندی نمی
تواند مستقیما به داده ی محلی فرآیند دیگر دستیابی داشته
باشد.
پیاده سازی ساختار منطقه مشروط
مقدار اولیه :
صفحه 50:
صفحه 51:
دستيابي انحصار متقابل dy ناحیه بحراني توسط بریی() فراهم ميشود.
#اگر فرآيندي نتواند به دلیل نادارست بودن شرط منطقي 9) وارد ناحیه بحراني شود در سمافور
lays Proto
#فرآيندي كه در سمافور بوط بجو منتظر است. قبل از اجازمي ارزتيابي مجدد شرط منطقي 9
(عبارت 09» يك عبارت منطقي است كه دستيابي به ناحيدي بحراني را مشروط ميسازد وقتي فرآيندي
سعي ميكند وارد ناحيه بحراني شود عبارت منطقي © را ارزيابي ميكند)؛ به سمافور مسج
رواط منتقل ميكردد.
6 تعداد فرآيندهاي منتظر در سمافورهاي رواط لمح روط بد به ترتيب توسط رواط به و
بواط ديد مشخص ميشوند.
صفحه 52:
#وقتي فرآيندي از ناحیه بحراني خارج ميشود» ممکن است شرط صنعتي 9) را تغییر دهد که منجر
به جلوگيري از ورود فرآیند دیگر به ناحیه بحرلنياش گردد.
#فرآیند قبل از ورود به ناحیه بحراني عبارت منطقي 0 را تست ميکند که در صورت ارزش
درستي وارد ناحیسه بحرانسي ميشود و در غیر اینصورت باید در سمافورهاي رواط- و۲ و
رجاط یی منتظر بماند.
صفحه 53:
جح ناظرها (0)
ساختار سطح بالاي دیگر ناظر است که براي حل
مسائل وایجاد دو به دو ناسازگاري پیشنهاد ميشود
مونیتورمجموعهاي از زیربرنامههاء متغيرها و
ساختمان دادهاي است که همگي در يك ماژول
خاص بستهبندي شدهاند.
۷ماجول مربوط به مونیتور» بين جندين فرآيند
به اشترلك گذاشته ميشود.
ساختار مویتور ی ناظر تضمین ميکند که در
هر زمان فقط یه فرآیند در داخل ناظر فعال باشد.
صفحه 54:
علاوه بر محتوياتي که در بالا براي مونيتور ذكر شدء مانيتور ميتواند حاوي متفيرهايي از
نوعهاي مستفبی0 باشد که ميتران عمل لمیر و امد را بروي آن تعریف کرد.
gat AY” که عمل ارس را بر poet tle go صدا زند بلوکه ميشود.
۷ گر فرآیند ديگري به این علت که فرآیند اول در داخل مونیتور قرار داشت متوقف شده بوده
پس از رخداد بالاء ميتواند به اجراي خود ادامه داده و وارد مونیتور شود.
عمل اسسپ:0 دیق يك فرآيند به تعويق افتاده را از سركيري ميكند. اكر هيج فرآيندي به تعويق
نيفتاده باشدء عمليات إدمب:98) تأثيري نخواهد داشت.
صفحه 55:
شکل رو به رو شماتيك يك ناظر را نشان ميدهد
که بیانگر اين است که در هر زمان فقط يك فرآیند
در داخل ناظر فعال است.
صفحه 56:
شکل زیر مونیتور با متغيرهاي (ب)
لبون را نشان ميدهد,
صفحه 57:
AP word = ۵ ما wet (ew);
Rewor — ew;
;0 - سوه > موه
AP covet < 0 - 0 ۲! مه (Pd);
/مقداردهیاولیه :0 < سوه
دمب لعج
صفحه 58:
ج-0 هماهنگي در سيستمهاي عامل
0۵-7 هماهنگي در سولارین 6
0سیستم عامل سولاریس 0 طراحي شد تا محاسبات بيدرنگ را انجام دهد» چند بندي باشد و لز
جند بردازندماي يشتيباني كند.
()براي کنترل دستيابي بسه نواحسي بحرانسي» سولاریس 6 انحصارهاي تطسبيقي
(ack pave wetex) متغيرهاي شرطيء سمافورهاء قلهاي خواننده - نویسنده وصف ويه
(Turs vile) را تدارك ميبیند.
0سولاریس ۰0 سمافورها و متغيرهاي شرطي را به روش يكساني پيادسازي ميکند.
صفحه 59:
هه همگامي در ویندرز 6000
ویندوز 060000 يك هسته چندبندي است که از كاربردهاي بيدرنگ و چندپردازنده نیز پشتيباني
ميکند. وقتي هسته ویندوز 0000000 در يك سیستم تك پردازندهاي به يك منبع عمومي دستيابي دارد»
موقتاً وقفههايي را براي انجام اداره کنندگان وقفهاي ميفرستد که ممکن است به آن منبع عمومي
دستيابي داشته باشند.
#در سیستم چند پردازندهاي؛ ویندوز 000000 با استفاده از قفلهاي چرخشي منابع عمومي را
محافظت ميکند. همانند سولاریس <Q هسته از قفلهاي چرخشي براي سگمنتهاي کد کوتاه استفاده
ميکند.
#علاوه بر اين» به دلایل كارآيي» هسته تضمین ميکند که تا زماني که بندي قفل چرخشي را در
اختیار دارد» قبضه نخولهد شد.
#براي همگامسي بنده در خارج از هسسته؛ ویندوز 0000000 از اشياي توزیع کننده
aS, 4 clita! (Dispatcher Obiert)
صفحه 60:
»9 تراکنشهاي اتمي
انحصار متقایل ناحیه بحراني تضمین ميکند که ناحيههاي بحراني به طور اتميك اجرا شوند يعني اگر
دو ناحیه بحراني به طور همزمان اجرا شوند. حاصل آنها مثل حالتي است که آنها به طور تربيتي
اجرا ميشوند.
"" اين خاصيت براي آن است که اطمینان حاصل کنیم که هر ناحیه بحراني» يك واحد منطقي از کار
را ایجاد ميکند که یا کاملاً اجرا ميشود یا اصلاً اجرا نميشود.
)0 مدل سیستم
تراکنش: مجموعهي از دستورات (عملیات) که يك عمل منطقي را انجام ميدهد تراککش
2h (ti (Drees)
نکته مهم در رابطه با پردازش تراکنشها» حفظ ويژگي اتمي» صرفنظر از امکان خرابي سیستم
کامپيوتري است.
صفحه 61:
راهكارهاي تصمین اتمي بودن تراکنش:
1 محيطي که در هر زمان فقط يك تراکنش قابل انجام است.
1 حالتي که چندین تراکتش به طور همزمان ميتوانند فعال باشند
اثر تراكنش تصديق شده نميتواند توسط لغو تراکنش» خنثي شود.
ال نکته: هر تراکنش دنبالهاي از عملیات لمح و عبر که توسط عملیات بسح با ببس
خاتمه ميیاید.
بسبو(): لطلم میند که ترلکنشبا موفقیتاجرا شدم
ببسر(): لعلام میکند که لجرليت راکنشبه دليلخطاهاينطقي متوقنشده لست
تراکنش تصدیق شده/ لغو شده: تراكنشي که به طور کامل اجرا شده است» تصدیق شده و گرنه
لغو شده است.
صفحه 62:
براي تعيين اينكه سیستم چگونه باید خاصیت اتمي را تضمین کند ميبایست خواص دستگاههاي
ذخیره كنندسي داده مورد نیاز تراکنشها را شناسايي کنیم. دستگاههاي ذخیره دادهها بر حسب
سرعت نسبي» ظرفیت و قابلیت ترمیم خرابي متمایز ميشوند.
[] حافظه ناپایدار: اطلاعات موجود در حافظه ناپایدار بر ار خرابي سیستم ازبین ميروند.
(حافظه اصلي و پنهان)
[] حافظه پایدار: اطلاعات موجود در حافظه پایدار بر اثر خرابي سیستم از بین نميروند.
(ديسكهاء نوارها)
[] حافظه ماندگار: حافظهاي که اطلاعات آن از بین نميروند. براي این منظور باید کپيهاي
متعددي از اطلاعات روي دیسك تهیه شود و اطلاعات تحت کنترل خاصي بروز شوند.
صفحه 63:
6-0-8 ترمیم بر اساس سابقه
يك روش حصول اطمينان از اتميبودن تراكنش اين است كاه سابقه تغبیرات اطلاعات توسط
تراکنش» در حافظه ماندگار ذخیره شود.
متداواتریسن انجام ایسن کار ایسن است که مساختمان داهاي به نام سابقه بر روي حافظه
تشکیل شود.
هر رکورد سابقهء يك عملیات از نوشتن تراکنش را توصیف ميکند و داراي فيلدهاي زي راست:
[] نام تراکنش: نام منحصر به فرد تراكنشي که عمایات rte را انجام داد
[] نام قلم داده: نام منحصر به فرد قلم دادهاي که نوشته شده است
[] مقدار قديمي: مقدار قلم داده قبل از عمل نوشتن
[] مقدار جدید: مقدار قلم داده پس از عمل نوشتن
صفحه 64:
0-0-2 نقاط كنترلي
وقتي سیستم خراب شود باید با استفاده از سابقه؛ تراکنشهايي را که نیاز به دادههاي قديمي و
تراكنشهايي که نیاز به دادههاي جدید دارنده تعيين كنيم.
در واقع براي اینکار باید کل سابقه را جستجو کنیم. این روش دو عيب عمده دارد:
1 جستجو در سابقه منحصر به هدر رفتن وقت ميشود.
1 اغلب تراكنشهايي که بر اساس الگوریتم ما دوباره بايد اجرا شوند قبلاًدادههايي را بروز
کردهاند و سابقه ميگوید که آنهاباید اصلاح شوند. گر چه این عمل ضرري ندارد اما زمان
ترمیم طولاني مي شود.
برلي كاهش اين سربارهاء مفهوم نقاط كنترلي را مطرح ميکنيم. در حين اجراء سیستم سابقه را
تشکیل ميدهد. علاوه بر اين» سیستم متناوباً نقاط كنترلي را نیز اجرا ميکند.
صفحه 65:
9-7 تراکنشهاي اتمي همزمان
چون هر تراکنش اتمي است» نتایج اجراي همزمان تراکنشها باید معادل حالتي باشد که آنها به ترتیب
دلخواهي به طور سریال اجرا ميشوند؛ اين خاصيت که قابلیت سريالسازي (مسعسفببی9)) نام دارد؛ به
اين ترتیب بدست ميآید که هر تراکنش در يك ناحیه بحراني اجرا شود.
يعني تمام تراکنشها در يك سمافور «سی() مشترك هستند که مقدار اولیه آن 4 است» وقتي تراكنشي
شروع به اجرا ميکند؛ اولین کارش اجراي عملیات (مبسه(0) #مس است. پس از اينکه تراکنش تصدبق
یا لفر شد» عملیات (محف)) لس را اجرا ميکند.
0-2 قابلیت سريالسازي
سيستمي با اقلام دادهاي 0) و 0 را در نظر بگیرید که هر دو توسط تراكلشهاي ,۳ و Dy خوانده و
نوشته ميشوند. فرض کنید این تراکنشها به طور دائمي اجرا ميشوند. به طوریکه ابتدا ,۳" و سپس
اجرا ميشوند اين ترتیب اجرا زمانبندي نام دارد.
صفحه 66:
شکل زیر زمانبندي سریال که در آن Dy و سپس ,۳ اجرا ميشود نشان ميدهد
زمانبندي سریال: زمانبنديي که در آن» هر تراکنش به طور اتمي اجرا ميشود. هر زمانبندي
سریال متشکل از دنبالهاي از دستورات از تراكنشهاي مختلف است که دستورات مربوط به يك
تراکنش با هم در آن زمانبندي ظاهر ميشود.
*0* بنابراين براي يك مجموعه + تراكنشيء تعدلد زمانبندي
سریال معتبر ب است.
صفحه 67:
م6 پروتکل قفل كردن
یيك روش براي حصول اطمینان از قابلیت سريالسازي اين است که به هر قلم داده يك قفل نسبت
داده شود.
در نتيجه نياز به بروتكل قفلكردن است تا شيوه قفل كردن و باز كردن قفل را مشخص ميكند. يك
قلم داده به شكلهاي كوناكوني ميتواند قفل شود كه در اينجا © حالت اشاره شده:
«حالت اشتراك: اكر تراكنش 58 داراي قفل حالت اشتراك بروي قلم داده © باشد كه با © نشان
داده شود آنكاه 4 ميتولند © را بخواند ولي نميتواند بنويسيد.
«حالت انحصاري: اكر تراكنش ,7 داراي قفل حالت انحصاري بروي قلم داده 9 باشد که با 7۷
نشان داده ميشوده آنگاه (» ميتواند 3 را بخواند و بنویسید.
صفحه 68:
يك پروتکل که قابلیت سريالسازي را تضمین ميکند پروتکل قفل دو مرحلهاي است. اين پروتکل
مستلزم این است که هر تراکنش درخواست قفل کردن و بازکردن قفل را در دو مرحله انجام دهد:
مرحله رشد: تراکنش ممکن است قفلي را ایجاد کند اما ممکن است قفلي را باز نکند.
مرحله کوچك شدن: تراکنش ممکن است قفلهايي را باز کند ولي ققلهاي جديدي را ایجاد نميکند.
ههه من بروتكلهاي زماني
روش ديكر براي تضمين ترتيب قابليت سريالسازي (علاوه بر اين حالت كه؛ در زمان اجرا با اولين
قفلي كه هر دو تراكنش درخولست ميكنند و شامل حالتهاي ناسازكارياند؛ تعيين ميشود)؛ اين
است که؛ از قبل ترتيبي بين تراكنشها انتخاب شود.
*0* متداولترين انجام اين كار استفاده از الكوي زماني است.
صفحه 69:
دو روش ساده براي پيادسازي اين الگو وجود دارد:
1._استفاده از ساعت سيستم به عنوان مهر زماني. يعني مهرزماني يك تراکنش برابر با مقدار
ساعت سیستم در زمان ورود تراکنش به سیستم است.
11 . استفاده از شمارنده منطقي به عنوان مهر زماني. يعني مهرزماني يك تراكنش برابر با
مقدار شمارنده در هنكام ورود تراكنش به سيستم است.
gla year زماني تراكنشهاء ترتيب قابليت سريالسازي را مشخص ميكند.