- •Системное программное обеспечение Учебное пособие
- •Введение
- •1.Основные понятия
- •1.1.Функции и ресурсы ос
- •1.2.Структура программного обеспечения
- •1.3.Режимы функционирования компьютера
- •1.4.Классификация ос
- •1.5.Состав ос
- •2.Управление памятью
- •2.1. Основная память
- •2.2.Регистровая память
- •2.3.Кэш память
- •2.4.Организация основной памяти
- •2.4.1.Режимы работы процессоров Intel
- •2.4.2.Преобразование логического адреса в физический в реальном режиме
- •2.4.3.Адресация памяти в защищенном режиме
- •2.5.Управление памятью
- •2.5.1.Модели памяти
- •2.5.2.Динамическое распределение памяти
- •2.5.3.Динамическое распределение памяти в windows nt
- •2.5.4.Функции ос по управлению основной памятью
- •2.6.Виртуальная память
- •2.6.1.Преобразование виртуального адреса в реальный
- •2.6.2.Страничная организация
- •2.6.3.Сегментная организация
- •2.6.4.Странично-сегментная организация
- •2.6.5.Сплошная модель памяти flat
- •2.6.6.Функции для доступа к виртуальной памяти
- •2.6.6.1Освобождение виртуальной памяти
- •2.6.6.2Фиксирование страниц основной памяти
- •2.6.7.Стратегии управления виртуальной памятью
- •2.6.7.1Определение оптимального размера страниц
- •2.6.7.2Поведение программ при подкачке страниц
- •3.Процессы и задачи. Мультипроцессорные системы
- •3.1.Управление процессами
- •3.1.1.Блок управления процессом (pcb)
- •3.1.2.Управление асинхронными параллельными процессами
- •3.2.Мультизадачность
- •3.2.1.Виды мультизадачности:
- •3.2.2.Процессы и задачи
- •3.2.3.Распределение времени между задачами
- •3.2.4.Процессовая мультизадачность
- •3.2.5.Потоковая мультизадачность
- •3.2.6. Синхронизация задач
- •3.2.6.1Ожидание завершения задачи или процесса
- •3.2.6.2Синхронизация с помощью событий
- •3.2.7.Взаимоисключение
- •3.2.7.1Критические секции в программном интерфейсе windows
- •3.2.7.2Блокирующие функции
- •3.2.8.Семафоры
- •3.3.Тупики
- •3.3.1.Условия возникновения тупика
- •3.3.2.Предотвращение тупиков
- •3.3.3. Обход тупиков
- •3.3.4.Обнаружение тупиков
- •3.3.5.Восстановление после тупика
- •3.4.Средства обеспечения мультизадачности в защищенном режиме работы процессора Intel
- •3.4.1.Переключение задач
- •3.5.Обработка прерываний
- •3.5.1.Обработка прерываний в защищенном режиме
- •3.5.2.Обработка аппаратных прерываний
- •3.6.Управление потоками заданий. Планирование заданий и загрузка процессоров
- •3.6.1.Цели планирования
- •3.6.2.Критерии планирования
- •3.6.3.Дисциплины планирования
- •3.6.4.Многоуровневые очереди с обратными связями
- •3.7.Мультипроцессорные архитектуры. Планирование загрузки ресурсов
- •3.7.1.Параллелизм
- •3.7.2.Цели мультипроцессорных систем
- •3.7.3.Автоматическое распараллеливание
- •3.7.3.1Расщепление цикла
- •3.7.3.2Редукция высоты дерева
- •3.7.4.Мультипроцессорные операционные системы
- •3.7.5.Организация мультипроцессорных операционных систем
- •3.7.6.Производительность мультипроцессорных систем
- •3.7.7.Экономическая эффективность мультипроцессорных систем
- •3.7.8.Восстановление после ошибок
- •3.7.9.Перспективы мультипроцессорных систем
- •4.Управление внешней памятью и файловые системы
- •4.1.Структура дискового тома. Таблица разделов
- •4.2.Управление данными
- •4.2.1.Организация данных
- •4.2.2.Методы доступа
- •4.3. Файловые системы
- •4.3.1.Файловая система fat
- •4.3.2.Файловая система fat32
- •4.3.3.Функции windows api для работы с директориями
- •4.3.4.Файловая система windows 95
- •4.3.5.Файловая система нpfs (os/2)
- •4.3.5.1 Структура тома
- •4.3.5.2Файлы и Fnodes
- •4.3.5.3Каталоги
- •4.3.5.4Расширенные атрибуты
- •4.3.5.5Инсталлируемые файловые системы
- •4.3.5.6Проблемы эффективности
- •4.3.5.7Отказоустойчивость
- •4.3.6.Файловая система ntfs (Windows nt)
- •4.3.6.1Главная файловая таблица
- •4.3.6.2Атрибуты файла ntfs
- •4.3.6.3Длинные и короткие имена файлов
- •4.3.6.4Потоки данных
- •4.3.6.5Согласованность с posix
- •4.4.Асинхронные операции с файлами
- •4.5.Файлы, отображаемые на память
- •4.5.1.Создание отображения файла
- •4.5.2.Выполнение отображения на память
- •5.Средства ввода информации
- •5.1.Аппаратные и программные средства ввода информации с клавиатуры
- •5.1.1.Анализ и преобразование скэн-кода
- •5.1.2.Буфер клавиатуры
- •5.1.3.Схема работы буфера
- •5.1.4.Ввод информации с клавиатуры в Windows
- •5.1.4.1Поддержка горячих клавиш (нot-key)
- •5.1.4.2Языки и локализация
- •5.2.Управление манипулятором "мышь"
- •5.2.1.Аппаратные средства манипулятора
- •5.2.2.Программная поддержка "мыши" (на примере ms dos)
- •5.2.3.Основные функции интерфейса программы с манипулятором "мышь" (int 33н)
- •5.2.4.Чтение позиции курсора и состояния кнопок "мыши"
- •5.2.5.Управление мышью в приложениях Windows
- •5.2.5.1Обработка двойного щелчка (Double-Click Messages)
- •5.2.5.2Сообщения неклиентской области
- •5.2.5.3Активизация окна
- •6.Сетевые операционные системы
- •Литература
- •Оглавление
- •Учебное издание
- •394026 Воронеж, Московский просп., 14
2.4.2.Преобразование логического адреса в физический в реальном режиме
Компоненты логического адреса располагаются в сегментном регистре и регистре-указателе (или РОН):
CS:IP
Seg:OffSet
Адрес реального режима Intel 8086 является 20-ти разрядным, что позволяет адресовать пространство в 1 Мб памяти. Чтобы из двух 16-ти разрядных компонент получить 20-ти разрядный адрес, используем алгоритм: сегмент сдвигаем влево на 1 шестнадцатеричную цифру (4 разряда) и складываем со смещением.
Пример: 40:1С - логический адрес
0040: 001С - слова сегмента и смещения
--------------
00400 - сдвиг сегмента влево
+
001С - сложение со смещением
-----
0041С - физический адрес
Такая схема позволяет создавать хорошо перемещаемые программы.
Недостатки:
1) позволяет адресовать память небольшого размера;
2) нет возможности организовать защиту отдельных сегментов памяти от несанкционированного доступа;
3) невозможно установить уровень привилегий для различных категорий выполняемых задач.
2.4.3.Адресация памяти в защищенном режиме
В защищенном режиме применяются две схемы адресации: одноступенчатая и двухступенчатая. В любом случае оперируют понятиями логического и физического адреса.
Физический адрес получается из логического при одноступенчатой схеме за одно преобразование, а при двухступенчатой - за два.
Логический адрес состоит из двух компонент: селектора и смещения. Селектор содержит индекс в таблице дескрипторов (описателей) сегментов. Селектор имеет следующую структуру:
RPL - запрашиваемый уровень привилегий (2 бита);
TI - индикатор таблицы: 0- поиск дескриптора выполняется в глобальной дескрипторной таблице GDT, 1 - поиск осуществляется в локальной дескрипторной таблице LDT.
GDT содержит дескрипторы сегментов ОС, а также адреса локальных таблиц. В системе может быть только одна глобальная таблица дескрипторов. Для адресации таблиц используются регистры GDTR (рис. 8) и LDTR.
Рис. 8. Формат регистра GDTR
Предел хранит протяженность таблицы. Поле предела позволяет контролировать обращение к таблице по индексу. Базовый адрес таблицы показывает реальный адрес расположения таблицы в основной памяти.
Регистр глобальной таблицы загружен постоянным содержимым, а значение локального регистра меняется при переключениях между локальными дескрипторными таблицами.
Схема одноступенчатого преобразования адреса представлена на рис. 9.
Рис. 9. Одноступенчатого преобразования адреса
Записи с нулевым индексом в таблицах не используются.
Структура дескриптора сегмента:
Поле предела служит для контроля и защиты адресов данного сегмента. Протяженность поля - 20 разрядов (16+4).
G - бит гранулярности, который позволяет по-разному интерпретировать поле предела. G=1 - предел указывает максимальное число страниц в сегменте (1 страница - 4К); G=0 - размер сегмента указан в байтах.
Х указывает разрядность команды: 1- 32-хразрядные, 0- 16-тиразрядные.
AVL - бит, используемый ОС.
Доступ - структура, которая описывает тип сегмента. Различают сегменты кода, данных и системный (рис. 10.).
Рис. 10. Типы сегментов
P, A - предназначены для организации виртуальной памяти;
А - бит обращения к сегменту, устанавливается в 1 для тех сегментов, к которым было обращение. Сбрасывается в 0 процессором;
Р - бит присутствия сегментов в памяти;
DPL - двухбитовое поле - номер кольца защиты сегмента (допустимый уровень привилегий), максимальная привилегия 0, минимальная - 3;
С - бит подчинения. С=0 - сегмент может быть вызван только программой с не менее высоким приоритетом, чем у самого сегмента, С=1 - сегмент может быть вызван любой программой, но уровень привилегий выставляется как у вызывающей программы;
R - бит разрешения чтения.
D - направление расширения сегмента. D=1 - сегмент расширяется вниз от старших адресов к младшим (стек), D=0 - наоборот;
W - возможность записи в сегмент. W=1 - запись разрешена, W=0 - разрешено только чтение. С помощью этого бита можно установить дополнительный уровень защиты сегмента.
TYPE - тип того или иного сегмента. Код, который задан в этом поле, определяет назначение сегмента. Различают следующие виды:
- TSS - сегмент состояния задачи
- LDT - сегмент локальной дескрипторной таблицы
- вентиль вызова
- вентиль прерывания
- вентиль исключения.
Вентиль - точка входа или адрес в ту или иную функцию или подпрограмму. Исключение - особая ситуация, возникающая при исполнении приложения: деление на 0, исчезновение порядка, отсутствие страницы в основной памяти.