سطح دسترسی
سطح دسترسی (به انگلیسی: Privilege Level) در مجموعه دستورالعملهای اکس-۸۶، دسترسی به منابع پردازنده چون بخشهای حافظه، درگاههای I/O، دستورالعملهای ویژه و ... را برای برنامه در حال اجرا کنترل میکند. در این معماری درمجموع چهار سطح دسترسی وجود دارد که از پایینترین (سطح ۳) تا بالاترین (سطح ۰) درجهبندیشدهاند. اکثر سیستمعاملهای نوین از سطح دسترسی ۰ برای اجرای هسته سیستمعامل و از سطح ۳ جهت اجرای برنامههای سطح کاربر بهره میجویند. باید توجه داشت که تمامی مجوزهای موجود در سطح n، در سطوح ۰ تا n نیز وجود خواهند داشت، بنابراین سطوح همچون حلقه عمل میکنند.
بهطورکلی نیازی به استفاده از تمامی این ۴ سطح دسترسی نیست. اکثر نرمافزارهای موجود تنها از دو سطح دسترسی ۰ و ۳ استفاده کرده و دیگر سطوح ارائهشده توسط پردازندههای نسل ۸۰۳۸۶ به بعد را با بینیازی، رها میکنند. یک سامانه تک سطحی (همچون سیستمعامل DOS) باید از سطح ۰ بهره جسته و یک سامانه دوسطحی (همچون لینوکس و ویندوز) باید از سطوح ۰ و ۳ استفاده کند. سطح ۰ بانامهایی چون سطح سرپرست و سطح هسته نیز شناختهشده و سطح ۳ نیز بهطورمعمول بانام سطح کاربر یاد میشود. شایانذکر است که تمامی نسخههای ویندوز بر پایه NT، تنها از دو سطح ۰ و ۳ بهره میجویند. پیشتر، برنامههای نگاشته شده برای وضعیت حقیقی (چون برنامههای DOS) تنها در سطح دسترسی ۰ اجرا میگشتند درحالیکه وضعیت ۸۰۸۶ مجازی، آنها را در سطح دسترسی ۳ اجرا میکند.
دستورالعملهای ویژه
برخی دستورالعملها که بانام دستورالعملهای ویژه شناخته میشوند، تنها جهت اجرا در سطح دسترسی ۰ ایجاد و محدود شدهاند. این دستورالعملها بهطورکلی، مقادیر بخشهای اصلی یک سامانه را تغییر داده یا کنترل میکنند (بهطور مثال بارگذاری ثباتهای کنترلکننده پردازنده). درصورتیکه یکی از این دستورالعملها در سطحی به جز ۰ اجرا شود، خطای عمومی محافظت (به انگلیسی: General Protecting Exception- #GP) رخ میدهد. برخی از این دستورالعملها به شرح زیرند.
- دستور LGDT، جهت بارگذاری ثبات GDT (مرتبط با مدیریت حافظه)
- دستور LTR، جهت بارگذاری ثبات وظیفه (مرتبط با مدیریت وظیفه و اجرای موازی)
- دستور INVLPG، مشخص کردن یک مدخل نامعتبر در تیالبی (مرتبط با مدیریت حافظه)