تابع MAXrequ3Select وضعیت تراکنش شماره سه را از نوع colset MODE به عنوان پارامتر اول میگیرد و شماره درخواست هر سه تراکنش را از نوع colset REQUEST به عنوان پارامترهای دوم، سوم و چهارم میگیرد. این تابع با توجه به وضعیت تراکنش شماره سه و شماره درخواستهای همه تراکنشها، شماره درخواستی را برای تراکنش سه که به حالت انتظار رفته است ایجاد میکند. اگر تراکنش سه تازه به حالت انتظار رفته است، شماره درخواست جدید برای آن در نظر گرفته میشود؛ به طوری که به بزرگترین شماره درخواست، یک واحد اضافه میشود و شماره درخواست تراکنش سه معین میشود. ولی اگر تراکنش سه قبلاً در حالت انتظار بوده است دیگر برای آن شماره درخواست جدیدی ایجاد نخواهد شد و شماره درخواست آن همان شماره قبلی خواهد ماند.
-
- تابع MAXrequ2Select
تابع MAXrequ2Select وضعیت تراکنش شماره دو را از نوع colset MODE به عنوان پارامتر اول میگیرد و شماره درخواست هر سه تراکنش را از نوع colset REQUEST به عنوان پارامترهای دوم، سوم و چهارم میگیرد. این تابع با توجه به وضعیت تراکنش شماره دو و شماره درخواستهای همه تراکنشها، شماره درخواستی را برای تراکنش دو که به حالت انتظار رفته است ایجاد میکند. اگر تراکنش دو تازه به حالت انتظار رفته است، شماره درخواست جدید برای آن در نظر گرفته میشود؛ به طوری که به بزرگترین شماره درخواست، یک واحد اضافه میشود و شماره درخواست تراکنش دو معین میشود. ولی اگر تراکنش دو قبلاً در حالت انتظار بوده است دیگر برای آن شماره درخواست جدیدی ایجاد نخواهد شد و شماره درخواست آن همان شماره قبلی خواهد ماند.
-
- تابع MAXrequ1Select
تابع MAXrequ1Select وضعیت تراکنش شماره یک را از نوع colset MODE به عنوان پارامتر اول میگیرد و شماره درخواست هر سه تراکنش را از نوع colset REQUEST به عنوان پارامترهای دوم، سوم و چهارم میگیرد. این تابع با توجه به وضعیت تراکنش شماره دو و شماره درخواستهای همه تراکنشها، شماره درخواستی را برای تراکنش یک که به حالت انتظار رفته است ایجاد میکند. اگر تراکنش یک تازه به حالت انتظار رفته است، شماره درخواست جدید برای آن در نظر گرفته میشود؛ به طوری که به بزرگترین شماره درخواست، یک واحد اضافه میشود و شماره درخواست تراکنش یک معین میشود. ولی اگر تراکنش یک قبلاً در حالت انتظار بوده است دیگر برای آن شماره درخواست جدیدی ایجاد نخواهد شد و شماره درخواست آن همان شماره قبلی خواهد ماند.
-
- تابع MAXtespSelect
تابع MAXtespSelect زمانمهر هر سه تراکنش را از نوع colset TIMESTAMP میگیرد. این تابع با توجه به زمانمهر هر سه تراکنش، یک زمانمهر جدید را برای هر تراکنشی که طرد شده است ایجاد میکند. به طوری که به بزرگترین زمانمهر، یک واحد اضافه میشود و زمانمهر تراکنش مورد نظر معین میشود.
-
- تابع checklock برای مدلهای WW و WD
تابع checklock مهمترین تابع مدلهای WW و WD است که در شکل ۵-۵، دیده میشود.
فرض میکنیم TS(Ti) زمانمهر تراکنش Ti باشد و TS(Tj) زمانمهر تراکنش Tj باشد.
برای مدل WD تابع checklock بررسی میکند که اگر TS(Ti)<TS(Tj) باشد، آنگاه Ti که خواهان قفل روی داده است انتظار میکشد تا Tj به اتمام برسد، در غیر این صورت Ti طرد میشود تا دیرتر با مقدار زمانمهر جدید دوباره وارد سیستم شود و شروع به کار کند.
برای مدل WW تابع checklock بررسی میکند که اگر TS(Ti)<TS(Tj) باشد و Tj روی داده قفل داشته باشد آنگاه Tj طرد میشود، در واقع داده از Tj گرفته میشود و به Ti که قدیمیتر است داده میشود. اما اگر این شرط برقرار نباشد Ti باید انتظار بکشد. همچنین وضعیت تراکنشها برای انجام مراحل بعدی را نیز مشخص میکند.
در جدول ۵-۵، پارامترهای ورودی تابع checklock برای مدلهای WW و WD را مشاهده مینمایید.
جدول ۵-۵- پارامترهای ورودی تابع checklock برای مدلهای WW و WD
پارامتر ورودی | نوع colset | عملکرد |
RAcc | ACCESS | عملیات مورد نیاز دستور جاری بر روی یک منبع را نشان میدهد. |
ELock | LOCK | قفل موجود جاری بر روی منبعی که دستور جاری میخواهد عملیات RAcc روی آن داشته باشد را نمایش میدهد. |
CurT | TRANSACTION | شناسه تراکنشی که دستور جاری مورد مطالعه متعلق به آن است را نمایش میدهد. |
Tlist | TRANSLIST |