- •Содержание
- •Основы операционных систем
- •Операционная система как менеджер ресурсов
- •Операционная система как защитник пользователей и программ
- •Операционная система как постоянно функционирующее ядро
- •Второй период (1955 г.–начало 60-х). Компьютеры на основе транзисторов. Пакетные операционные системы
- •Третий период (начало 60-х – 1980 г.). Компьютеры на основе интегральных микросхем. Первые многозадачные ос
- •Четвертый период (с 1980 г. По настоящее время). Персональные компьютеры. Классические, сетевые и распределенные системы
- •Прерывания
- •Исключительные ситуации
- •Многоуровневые системы (Layered systems)
- •Виртуальные машины
- •Микроядерная архитектура
- •Смешанные системы
- •Системы реального времени
- •Взаимодействие с периферийными устройствами
- •Понятие процесса
- •Состояния процесса
- •Process Control Block и контекст процесса
- •Одноразовые операции
- •Многоразовые операции
- •Переключение контекста
- •Заключение
- •Уровни планирования
- •Критерии планирования и требования к алгоритмам
- •Параметры планирования
- •Вытесняющее и невытесняющее планирование
- •Гарантированное планирование
- •Приоритетное планирование
- •Многоуровневые очереди (Multilevel Queue)
- •Многоуровневые очереди с обратной связью (Multilevel Feedback Queue)
- •Заключение
- •Взаимодействующие процессы
- •Категории средств обмена информацией
- •Информационная валентность процессов и средств связи
- •Поток ввода/вывода и сообщения
- •Надежность средств связи
- •Как завершается связь?
- •Нити исполнения
- •Заключение
- •Критическая секция
- •Запрет прерываний
- •Переменная-замок
- •Строгое чередование
- •Флаги готовности
- •Алгоритм Петерсона
- •Алгоритм булочной (Bakery algorithm)
- •Аппаратная поддержка взаимоисключений
- •Команда Test-and-Set (проверить и присвоить 1)
- •Решение проблемы producer-consumer с помощью семафоров
- •Мониторы
- •Сообщения
- •Реализация семафоров и передачи сообщений с помощью мониторов
- •Реализация семафоров и мониторов с помощью очередей сообщений
- •Заключение
- •Введение
- •Условия возникновения тупиков
- •Основные направления борьбы с тупиками
- •Игнорирование проблемы тупиков
- •Нарушение условия ожидания дополнительных ресурсов
- •Нарушение принципа отсутствия перераспределения
- •Hарушение условия кругового ожидания
- •Обнаружение тупиков
- •Восстановление после тупиков
- •Заключение
- •Введение
- •Физическая организация памяти компьютера
- •Локальность
- •Логическая память
- •Связывание адресов
- •Функции системы управления памятью
- •Простейшие схемы управления памятью
- •Один процесс в памяти
- •Оверлейная структура
- •Динамическое распределение. Свопинг
- •Страничная память
- •Сегментная и сегментно-страничная организация памяти
- •Заключение
- •Понятие виртуальной памяти
- •Архитектурные средства поддержки виртуальной памяти
- •Страничная виртуальная память
- •Сегментно-страничная организации виртуальной памяти
- •Структура таблицы страниц
- •Ассоциативная память
- •Инвертированная таблица страниц
- •Размер страницы
- •Заключение
- •11. Лекция: Файлы с точки зрения пользователя: версия для печати и pda в настоящей лекции вводится понятие и рассматриваются основные функции и интерфейс файловой системы.
- •Введение
- •Типы файлов
- •Атрибуты файлов
- •Организация файлов и доступ к ним
- •Другие формы организации файлов
- •Операции над файлами
- •Директории. Логическая структура файлового архива
- •Разделы диска. Организация доступа к архиву файлов.
- •Операции над директориями
- •Заключение
- •Общая структура файловой системы
- •Связный список
- •Индексные узлы
- •Учет при помощи организации связного списка
- •Размер блока
- •Структура файловой системы на диске
- •Реализация директорий
- •Связывание файлов
- •Кооперация процессов при работе с файлами
- •Примеры разрешения коллизий и тупиковых ситуаций
- •Порядок выполнения операций
- •Журнализация
- •Проверка целостности файловой системы при помощи утилит
- •Управление "плохими" блоками
- •Оптимальное размещение информации на диске
- •Связывание файла
- •Удаление файла
- •Современные архитектуры файловых систем
- •Заключение
- •13. Лекция: Система управления вводом-выводом: версия для печати и pda в лекции рассматриваются основные физические и логические принципы организации ввода-вывода в вычислительных системах.
- •Физические принципы организации ввода-вывода
- •Общие сведения об архитектуре компьютера
- •Структура контроллера устройства
- •Опрос устройств и прерывания. Исключительные ситуации и системные вызовы
- •Прямой доступ к памяти (Direct Memory Access – dma)
- •Логические принципы организации ввода-вывода
- •Структура системы ввода-вывода
- •Систематизация внешних устройств и интерфейс между базовой подсистемой ввода-вывода и драйверами
- •Функции базовой подсистемы ввода-вывода
- •Блокирующиеся, неблокирующиеся и асинхронные системные вызовы
- •Буферизация и кэширование
- •Spooling и захват устройств
- •Обработка прерываний и ошибок
- •Планирование запросов
- •Алгоритм First Come First Served (fcfs)
- •Алгоритм Short Seek Time First (sstf)
- •Алгоритмы сканирования (scan, c-scan, look, c-look)
- •Заключение
- •Введение
- •Угрозы безопасности
- •Формализация подхода к обеспечению информационной безопасности
- •Криптография как одна из базовых технологий безопасности ос
- •Шифрование с использованием алгоритма rsa
- •Теорема Эйлера
- •Заключение
Функции базовой подсистемы ввода-вывода
Базовая подсистема ввода-вывода служит посредником между процессами вычислительной системы и набором драйверов. Системные вызовы для выполнения операций ввода-вывода трансформируются ею в вызовы функций необходимого драйвера устройства. Однако обязанности базовой подсистемы не сводятся к выполнению только действий трансляции общего системного вызова в обращение к частной функции драйвера. Базовая подсистема предоставляет вычислительной системе такие услуги, как поддержка блокирующихся, неблокирующихся и асинхронных системных вызовов, буферизация и кэширование входных и выходных данных, осуществление spooling'a и монопольного захвата внешних устройств, обработка ошибок и прерываний, возникающих при операциях ввода-вывода, планирование последовательности запросов на выполнение этих операций. Давайте остановимся на этих услугах подробнее.
Блокирующиеся, неблокирующиеся и асинхронные системные вызовы
Все системные вызовы, связанные с осуществлением операций ввода-вывода, можно разбить на три группы по способам реализации взаимодействия процесса и устройства ввода-вывода.
-
К первой, наиболее привычной для большинства программистов группе относятся блокирующиеся системные вызовы. Как следует из самого названия, применение такого вызова приводит к блокировке инициировавшего его процесса, т. е. процесс переводится операционной системой из состояния исполнение в состояние ожидание. Завершив выполнение всех операций ввода-вывода, предписанных системным вызовом, операционная система переводит процесс из состояния ожидание в состояние готовность. После того как процесс будет снова выбран для исполнения, в нем произойдет окончательный возврат из системного вызова. Типичным для применения такого системного вызова является случай, когда процессу необходимо получить от устройства строго определенное количество данных, без которых он не может выполнять работу далее.
-
Ко второй группе относятся неблокирующиеся системные вызовы. Их название не совсем точно отражает суть дела. В простейшем случае процесс, применивший неблокирующийся вызов, не переводится в состояние ожидание вообще. Системный вызов возвращается немедленно, выполнив предписанные ему операции ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей ситуации (состояния устройства, наличия данных и т. д.). В более сложных ситуациях процесс может блокироваться, но условием его разблокирования является завершение всех необходимых операций или окончание некоторого промежутка времени. Типичным случаем применения неблокирующегося системного вызова может являться периодическая проверка на поступление информации с клавиатуры при выполнении трудоемких расчетов.
-
К третьей группе относятся асинхронные системные вызовы. Процесс, использовавший асинхронный системный вызов, никогда в нем не блокируется. Системный вызов инициирует выполнение необходимых операций ввода-вывода и немедленно возвращается, после чего процесс продолжает свою регулярную деятельность. Об окончании завершения операции ввода-вывода операционная система впоследствии информирует процесс изменением значений некоторых переменных, передачей ему сигнала или сообщения или каким-либо иным способом. Необходимо четко понимать разницу между неблокирующимися и асинхронными вызовами. Неблокирующийся системный вызов для выполнения операции read вернется немедленно, но может прочитать запрошенное количество байтов, меньшее количество или вообще ничего. Асинхронный системный вызов для этой операции также вернется немедленно, но требуемое количество байтов рано или поздно будет прочитано в полном объеме.