Прерывания BIOS, уровни привилегий и подкачка

744
Peter Mortensen

Я изучал процессоры Intel 8086-80486 и их взаимодействие с оборудованием. Но я все еще не очень хорошо понимаю. Пожалуйста, помогите мне заполнить пустые места.

Во-первых, я знаю, что процессор взаимодействует с оборудованием с помощью прерываний BIOS. Но что на самом деле происходит в ПК, когда я вызываю некоторую инструкцию INT? Я знаю, что согласно таблице прерываний начинают выполняться некоторые инструкции, но как, выполнив некоторые инструкции, BIOS может распознать, что я хочу сделать? Потому что, насколько я знаю, у CPU нет дополнительного канала связи с BIOS, он может только адресовать память и получать данные. Так как я могу поручить BIOS делать что-то, когда я могу обращаться только к оперативной памяти?

Следующая вещь, которую я не понимаю, об уровнях привилегий. Я знаю о модели кольца и правах доступа, но как процессор узнает, какой уровень привилегий выполнил инструкцию? Я думаю, что эти привилегии применяются только тогда, когда intruction пытается обратиться к памяти, но как приложение получает свой уровень привилегий? Я имею в виду, я знаю его уровень 3, но как он установлен?

И, наконец, я знаю, что подкачка - это адресная схема, которая используется для поддержки прозрачной для приложений виртуальной памяти или подкачки, но я не смог найти никакой информации о том, как подкачка связана с защищенным режимом. Например, если пейджинг подобен следующему режиму, независимому от защищенного режима, или он каким-то образом реализован в защищенном режиме. И если он реализован в защищенном режиме, не слишком ли медленно он сначала обращается к пространству приложения, затем смещению, а затем к папке подкачки, странице и смещению еще раз?

0
@ Джек, вы можете получить лучшие результаты, если разделите свой вопрос на пару кратких и конкретных вопросов, а не на один большой. heavyd 14 лет назад 0
Хорошо, я сделаю это, спасибо. 14 лет назад 0

1 ответ на вопрос

2
Tomas Lachman

Есть 2 режима: реальный и защищенный. В реальном режиме вы можете адресовать только 1 МБ памяти. Прерывания BIOS доступны только в реальном режиме. Адреса A0000 - FFFFF сопоставлены: A0000 - BFFFF - видеопамять, F0000 - FFFFF - ПЗУ BIOS, в котором находится код подпрограмм обработки прерываний BIOS. В реальном режиме нет никаких уровней привилегий. Если вы выполняете инструкцию «int n», это происходит: флаги, cs, ip сохраняются в стеке. Слово в n * 4 + 2 загружается в cs, а слово в n * 4 загружается в ip.

Защищенный режим запускается установкой бита 0 регистра cr0. Тогда у вас есть 4 уровня привилегий. Но перед его запуском необходимо включить A20, установить базы прерываний IRQ 0-7 и IRQ 8-15, создать IDT, GDT.

Пейджинг начинается с установки бита 31 в cr0. Перед его запуском вы должны создать каталог страниц и таблицы страниц и установить cr3 так, чтобы он указывал на каталог страниц.

Похожие вопросы