Pentium F00F bug
پینٹیم ایف 00 ایف بگ انٹیل پینٹیم، پینٹیم ایم ایم ایکس، اور پینٹیم اوور ڈرائیو پروسیسرز (تمام پی 5 مائیکرو آرکیٹیکچر میں) کی اکثریت میں ڈیزائن کی ایک خامی ہے۔ 1997 میں دریافت کیا گیا، اس کے نتیجے میں پروسیسر کام کرنا بند کر سکتا ہے جب تک کہ کمپیوٹر جسمانی طور پر دوبارہ شروع نہ ہو جائے۔ آپریٹنگ سسٹم اپ ڈیٹس کے ذریعے اس بگ کو روک لیا گیا ہے۔ یہ نام F0 0F C7 C8 کے لیے شارٹ ہینڈ ہے، جو ایک خلاف ورزی کرنے والی ہدایت کی ہیکساڈیسیمل انکوڈنگ ہے۔ مزید رسمی طور پر، بگ کو لاک شدہ CMPXCHG8B انسٹرکشن بگ کے ساتھ غلط آپریڈ کہا جاتا ہے۔ x86 فن تعمیر میں، بائٹ سیکوینس F0 0F C7 C8 انسٹرکشن لاک cmpxchg8b eax (رجسٹر EAX میں 8 بائٹس کا لاک موازنہ اور تبادلہ) کی نمائندگی کرتا ہے۔ یہ بگ سی ایف کے ذریعے سی 9 میں ختم ہونے والے اوپی کوڈز پر بھی لاگو ہوتا ہے، جو ای اے ایکس کے علاوہ رجسٹر آپریڈز کی وضاحت کرتے ہیں۔ F0 0F C7 C8 ہدایات کے لیے کسی خاص مراعات کی ضرورت نہیں ہے۔ یہ انسٹرکشن انکوڈنگ غلط ہے۔ سی ایم پی ایکس ایچ جی 8 بی ہدایت ای ڈی ایکس اور ای اے ایکس رجسٹروں میں ویلیو کا موازنہ میموری لوکیشن میں 8 بائٹ ویلیو سے کرتی ہے۔ اس صورت میں، تاہم، میموری لوکیشن کے بجائے ایک رجسٹر متعین کیا جاتا ہے، جس کی اجازت نہیں ہے۔ عام حالات میں، اس کا نتیجہ محض ایک استثنی ہوگا ؛ تاہم، جب لاک پریفیکس کے ساتھ استعمال کیا جاتا ہے (عام طور پر دو پروسیسرز کو ایک ہی میموری لوکیشن میں مداخلت کرنے سے روکنے کے لیے استعمال کیا جاتا ہے)، تو سی پی یو غیر قانونی انسٹرکشن ایکسپشن ہینڈلر ڈسکرپٹر کو پڑھنے کے لیے غلطی سے لاک بس سائیکلوں کا استعمال کرتا ہے۔ لاکڈ ریڈز کو لاکڈ رائٹس کے ساتھ جوڑا بنایا جانا چاہیے، اور سی پی یو کا بس انٹرفیس دیگر میموری تک رسائی کی ممانعت کرکے اس کو نافذ کرتا ہے جب تک کہ متعلقہ رائٹس نہ ہوں۔ چونکہ کوئی آنے والا نہیں ہے، ان بس سائیکلوں کو انجام دینے کے بعد تمام سی پی یو سرگرمی رک جاتی ہے، اور سی پی یو کو بازیافت کرنے کے لیے دوبارہ ترتیب دینا ضروری ہے۔ انٹیل مائکرو پروسیسرز کے پھیلاؤ کی وجہ سے، اس کھلی استحقاق کی ہدایت کا وجود اس وقت ایک سنگین مسئلہ سمجھا جاتا تھا۔ آپریٹنگ سسٹم کے دکانداروں نے حالات کا پتہ لگانے اور حادثے کو روکنے والے حل کو نافذ کرکے جواب دیا۔ بگ کے بارے میں معلومات سب سے پہلے 8 نومبر 1997 کو یا اس کے آس پاس انٹرنیٹ پر نمودار ہوئیں۔ چونکہ F00F بگ عام علم بن چکا ہے، اس لیے یہ اصطلاح بعض اوقات اسی طرح کے ہارڈ ویئر ڈیزائن کی خامیوں جیسے سائریکس کوما بگ کو بیان کرنے کے لیے استعمال ہوتی ہے۔ کمزور سسٹم پر F00F ہدایات پر عمل درآمد سے ہارڈ ویئر کو کوئی مستقل نقصان نہیں ہوتا ہے۔ یہ صرف دوبارہ شروع ہونے تک لاک ہوجاتا ہے۔ تاہم، غیر محفوظ شدہ ڈیٹا کے ضائع ہونے کا امکان ہے اگر ڈسک بفرز کو فلش نہیں کیا گیا ہو، اگر تحریری آپریشن کے دوران ڈرائیوز میں خلل پڑا ہو، یا اگر کسی دوسرے غیر جوہری آپریشن میں خلل پڑا ہو۔ مائی بی 2 اسٹیپنگ نے انٹیل کے پینٹیم پروسیسرز کے لیے اس مسئلے کو حل کیا۔ F00F ہدایت کو ہالٹ اینڈ کیچ فائر (HCF) ہدایت کی ایک مثال سمجھا جا سکتا ہے۔ اگرچہ اس مسئلے کے ایک قطعی حل کے لیے کسی قسم کے ہارڈ ویئر/فرم ویئر پر نظر ثانی کی ضرورت تھی، اس وقت تجویز کردہ حل موجود تھے جنہوں نے متاثرہ مشین پر سروس سے انکار کا حملہ پیدا کرنے میں اس مسئلے کے استحصال کو روکا۔ یہ سب پروسیسر ہینگ کے لیے ذمہ دار ناقص بس رسائی کے نمونے کو زبردستی توڑنے پر مبنی تھے۔ انٹیل کے مجوزہ (اس لیے "آفیشل") حلوں کے لیے انٹرپٹ ڈسکرپٹرز کی میز کو غیر فطری انداز میں ترتیب دینے کی ضرورت تھی جس نے پروسیسر کو غیر متعین-آپکوڈ رعایت کے لیے ڈسکرپٹر پر مشتمل میموری تک رسائی حاصل کرنے سے پہلے ایک مداخلت والے پیج فالٹ جاری کرنے پر مجبور کر دیا۔ یہ غیر معمولی میموری رسائی بس انٹرفیس کے لیے لاکنگ کی ضرورت کو ختم کرنے کے لیے کافی ثابت ہوئی جو کہ بگ کی بنیادی وجہ تھی۔ خاص طور پر، انٹرپٹ ڈسکریپٹرس کی میز، جو عام طور پر ایک میموری پیج پر رہتی ہے، اس کے بجائے دو صفحات پر تقسیم ہوتی ہے تاکہ پہلے سات مستثنی ہینڈلرز کے لیے ڈسکریپٹرس ایک پیج پر رہیں، اور ٹیبل کے بقیہ حصے اگلے پیج پر ہوں۔ غیر متعین اوپی کوڈ رعایت کے لیے ہینڈلر پھر پہلے صفحے پر آخری وضاحتی ہوتا ہے، جبکہ پیج فالٹ رعایت کے لیے ہینڈلر دوسرے صفحے پر رہتا ہے۔ پہلے صفحے کو اب غیر موجود بنایا جا سکتا ہے (عام طور پر کسی ایسے صفحے کی نشاندہی کرتا ہے جسے کچھ دوسرے ڈیٹا کے لیے جگہ بنانے کے لیے ڈسک پر تبدیل کر دیا گیا ہے)، جو پروسیسر کو پیج فالٹ کے استثنی ہینڈلر کے لیے ڈسکرپٹر لانے پر مجبور کرے گا۔ میز کے دوسرے صفحے پر رہنے والا یہ ڈسکریپٹر ہمیشہ کی طرح میموری میں موجود ہوتا ہے (اگر ایسا نہ ہوتا تو پروسیسر ڈبل اور پھر ٹرپل فالٹ ہوتا، جس کی وجہ سے شٹ ڈاؤن ہوتا)۔ یہ اضافی میموری سائیکل اصل غیر قانونی ہدایت کے ذریعہ جاری کردہ میموری لاکنگ کی ضرورت کو ختم کرتے ہیں (چونکہ فالٹنگ ہدایات کو استثنی ہینڈلر کی واپسی کے بعد دوبارہ شروع کرنے کے قابل ہونا چاہیے)۔ تاہم، انٹرپٹ ڈسکرپٹر ٹیبل کے پہلے نصف حصے کے لیے گمشدہ صفحہ فراہم کرنے کی ضرورت سے نمٹنے کے لیے پیج فالٹ رعایت کے لیے ہینڈلر میں ترمیم کرنا پڑتی ہے، یہ ایک ایسا کام ہے جسے عام طور پر انجام دینے کی ضرورت نہیں ہوتی ہے۔ انٹیل کے دوسرے سرکاری حل نے تمام صفحات کو میموری میں موجود رکھنے کی تجویز پیش کی، لیکن پہلے صفحے کو صرف پڑھنے کے لیے نشان زد کیا۔ چونکہ شروع ہونے والی غیر قانونی ہدایت کو میموری رائٹ سائیکل جاری کرنا تھا، اس لیے یہ پیج فالٹ ہینڈلر کی مداخلت کو دوبارہ مجبور کرنے کے لیے کافی ہے۔ اس ورژن کا فائدہ یہ ہے کہ پیج فالٹ ہینڈلر کے لیے درکار تبدیلیاں پہلے ورژن کے لیے درکار تبدیلیوں کے مقابلے میں بہت کم ہیں۔ اسے بنیادی طور پر صرف غیر متعین-استثنی ہینڈلر کی طرف ری ڈائریکٹ کرنے کی ضرورت ہے جب مناسب ہو۔ تاہم، اس متغیر کے لیے ضروری ہے کہ آپریٹنگ سسٹم کو خود کو صرف پڑھنے والے صفحات پر لکھنے سے روکا جائے (عالمی پروسیسر فلیگ کی ترتیب کے ذریعے)، اور تمام دانے اس طرح سے ڈیزائن نہیں کیے گئے ہیں۔ حقیقت میں حالیہ دانے ہیں، کیونکہ یہ وہی بنیادی طریقہ کار ہے جو کاپی آن رائٹ کو نافذ کرنے کے لیے استعمال ہوتا ہے۔ انٹیل کے سرکاری طریقوں کے علاوہ اضافی حل تجویز کیے گئے ہیں۔ بہت سے معاملات میں یہ موثر اور نافذ کرنے میں بہت آسان ثابت ہوئے۔ سب سے آسان میں صرف انٹرپٹ ڈسکرپٹرز پر مشتمل صفحہ کو غیر کیشیبل کے طور پر نشان زد کرنا شامل تھا۔ ایک بار پھر، اضافی میموری سائیکل جن سے پروسیسر کو ہر بار ریم سے ڈیٹا حاصل کرنے کے لیے مجبور کیا جاتا تھا جب اسے ایک رعایت ہینڈلر کو طلب کرنے کی ضرورت ہوتی تھی، ایسا لگتا تھا کہ پروسیسر کو لاک ہونے سے روکنے کے لیے اس کی ضرورت تھی۔ اس معاملے میں، کسی بھی مستثنی ہینڈلر میں کسی بھی طرح کی ترمیم کی ضرورت نہیں تھی۔ اور، اگرچہ سختی سے ضروری نہیں ہے، اس معاملے میں انٹرپٹ ڈسکرپٹر ٹیبل کی ایک ہی تقسیم کی گئی تھی، جس میں صرف پہلا صفحہ غیر کیشیبل نشان زد تھا۔ یہ کارکردگی کی وجوہات کی بناء پر تھا، کیونکہ زیادہ تر وضاحتیں (اور جن کی زیادہ کثرت سے ضرورت ہوتی ہے، حقیقت میں) والا صفحہ کیش میں رہ سکتا ہے۔ نامعلوم وجوہات کی بناء پر، ان اضافی، غیر سرکاری حل کی انٹیل نے کبھی توثیق نہیں کی۔ یہ ہو سکتا ہے کہ یہ شبہ تھا کہ وہ تمام متاثرہ پروسیسر ورژن کے ساتھ کام نہیں کر سکتے ہیں۔ سی ایم پی ایکس سی ایچ جی 8 بی ڈینیئل آف سروس اٹیک پینٹیم ایف ڈی آئی وی بگ میلٹ ڈاؤن (سیکیورٹی کمزوری) سپیکٹر (سیکیورٹی کمزوری) حوالہ جات مزید پڑھنا بیرونی روابط انٹیل پینٹیم ایراٹم مائیکروسافٹ نالج بیس مضمون F00F CVE بگ انٹری X86 فن تعمیر ڈینیئل آف سروس حملے ہارڈ ویئر کیڑے کمپیوٹر لوک داستان 1997 کمپیوٹنگ میں