وضعیت ۸۰۸۶ مجازی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در ریزپردازنده‌های سری ۸۰۳۸۶ و به بعد، وضعیت ۸۰۸۶ مجازی (که با نام‌های وضعیت حقیقی مجازی، وضعیت V86 و یا VM86 نیز شناخته می‌شود) اجازه می‌دهد برنامه‌های نگاشته شده برای وضعیت حقیقی (به طور مثال برنامه‌های نگاشته شده برای سیستم عامل DOS)، که توانایی اجرا در وضعیت محافظت شده را ندارند، اجرا شوند. در این وضعیت می‎توان با مجازی سازی سخت‌افزاری، چندین پردازنده ۸۰۸۶ را بر روی یک چیپ ۳۸۶ شبیه‌سازی کرد.

وضعیت VM86 جهت آدرس‌دهی از ساختار قطعه‌بندی حافظه (به انگلیسی: Memory Segmentation) استفاده می‌کند.این وضعیت برای شبیه‌سازی وضعیت حقیقی، درست همانند وضعیت حقیقی یک فضای آدرس‌دهی ۲۰-بیتی خطی ایجاد می‌کند، اما حافظه ایجاد شده، همچون حافظه‌های وضعیت محافظت‌شده، با روش صفحه‌بندی مدیریت می‌شوند.

کاربرد[ویرایش]

وضعیت VM86 جهت اجرای برخی برنامه‌های DOS در سیستم عامل‌های اواس/۲، ویندوز 9x/ویندوز ام‌ای و بعد تر در ماشین مجازی DOS استفاده گشت. علاوه بر این SCO UNIX در Merge و لینوکس در dosemu از این وضعیت بهره می‌جویند. ویندوزهای بر پایه NT جهت اجرای برنامه‌های DOS از وضعیت VM86 در زیر سامانه NTVDM استفاده می‌کنند.

تشخیص وضعیت ۸۰۸۶ مجازی[ویرایش]

تشخیص قرار داشتن در یکی از وضعیت‌های ۸۰۸۶ مجازی یا حقیقی، برای یک برنامه نگاشته شده برای وضعیت حقیقی می‌تواند مفید باشد. برای رسیدن به این هدف، می‌توان در یک برنامه وضعیت حقیقی، بخش ابتدایی ثبات CR0 را با استفاده از دستور SMSW[۱] بررسی کرد. بیت PE[۲] از این ثبات نشانگر فعال و یا غیرفعال بودن وضعیت محافظت‌شده است. بنابراین درصورتی که برنامه در وضعیت ۸۰۸۶ مجازی اجراشده باشد، این بیت فعال است. چراکه وضعیت ۸۰۸۶ مجازی درون وضعیت محافظت‌شده اجرا می‌شود. تکه کد زیر این رهیافت را با زبان ماشین، بازگو می‌کند[۳]:

detect_v86:
   smsw    ax
   and     eax,1           ;CR0.PE bit
   ret

منابع[ویرایش]

  1. «SMSW -- Store Machine Status Word». بازبینی‌شده در ١ خرداد ١٣٩٣. 
  2. «MSW - Machine Status Word (286+ only)». بازبینی‌شده در ١ خرداد ١٣٩٣. 
  3. «Virtual 8086 Mode». بازبینی‌شده در ١ خرداد ١٣٩٣. 
  • مشارکت‌کنندگان ویکی‌پدیا، «Virtual 8086 mode»، ویکی‌پدیای انگلیسی، دانشنامهٔ آزاد.