
- •2. Теневая память
- •6.Недостатки ms-dos и пути их преодоления
- •7.Структура conventional памяти
- •9. Обработчики 09h и 16h клавиатуры
- •10. Extended память
- •Expanded память
- •Upper память
- •14.Структура данных на магнитных дисках
- •15. Клавиатура. Scan-код
- •16. Распределение памяти в реальном режиме
- •Адресация озу при использовании сегментации в защищённом режиме
- •19. Hma память
- •Механизм страничной адресации
- •23.Тест клавиатуры
- •24. Прерывания bios
- •Преобразование логического адреса в физический при включённой страничной адресации
- •26. Исключения и их обработка
- •27. Управление клавиатурой
- •28. Приоритет обработки прерываний
- •Привилегии и защита программ
- •30.Механизм виртуальной памяти
- •31.Дескрипторы сегментных регистров
- •32.Кэш память
- •33.Таблицы локальных и глобальных дескрипторов
- •34.Cga, vga адаптеры
- •Характеристики vga адаптеров
- •35.Таблица дескрипторов idt
- •37.Шлюзы и их применение
- •38.Понятие дескриптора
- •39. Адаптер дисплея
- •40.Функции dos и bios для клавиатуры
- •41 Пять компонентов защиты
- •42.Виртуальный 8086
- •43.Классы приоритетов
- •44.Многозадачный режим. Статические и динамические наборы
- •45.Шлюз задач
- •46. Библиотеки dll
- •Явная компоновка
- •47.Виртуальная память процессора
- •48.Адресное пространство w9х
- •49.Адресное пространство nt
- •51. Файл подкачки страниц
- •52. Два процесса – один ехе файл.
- •53. Физическая память и страничный файл
- •Физическая память в страничном файле не хранится
- •54. Алгоритм загрузки программ
- •56. Переданная и зарезервированная память
- •57.Разделы ехе файла
- •58. Проецируемые в память файлы
- •59.Механизмы работы с файлами больших размеров
- •60. Различия в обработке прерываний и исключений
44.Многозадачный режим. Статические и динамические наборы
Для эффективной работы по защите многозадачности в МП 80386/80286 применяются специальные структуры данных. Для этого не требуется использование новых команд, управляющих многозадачностью. Используются обычные команды передачи управления, которые обращаются к специальным структурам данных. Регистры и структуры данных, которые поддерживают многозадачность, включают в себя сегмент состояния задачи (TSS);
дескриптор сегмента состояния задачи;
регистр задачи (TR);
дескриптор шлюза задачи.
С помощью этих структур МП 80386/80286 может быстро переключиться с одной задачи на другую, сохраняя контекст исходной задачи так, что задача может быть в дальнейшем продолжена. В дополнение к простому переключению задач МП 80386/80286 предлагают два других средства управления задачами:
1) при переключении задач может возникнуть прерывание и исключительная ситуация (если этого требует система). Микропроцессор не только автоматически переключается на программу обработки прерывания или исключительной ситуации, но и осуществляет автоматический возврат, когда прерывание или исключительная ситуация будут обслужены. Задачное прерывание может прервать выполнение менее приоритетных задач любой глубины;
2) с каждым переключением на другую задачу МП 80386/80286 могут также переключаться на иную LDT и на иное оглавление страницы. Задача также может иметь разное логико-линейное и линейно-физическое распределение памяти. Есть еще и другие средства защиты, с помощью которых задачи могут быть изолированы и защищены одна от другой.
В многозадачных операционных системах для обозначения задач - участников процесса переключения - приняты следующие термины:
1) задача, сменяющая текущую (выполняемую в данный момент), называется входящей;
2) текущая задача, выполнение которой завершилось и которая сменяется входящей, называется уходящей.
45.Шлюз задач
Аналогично тому, как можно вызвать подпрограмму через шлюз вызова, для вызова задачи командой CALL можно использовать шлюз задачи. Формат шлюза задачи представлен на рис. 16.
Рис. 16. шлюз задачи.
Шлюзы задач, вызываемых по команде CALL, могут располагаться в таблицах GDT или LDT.
Существенное различие между вызовом подпрограммы и вызовом задачи. После возврата из подпрограммы при её повторном вызове мы войдём в процедуру в начальной точке входа. В аналогичном случае при возврате из задачи и её повторном вызове управление будет передано команде, находящейся сразу за командой IRET.
Это происходит потому, что при переключении задачи в сегменте TSS записывается содержимое регистров CS:IP на момент переключения задачи. Если задача была вызвана при помощи команды CALL и возврат (обратное переключение) было выполнено по команде IRET, в TSS записывается адрес CS:IP, указывающий на следующую после IRET команду. Вы можете поместить там команду безусловного перехода JMP на начало задачи и таким образом зациклить задачу. После этого вызов задачи станет похож на вызов подпрограммы.
Существует ещё одна очень интересная возможность для переключения задач - переключение задач по прерыванию.
Эту возможность можно легко реализовать, если поместить шлюз задачи в дескрипторную таблицу прерываний IDT. Например, можно сделать отдельные задачи для обработки исключений или аппаратных прерываний. В последнем случае обработчикам аппаратных прерываний не нужно использовать стек прикладных задач, так как они будут иметь свой собственный стек.