Отредактировано, чтобы добавить ваш фактический ответ : Программная архитектура защищенного режима Том ШенлиАддисон-Уэсли Профессионал (16 марта 1996 г.)ISBN-10: 020155447XISBN-13: 978-0201554472 googlebook , amazon
Мой ответ
Вы смотрели "Понимание ядра Linux", 3-е издание?Он доступен через Safari, и, вероятно, это хорошее место для начала работы с ОС - я не думаю, что он дает подробности, но это отличное руководство, в котором, вероятно, будут приведены исходные тексты ядра и архитектуры Linux.конкретные вещи в контексте.В следующих главах приведено описание, которое вы запрашиваете со стороны ядра («связь между оборудованием и ОС, когда происходит прерывание или переключение контекста»):
- Глава 3: Процессы
- Глава 4: Прерывания и исключения
- Глава 7: Планирование процесса
Понимание ядра Linux, 3-е изд .Даниэль П. Бове;Марко ЧезатиИздатель: O'Reilly Media, Inc.Паб.Дата: 17 ноября 2005 г.Печать ISBN-13: 978-0-596-00565-8Печать ISBN-10: 0-596-00565-2 Safari , Amazon
Моя рекомендация - это книга, подобная этой, с исходным кодом linux, руководствами для Intel и полным холодильником пива, и вы будетевыключен и работает.
Краткий фрагмент из Главы 3: Процессы, чтобы подогреть аппетит:
3.3.2.Сегмент состояния задачи Архитектура 80 × 86 включает в себя определенный тип сегмента, называемый сегментом состояния задачи (TSS), для хранения контекстов оборудования.Хотя Linux не использует аппаратные переключатели контекста, тем не менее, он вынужден устанавливать TSS для каждого отдельного процессора в системе.Это делается по двум основным причинам:
- Когда процессор 80 × 86 переключается из режима пользователя в режим ядра, он выбирает адрес стека режима ядра из TSS (см. Разделы «Аппаратная обработка прерываний иИсключения »в главе 4 и« Выполнение системного вызова с помощью инструкции sysenter »в главе 10).
- Когда процесс пользовательского режима пытается получить доступ к порту ввода / вывода с помощью команды ввода или вывода,ЦП может потребоваться доступ к битовой карте разрешений ввода-вывода, хранящейся в TSS, чтобы проверить, разрешено ли процессу обращаться к порту.
Точнее, когда процесс выполняет инструкцию ввода-вывода в пользовательском режиме.В этом режиме блок управления выполняет следующие операции:
- Проверяет 2-битное поле IOPL в регистре eflags.Если установлено значение 3, блок управления выполняет инструкции ввода / вывода.В противном случае он выполняет следующую проверку.
- Он обращается к регистру tr для определения текущего TSS и, следовательно, правильного битового массива разрешения ввода / вывода.
- Он проверяет бит ввода / выводаРазрешение Bitmap, соответствующее порту ввода / вывода, указанному в инструкции ввода / вывода.Если он очищен, инструкция выполняется;в противном случае блок управления создает исключение «Общая защита».
Структура tss_struct описывает формат TSS.Как уже упоминалось в главе 2, массив init_tss хранит один TSS для каждого процессора в системе.При каждом переключении процесса ядро обновляет некоторые поля TSS, чтобы соответствующий блок управления ЦП мог безопасно извлекать нужную ему информацию.Таким образом, TSS отражает привилегии текущего процесса на ЦП, но нет необходимости поддерживать TSS для процессов, когда они не запущены.
Еще одна потенциальная ссылка в том же духе - это та, которая имеет гораздо больше специфических для x86 вещей, и вы можете немного выиграть от контраста с PowerPC. Linux® Kernel Primer, The: нисходящий подход для архитектур x86 и PowerPC Клаудия Зальцберг Родригес;Гордон Фишер;Стивен СмольскиИздатель: Прентис ХоллПаб.Дата: 19 сентября 2005 г.Печать ISBN-10: 0-13-118163-7PriNT ISBN-13: 978-0-13-118163-2 Safari , Amazon
Наконец, Разработка ядра Linux от Robert Love, 3-е издание , содержит довольно подробное описание переключения контекста, хотя ибыть лишним с вышесказанным.Это довольно фантастический ресурс.