پردازنده یک جدول داره برای 256 تا وقفه ای که میتونه وجود داشته باشه که مشخص میکنه روتین اون وقفه فلان کجای حافظه است و چه کاری انجام میده.
یک تعداد کمی از این وقفه ها رزرو شده پردازنده است و مربوط به کارکرد اساسی خود پردازنده هستند و ربطی به سیستم عامل خاصی هم ندارند.
بجز یک سری وقفه های رزرو شده پردازنده، بقیه شون ممکنه توسط BIOS یا هر سیستم عاملی برای اجرای سرویس های خاصی تنظیم بشه، یعنی ممکنه فلان وقفه خاص در هر سیستم عاملی کارکرد متفاوتی داشته باشه.
بخش مربوط به BIOS که وقفه های BIOS هستند، همون ابتدا که سیستم جریان برق پردازنده رو تامین می کنه توسط مادربورد در لیست وقفه های پردازنده به ثبت رسیده و حتی قبل از اینکه سیستم عاملی بخواد بوت بشه در دسترس قرار میگیره،
برای همین شما هر جور سیستم عاملی که بخواهید با اون مادربورد بوت کنید از همون ابتدای کار به وقفه های BIOS دسترسی داره.
اما وقفه های DOS یا وقفه های هر سیستم عامل دیگری فقط زمانی وجود دارند که اون سیستم روتین شون رو در حافظه قرار بده و در جدول وقفه ها آدرسشون رو به ثبت برسونه.
برای همین هیچ سیستم عاملی وقفه های سیستم عامل دیگری رو اجرا نمی کنه، دقیقا وقفه هایی رو اجرا می کنه که موقع بوت شدن خودش در حافظه قرار داده و به ثبت رسونده.
طبعا هم روتین وقفه های سیستم عاملی که باهاش ناسازگاره بدردش نمی خوره، مثلا سیستم فایل MS-DOS که FAT ئه سرویس های فایل اش هم برای همین سیستم فایل طراحی شده و بدرد اجرا در لینوکس با سیستم فایل ext نمیخوره.
برای اجرا کردن وقفه های سیستم عاملی در سیستم عامل دیگری اصولا از محیط مجازی استفاده می کنند، مثلا DOSEMU میومد محیط DOS رو در لینوکس شبیه سازی میکرد.