- •Системное программное обеспечение Учебное пособие
- •Введение
- •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.6.1.Преобразование виртуального адреса в реальный
Реальный адрес a таблицы загружается в специальный регистр начального адреса таблицы блоков. Таблица содержит по одной строке для каждого блока процесса, причем эти строки идут в порядке возрастания номеров (блок 0, блок 1, ...). Номер блока суммируется с адресом а, образуя реальный адрес строки таблицы для блока b. Эта строка содержит реальный адрес b' блока в реальной памяти. К b' прибавляется смещение d и образуется реальный адрес r=b'+d (рис. 11).
Рис. 11. Преобразование виртуального адреса в реальный
Существует два наиболее распространенных способа реализации виртуальной памяти - страничный и сегментный.
2.6.2.Страничная организация
Виртуальное и реальное адресные пространства делятся на страницы одинаковых размеров - страничные кадры. Виртуальный адрес V=(p,d) содержит номер страницы р и смещение в странице d. Процесс может выполняться, если страница с требуемым адресом находится в реальной памяти. Страничные кадры реальной памяти начинаются с адресов, кратных фиксированному размеру страницы. Страница из V может быть размещена в любом кадре.
Схема преобразования адреса: Процесс обращается по виртуальному адресу V. В таблице отображения ищется номер страницы p и определяется адрес в R страничного кадра p', а затем r, с учетом смещения d. Таблица отображения состоит из элементов, которые содержат номера страниц, в настоящий момент размещенных в памяти. Строка таблицы:
i - бит присутствия страницы в R (0 - нет, 1 - есть); S - адрес страницы во внешней памяти (при i=0); p'- номер страничного кадра в R (при i=1). Адрес R, с которого начинается кадр p' при размере страницы l определяется как r = l*p' + a .
В целях экономии памяти адрес страницы во внешней памяти можно не включать в таблицу.
Это так называемый метод прямого отображения: каждая таблица отображения содержит столько элементов, сколько требуется выполняемому процессу. Свопинг (загрузка-выгрузка) осуществляется на уровне страниц.
2.6.3.Сегментная организация
Каждый сегмент может иметь тот размер, который необходим для размещения процедуры или структуры данных. Преобразование виртуального адреса в реальный описано ранее. Свопинг при сегментной организации осуществляется целыми сегментами. Смещение d необходимо контролировать, чтобы оно не вышло за границы сегмента.
2.6.4.Странично-сегментная организация
Виртуальный адрес состоит из трех компонент V=(s,p,d), где s - номер сегмента, p - номер страницы в сегменте s, d - смещение в странице p. Преобразование адреса требует две таблицы отображения: таблицу сегментов и таблицу страниц:
1) определяется расположение в памяти таблицы сегментов;
2) по номеру сегмента s отыскивается его дескриптор и определяется базовый адрес таблицы страниц сегмента;
3) Номер страницы p прибавляется к базовому адресу, что позволяет определить дескриптор страницы, а значит и номер страничного кадра в реальной памяти;
4) С учетом смещения d находится реальный адрес.
Такая схема применяется в ОС, которые используют защищенный режим процессора Intel и механизм трансляции страниц, поддерживаемый этим режимом (Windows 9х, Windows NT).
Рис. 12. Двухступенчатая схема преобразования адреса
Линейный адрес выбирается из дескриптора, на который указывает селектор. Линейный адрес представляет собой структуру, состоящую из 3 полей:
· индекса в каталоге таблиц страниц;
· индекса в таблице страниц;
· смещения на странице.
На первом шаге логический адрес, состоящий из 16-разрядного селектора и 32-разрядного смещения преобразуется в так называемый линейный адрес.
В системе может содержаться произвольное количество каталогов таблиц страниц. Адрес каталога, в котором производится поиск, содержится в регистре CR3. Элементами каталога являются дескрипторы, описывающие таблицы страниц. Формат дескриптора:
P - присутствие таблицы страниц в памяти;
W - разрешение записи в страницы;
U - страницы супервизора (0) или пользователя (1);
A - доступ: устанавливается в 1 перед записью или чтением;
D - устанавливается в 1, если была выполнена запись в таблицу;
AVL - зарезервированы за ОС.
С помощью индекса в каталоге таблиц отыскивается адрес таблицы, содержащей нужную страницу памяти. По этому адресу находится таблица и, используя индекс страницы, из дескриптора определяется адрес страницы. Дескриптор страницы имеет формат:
Устанавливая соответствующим образом биты защиты, операционная система может отметить страницу как доступную для чтения и записи, только для чтения или как недоступную. В поле "Файл страниц" содержится номер файла подкачки, в котором размещена страница. Младшие биты описывают состояние страницы памяти:
· страница находится в переходном состоянии;
· страница обновлена, но не сохранена в файле страниц;
· страница присутствует в памяти.
В дополнение к этим битам система помечает в базе данных страниц состояние каждой физической страницы. Страница может быть отмечена как имеющая одно из следующих состояний:
свободная - доступна для использования после ее заполнения нулями;
заполненная нулями - свободная страница, заполненная нулями и доступная для использования процессами;
правильная - используется активным процессом;
измененная - содержимое страницы было изменено, однако страница еще не сохранена в файле страниц;
запасная - страница удалена из рабочего набора страниц процесса;
плохая - при обращении к странице возникла аппаратная ошибка.
Складывая базовый адрес страницы со смещением, получаем физический адрес.
Вычисление адреса страницы часто называют трансляцией страниц. Трансляция страниц выполняется в том случае, если старший бит CR0 установлен в 1. Если же он сброшен в 0, то адрес из локальной или глобальной таблицы считается базовым, к нему прибавляется смещение и полученный адрес является физическим.