- •Конспект лекций по курсу: «Операционные системы. Ч.1»
- •Введение
- •Аппаратные средства.
- •Центральный процессор.
- •Разрядность шины памяти.
- •Архитектура процессора.
- •Процессорное ядро.
- •Декодер.
- •Регистры процессора.
- •Многопроцессорные и многоядерные системы.
- •Многоядерные системы.
- •Оперативная память.
- •Адресация оп.
- •Ввод-вывод.
- •Прерывания.
- •Внешние устройства.
- •Классификация ос.
- •Основные понятия ос.
- •Структура ос.
- •Программная структура ос.
- •Программная структура ядра.
- •Интерфейсы системы вызовов.
- •Понятие мобильной ос.
- •Микроядерная архитектура.
- •Основные компоненты ос
- •Процессы и потоки.
- •Потоки.
- •Взаимодействие процессов, потоков.
- •Управление памятью.
- •Организация виртуальной памяти в ос.
- •Организация виртуальной памяти.
- •Сегментно-страничное распределение.
- •Преобразование адресов.
- •Буферы быстрого преобразования адреса.
- •Инвертированные таблицы страниц.
- •Алгоритмы замещения страниц.
- •Распределение виртуального адресного пространства.
- •Очистка страниц.
- •Перезапуск прерванной команды процессора.
- •Хранение страничной памяти на диске.
- •Реализация виртуальной памяти ос multics.
- •Виртуальная память в ос с аппаратной платформой Intel Pentium.
- •Защита памяти.
- •Ввод-вывод.
- •Контроллеры устройств.
- •Обмен данными с реальной оп.
- •Принципы программной реализации управления вводом-выводом.
- •Программная организация ввода-вывода.
- •Уровни реализации ввода-вывода.
- •Обработчики прерываний
- •Драйверы устройств.
- •Управление внешними устройствами.
- •Службы времени.
- •Алфавитно-цифровые терминалы.
- •Программное обеспечение ввода.
- •Программное обеспечение вывода.
- •Датчики.
- •Управление электропотреблением.
- •Файловые системы.
- •Логическая и физическая организация файлов.
- •Файловая система msdos.
- •Организация нескольких логических разделов.
- •Надежность файловой системы.
- •Производительность фс.
- •Файловая система cdr.
- •Формат записи каталога.
- •Сжатие видеоинформации.
- •Стандарт mpeg (Motion Picture Expert Group).
- •Структура реальной оп.
- •Структура виртуальной оп виртуальной машины.
- •Организация вычислительного процесса.
- •Планирование и диспетчирование.
- •Обработка прерываний.
- •Управление памятью.
- •Управление внешней памятью.
- •Планирование и диспетчирование.
- •Управление вводом-выводом.
- •Средства программирования и инструментальные средства.
- •Сетевые возможности операционных систем.
- •Понятие dce.
- •Подходы к обеспечению безопасности информации в ос.
Основные компоненты ос
Основные компоненты ОС |
|||
IPL |
Ядро |
Вспомогательные модули |
Общесистемное ПО |
|
программа NIP |
-средства управления файловой системой |
|
|
-управление потоками и процессами |
|
|
|
-управление памятью |
-средства поддержки и восстановления после сбоев |
|
|
-управление вводом, выводом |
|
|
|
-сетевые средства |
-средства оптимизации |
|
|
-загрузчик |
|
|
|
-средства службы времени |
-встроенные средства системы программирования |
|
|
-обработчики прерываний |
|
|
|
-API |
|
|
Процессы и потоки.
Всё функционирующее ПО системы, в том числе и ОС, как правило, организовано в виде набора процессов. При функционировании управление передается от одного процесса к другому. В целом, это называется многозадачностью или мультипрограммированием. Переход от одного процесса к другому осуществляется на основе работы компоненты по управлению процессами и потоками. Как правило, эта компонента выполняет следующие функции:
1. Планирование выполнения процессов (долгосрочная задача, касается способа постановки и выбора из очереди вновь поступивших на выполнение процессов).
2. Диспетчирование, переключение управления из одного готового процесса на другой (краткосрочная задача, касается непосредственно организации вычислительного процесса).
Создание процесса.
Основные способы создания процесса:
1. Инициализация системы. Выход программы NIP – как правило, после загрузки и инициализации ядра создаются несколько процессов: обеспечивающие выполнение основных функций и фоновые процессы (демоны). Демоны основное время находятся в состоянии ожидания и, как правило, выполняют функции при получении запроса или сообщения. Пример: обработка электронной почты, вывод на печать и т.д.
2. Выполнение системного запроса на создание процесса (например, в Windows – CreateProcess). Управляет созданием процесса и запуском в его рамках нужного модуля.
3. Запрос пользователя на создание процесса – выполняется из программы с передачей необходимых параметров в процесс, как правило, параметры передаются списком, адрес которого находится в одном из регистров или стеке при начале работы модуля (в ОС Windows порядка 100 функций по управлению процессами).
4. Инициирование пакетного задания – в этом случае в ОС такого типа существуют так называемые макрокоманды, по которым ос или пользователь может создать процессы следующих типов:
- Самостоятельный процесс (макрокоманда ATTACH) – выполняется как отдельная программа, не зависящая от программы-родительницы.
- Создать процесс, выполнить и вернуться в порождающий модуль в точку после вызова процесса (макрокоманда LINK).
- Создать процесс, но не выполнять (макрокоманда LOAD). Например, загрузка каких-нибудь таблиц.
Завершение процесса.
Как правило, процесс завершается в следующих случаях:
1) Штатный выход – после окончания выполнения модуля процесс сообщает ОС о том, что он закончил работу (в Windows ExitProcess).
2) Преднамеренная ошибка – попытка запуска файла, которого нет по указанному пути – аварийное завершение, при завершении процесса, как правило, указываются каталожные номера ошибок на данную ОС, по ним в документации можно определить что случилось.
3) Ошибка при выполнении процесса: деление на 0, недопустимая операция, обращение к недействительному адресу и т.п.
4) Уничтожение процесса другим процессом; как правило, осуществляется при выполнении системного вызова (в Windows – TerminateProcess) у процесса-киллера должны быть соответствующие полномочия.
Состояния процесса.
Несмотря на то, что процессы автономны, существует необходимость взаимодействия с другими процессами, поэтому процесс может блокироваться и прерываться при выполнении. Поэтому состояния существуют следующие состояния процесса:
1) Выполняющийся – процессу передано управление и он выполняется (предоставлен процессор) – runing.
2) Готовый к выполнению – процесс временно приостановлен, находится в очереди за ресурсом, ждет предоставления процессора(находится в очереди к диспетчеру) – ready.
3) Заблокированный – ожидает завершения какого-то события – locked. Возможная схема реализации:
mov ECB, x'0'
read <файл> , ECB
wait ECB
...
...
...
ECB dc x'0'
(Чтение файла. В команде чтения файла указывается адрес флажка, который должен быть взведен после выполнения команды read. Wait с определенной периодичностью просматривает значения флажка, как только он взведен, значит read выполнился и можно работать дальше. В течение времени, за которое выполняется read процесс может быть заблокирован и процессор передан другому процессу.)
Для реализации модели процессов, как правило, в ОС имеется таблица, обновление которой происходит по мере выполнения процессов. Каждый элемент таблицы описывает один процесс (дескриптор процесса). Формат типовой таблицы описания процессов следующий
1 - данные о состоянии процесса
-регистры процесса
-счетчик команд
-слово состояния программы
-указатель стека
-приоритет
-идентификатор процесса
-принадлежность процесса (родительский, дочерний)
-время начала выполнения процесса
-использование процессорного времени
-адреса полученных сигналов
2 - данные о памяти процесса
-указатель на таблицу сегментов
-указатель на таблицу страниц
-адреса процесса
-размер выделенной оперативной памяти
-и др.
3 - состояние ввода-вывода процесса (файловой системы)
-текущий каталог
-дескрипторы открытых файлов
-и др.
Как правило, в любой ос поддерживается так называемая, основная управляющая таблица. Каждый элемент таблицы содержит некоторый адрес. Адреса заносятся в таблицу, как правило, на этапе NIP. Эти адреса, в свою очередь, являются ссылками на другие таблицы, кроме того, основная таблица, как правило, содержится в резидентной части ядра по фиксированному адресу для данной ОС и имеет название, например, MCT – main control table, CVT – control vector table и аналогично. Как правило, таблица не подвергается страничному обмену, то есть, она всегда в ОП. В ряде случаев, адрес таблицы могут определить умелые руки по контексту ее названия в дампе оперативной памяти.
Все дочерние таблицы, как правило, имеют свои названия и ОС знает, что и где в них находится. Возможно, по этой таблице получить адреса модулей ядра, находящихся в настоящий момент в оперативной памяти. Как правило, в ОС существует опция, по которой можно получить список процессов, находящихся в системе.
