Asynchronous System Trap
اسنکرونس سسٹم ٹریپ (اے ایس ٹی) سے مراد ایک ایسا طریقہ کار ہے جو کئی کمپیوٹر آپریٹنگ سسٹمز میں استعمال ہوتا ہے جسے مینارڈ، میساچوسٹس کے سابق ڈیجیٹل آلات کارپوریشن (ڈی ای سی) نے ڈیزائن کیا تھا۔ میکانزم ان نظاموں کے اندر مختلف واقعات کو اختیاری طور پر اے ایس ٹی میکانزم کے ذریعے صارف کے عمل کو واپس اشارہ کیا جا سکتا ہے۔ یہ اے ایس ٹی سبروٹین کالز کی طرح کام کرتے ہیں لیکن انہیں غیر متزلزل طور پر ڈیلیور کیا جاتا ہے، یعنی مرکزی تھریڈ کے سیاق و سباق کی پرواہ کیے بغیر۔ اس کی وجہ سے، خیال رکھنا ضروری ہے: اس بات کو یقینی بنانے کے لیے کہ مرکزی دھاگے اور اے ایس ٹی کے درمیان شیئر کیا جانے والا کوئی بھی کوڈ دوبارہ داخل ہونے کے لیے ڈیزائن کیا جانا چاہیے، اور جو بھی ڈیٹا شیئر کیا جاتا ہے وہ اگر اے ایس ٹی کے ذریعے کسی بھی وقت ترمیم کیا جاتا ہے تو بدعنوانی کے خلاف محفوظ ہونا چاہیے۔ بصورت دیگر، اہم حصوں کے دوران اے ایس ٹی کو بلاک کرکے ڈیٹا کی حفاظت کی جانی چاہیے۔ ASTs کا سامنا عام طور پر دانا پر QIO کالز جاری کرنے کے نتیجے میں ہوتا ہے۔ کالنگ کے عمل/کام کے لیے اے ایس ٹی جاری کر کے آئی/او کی تکمیل کا اشارہ دیا جا سکتا ہے۔ کچھ رن ٹائم غلطیوں کو اے ایس ٹی میکانزم کا استعمال کرتے ہوئے بھی اشارہ کیا جا سکتا ہے۔ اوپن وی ایم ایس کے اندر، خصوصی کرنل موڈ اے ایس ٹی کو عمل کے سیاق و سباق تک نسبتا آسان رسائی حاصل کرنے کے لیے معیاری طریقہ کار کے طور پر استعمال کیا جاتا ہے (بشمول ضرورت کے مطابق عمل کو فزیکل میموری میں پیج کرنا)۔ اگلی بار جب شیڈولر اس عمل کو موجودہ بناتا ہے تو اس قسم کے اے ایس ٹی کو فی عمل سب سے زیادہ ممکنہ ترجیح پر انجام دیا جاتا ہے، اور دیگر چیزوں کے علاوہ عمل کی سطح کی معلومات کو بازیافت کرنے کے لیے استعمال کیا جاتا ہے ($GETJPI "گیٹ جاب/پروسیس انفارمیشن" سسٹم کال کے جواب میں) اور عمل کو حذف کرنے کے لیے۔ مندرجہ ذیل آپریٹنگ سسٹم اے ایس ٹی کو نافذ کرتے ہیں: آر ایس ایکس-11 (بشمول تمام اقسام) آر ایس ٹی ایس/ای اوپن وی ایم ایس اے ایس ٹی تقریبا یونکس سگنلز کے مترادف ہیں۔ اہم اختلافات یہ ہیں: اے ایس ٹی کو کوئی "سگنل کوڈ" تفویض نہیں کیے گئے ہیں: سگنل کوڈ کو ہینڈلر تفویض کرنے اور اس کوڈ کو بڑھانے کے بجائے، اے ایس ٹی کو براہ راست اس کے پتے سے متعین کیا جاتا ہے۔ یہ کسی بھی تعداد میں اے ایس ٹی کو ایک ہی وقت میں زیر التوا رہنے کی اجازت دیتا ہے (عمل کوٹے کے تابع)۔ اے ایس ٹیز کسی بھی سسٹم کال کو کبھی بھی اسقاط نہیں کرتے ہیں۔ درحقیقت، کسی عمل کے لیے یہ ممکن ہے کہ وہ خود کو "ہائبرنیٹ" حالت میں رکھے ($HIBER سسٹم کال کے ساتھ)، یا مثال کے طور پر کال کرکے ایونٹ کے جھنڈے کا انتظار کرے۔ $انتظار کریں، جس کے بعد یہ اے ایس ٹی کی فراہمی کا انتظار کرنے کے سوا کچھ نہیں کرتا ہے۔ جب ایک اے ایس ٹی پہنچایا جاتا ہے (آئی او کی تکمیل، ٹائمر، یا دیگر ایونٹ کی وجہ سے متحرک ہوتا ہے)، تو اے ایس ٹی کو انجام دینے کے لیے عمل کو عارضی طور پر انتظار سے باہر کر دیا جاتا ہے۔ اے ایس ٹی طریقہ کار مکمل ہونے کے بعد، وہ کال جو عمل کو ہائبرنیشن میں ڈالتی ہے یا ایونٹ فلیگ ویٹ کو دوبارہ کیا جاتا ہے ؛ جوہر میں، انتظار کی وجہ کا دوبارہ جائزہ لیا جاتا ہے۔ اس لوپ سے باہر نکلنے کا واحد طریقہ (عمل کو حذف کرنے کے علاوہ) انتظار کو پورا کرنے کے لیے $WAKE یا $SETEF سسٹم کال کو انجام دینا ہے۔ یہ عمل بذات خود اے ایس ٹی کے اندر $WAKE یا $SETEF کو مدعو کرکے کیا جا سکتا ہے، یا (اگر عالمی ایونٹ کا جھنڈا استعمال کیا جاتا ہے) $SETEF کسی دوسرے عمل کے اندر۔ وی اے ایکس/وی ایم ایس وی 4 اور بعد میں اے ایس ٹی سطح اور غیر اے ایس ٹی سطح کے کوڈ کے درمیان ہم آہنگی کے مسئلے کے لیے ایک دلچسپ اصلاح کو نافذ کیا۔ $SETAST نامی ایک سسٹم سروس کو موجودہ اور تمام کم مراعات یافتہ رسائی کے طریقوں (رنگ پر مبنی حفاظتی خصوصیات کے لیے اوپن وی ایم ایس اصطلاح) کے لیے اے ایس ٹی کی فراہمی کو غیر فعال یا فعال کرنے کے لیے استعمال کیا جا سکتا ہے۔ تاہم، اگر اے ایس ٹی سے تحفظ کی ضرورت والے اہم حصے میں صرف چند ہدایات لمبی تھیں، تو $SETAST کال کرنے کا اوور ہیڈ ان ہدایات پر عمل درآمد کے وقت سے کہیں زیادہ ہو سکتا ہے۔ لہذا صرف صارف موڈ کے لیے (سب سے کم مراعات یافتہ رنگ، جو عام طور پر عام صارف پروگراموں کے ذریعے استعمال ہوتی ہے)، بٹ فلیگ کا ایک جوڑا پہلے سے طے شدہ صارف کے لکھنے کے قابل میموری لوکیشن (فی عمل "P1" اسپیس میں) پر فراہم کیا گیا تھا۔ ان دونوں جھنڈوں کے معانی کو "کوئی اے ایس ٹی فراہم نہ کریں" اور "اے ایس ٹی کو غیر فعال کر دیا گیا ہے" کے طور پر سمجھا جا سکتا ہے۔ $SETAST کالز کے معمول کے جوڑے کے بجائے، یوزر موڈ کوڈ ہدایات کی ترتیب کو انجام دینے سے پہلے پہلا جھنڈا سیٹ کرے گا جس کے دوران ASTs کو بلاک کرنے کی ضرورت ہے، اور ترتیب کے بعد اسے صاف کرے گا۔ پھر (ریس کے حالات سے بچنے کے لیے یہاں آرڈر کو نوٹ کریں) یہ دوسرے پرچم کو چیک کرے گا کہ آیا یہ اس وقت کے دوران سیٹ ہو گیا تھا: اگر ایسا ہے تو، پھر اے ایس ٹی واقعی غیر فعال ہو گئے ہیں، اور انہیں دوبارہ فعال کرنے کے لیے $SETAST کو کال کیا جانا چاہیے۔ سب سے عام صورت میں، اس دوران کوئی اے ایس ٹی زیر التواء نہیں ہوتا، اس لیے $SETAST پر کال کرنے کی کوئی ضرورت نہیں ہوگی۔ کرنل اے ایس ٹی ڈیلیوری کوڈ، اپنے حصے کے لیے، یوزر موڈ اے ایس ٹی ڈیلیور کرنے کی کوشش کرنے سے پہلے پہلے فلیگ کو چیک کرے گا۔ اگر یہ سیٹ کیا گیا تھا، تو یہ براہ راست اے ایس ٹی کے غیر فعال بٹ کو پروسیس کنٹرول بلاک میں سیٹ کرے گا (وہی بٹ جو یوزر موڈ سے ایک واضح $SETAST کال کے ذریعے سیٹ کیا جائے گا)، اور اے ایس ٹی کو واپس کرنے اور چھوڑنے سے پہلے دوسرا فلیگ بھی سیٹ کرے گا۔ آپریٹنگ سسٹمز کے ونڈوز این ٹی فیملی میں اسنکرونس پروسیجر کال میکانزم ایک ایسا ہی میکانزم ہے۔ مزید حوالہ جات اوپن وی ایم ایس الفا انٹرنلز اینڈ ڈیٹا اسٹرکچرز: شیڈولنگ اینڈ پروسیس کنٹرول: ورژن 7، روتھ گولڈن برگ، سرو سروانن، ڈینس ڈوماس، آپریٹنگ سسٹم ٹیکنالوجی اوپن وی ایم ایس