حالت واحد پردازنده مرکزی
حالت واحد پردازش مرکزی (به انگلیسی: CPU mode) همان «حالت عملیاتی» برای واحد پردازش مرکزی بعضی از معماریهای رایانه است که محدودیتهایی روی نوع و محدوده عملیات فرایندهای اجراشونده توسط CPU، قرار میدهد. این طراحی به سیستمعامل اجازه میدهد تا با مجوزهای بیشتری نسبت به نرمافزار کاربردی اجرا شود. به «حالت CPU»، حالت پردازنده، وضعیت پردازنده، مراحل مجوزدهی CPU و موارد دیگر، هم میگویند.
به صورت ایدهآل، تنها کدهای هسته ی بسیار قابل اعتماد و درستیسنجیشده، مجوز اجرا در حالت غیرمحدودشده را دارد؛ هر چیز دیگر (که شامل بخشهای غیرناظری سیستمعامل هم میشود) در حالت محدودشده اجرا میشود، و باید حتماً از صدازدن سیستم (از طریق وقفه) استفاده کند تا به هسته درخواست آن را بدهد تا از جانب خودش، عملیاتی را انجام دهد (این عملیات ممکن است به سامانه آسیب بزند یا آن را به خطر اندازد). اهمیت این موضوع آن است که برای برنامههای غیرقابلاعتماد، این موضوع را غیرممکن میسازد که به برنامههای دیگر (یا خود سامانه رایانهای) آسیب بزند یا آنها را تغییر بدهد.
با این حال، در عمل، فراخوانهای سیستمی «زمانبر» هستند، و ممکن است به عملکرد (کارایی) سامانه رایانهای آسیب بزند، از این رو برای طراحان سامانه غیرمعمول نیست که به بعضی از نرمافزارهای زمان-بحرانی (مخصوصا درایورهای دستگاه) اجازه بدهند که با مجوزدهی کامل هستهای اجرا گردند.
چندین حالت میتواند پیادهسازی گردد- که به ناظر ارشد (هایپروایزر) اجازه میدهد تا چندین سرپرست (ناظر) سیستمعامل زیر خود را اجرا کند، این موضوع طراحی اساسی خیلی از سامانههای ماشین مجازی است که امروزه در دسترس میباشند.
انواع حالت
[ویرایش]اغلب به حالت بدونمحدودیت حالت هسته (حالت کرنل) گفته میشود، اما نامگذاریهای دیگری هم وجود دارد (حالت مستر، حالت سرپرست (ناظر)، حالت مجوزدهیشده، و غیره). به حالتهای محدودشده معمولاً «حالتهای کاربری» گفته میشود، اما با نامهای دیگری هم شناخته میشود (حالت اسلیو (برده)، حالت مسئله، و غیره).
هسته (کرنل)
[ویرایش]در حالت هسته، CPU هر عملیات مجاز از نظر معماری مجاز را، میتواند انجام دهد، هر دستورالعملی قابل اجرا است، هر عملیات I/O ای قابل شروع است، هر محدوده از حافظه قابل دسترسی است، و غیره. در حالتهای دیگر CPU، محدودیتهای معینی روی عملیات CPU توسط سختافزار اعمال (مجبورسازی) میشود. معمولاً دستورالعملهای خاصی مجوز ندارند (مخصوصا دستورالعملهایی - شامل عملیات I/O- که میتواند حالت سراسری (جهانی) ماشین را تغییر دهد)، ممکن است محدودههایی از حافظه قابل دستیابی نباشد، و غیره. توانمندیهای کاربری CPU معمولاً زیرمجموعهای از توانمندیهای در دسترس حالت هسته است، اما در حالات خاصی، مثل شبیهسازی سختافزاری معماریهای غیرمحلی، میتوانند به صورت قابل ملاحظهای با توانمندیهای در دسترس در حالت هسته استاندارد متفاوت باشند.
کاربر
[ویرایش]بعضی از معماریهای CPU از چندین حالت کاربر پشتیبانی میکنند، که معمولاً سلسلهمراتبی از مجوزدهی دارند. به این معماریها، «امنیت مبتنی بر حلقه» میگویند، که در آن سلسلهمراتب مجوزدهی مشابه مجموعهای از حلقههای متحدالمرکز است، که حالت هسته در مرکزیت آن قرار دارد. معماری مولتیکس (Multics) اولین پیادهسازی قابل توجه برای امنیت حلقهای بود، اما چندین بنسازه (سکو) سختافزاری دیگر طراحی شدهاست که از این خطوط راهنما پیروی میکند، که شامل حالت حفاظتشده اینتل ۸۰۲۸۶، و همچنین IA-64 میشود، اگرچه اینها، با نامهای دیگری شناخته میشوند.
حفاظت حالت را میتوان به منابعی فرای خود سختافزار CPU گسترش دارد. ثباتهای سختافزاری، حالت عملیاتی فعلی CPU را ردیابی میکنند، اما ثباتهای اضافی حافظه مجازی، ورودیهای جدول صفحه، و دیگر دادهها، میتواند شناسانههای حالت را برای دیگر منابع ردیابی کند. برای مثال، یک CPU میتواند در «حلقه ۰» اجرا گردد، این موضوع توسط یک کلمه وضعیت در خود CPU نشان داده میشود، اما هر دسترسی به حافظه را میتوان به صورت اضافی، دربرابر یک شماره حلقه جداگانه برای «قطعه حافظه-مجازی» مورد هدف، درستیآزمایی کرد، و/یا در برابر یک شماره حلقه برای «صفحه فیزیکی» مورد هدف (اگر موجود باشد) درستیآزمایی کرد. این موضوع در سامانه دستی پیاسپی ظاهر شدهاست.
سختافزاری که نیازمندیهای مجازیسازی پوپک و گولدبرگ را برآورده میسازد، امکان سادهسازی نوشتن نرمافزار را میدهد تا به صورت مؤثر و سادهتر از ماشین مجازی پشتیبانی کند. این سامانه، میتواند نرمافزاری را اجرا کند که «معتقد است» روی حالت سرپرست (ناظر) اجرا میشود، اما واقعاً در حالت کاربری اجرا میگردد.
پانویس
[ویرایش]منابع
[ویرایش]مشارکتکنندگان ویکیپدیا. «CPU mode». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۵ دی ۱۳۹۹.