Лекции по Антошкеx

advertisement
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
“Московский Государственный Технический Университет им. Н.Э. Баумана”
(МГТУ им. Н.Э.Баумана)
Факультет «Аэрокосмический»
Кафедра «Компьютерные системы и сети»
КОНСПЕКТ ЛЕКЦИЙ
ГОЛОВАНОВ В.С.
КОНСПЕКТ ЛЕКЦИЙ ПО КУРСУ
«ОПЕРАЦИОННЫЕ СИСТЕМЫ»
Москва
2007
Лекция 1. Введение
Существует три основных подхода к разработке ОС и системного ПО с точки
зрения инструментальных средств.
 Native среды (Visual Studio, gcc….)
 Кросс-платформенный
 HOST-TARGET (JTAG)
Виртуальные машины
Начала широко распространяться концепция виртуальных машин.
Пользователь получил возможность более не задумываться о физических деталях
построения вычислительных машин (или сетей), с которыми он работает. Вместо
этого пользователь имеет дело с функциональным эквивалентом компьютера,
создаваемым для него операционной системой и называемым виртуальной машиной.
Современный пользователь хочет, чтобы машина помогала ему эффективно
выполнять его работу, и, как правило, не интересуется внутренними деталями
устройства этой машины и ее функционированием.




DOS BOX
VIRTUAL PC
BOCHS
VMware
DOS BOX
VIRTUAL PC
BOCHS
VMware
Стоит ли денег
Исходные коды
Эмуляция
многоядерности
Эффективность
(на PIII - 733 Mhz)
Расширяемость
Динам. эмуляция
процессора
Поддержка
виртуальных жестких
дисков
бесплатно
открыты
платная
не доступны
бесплатно
открыты
платная
не доступны
1
1
1,2,4,8
1
13 Mhz
190 Mhz
1,5 Mhz (var)
336 Mhz
нет
нет
По исходникам
Внешние модули
частичная
полная
нет
полная
нет
IDE (фикс., дин.,
связ. образы)
Не ур порт
IDE (фик. образ)
прерыв
IDE,SCSI (фикс.,
дин.)
Поддержка SoftIce
Встроенный
отладчик
SnapShot
нет
нет
Есть (Win2000)
+ перен.
-
-
-
частичная
Есть
(мощный)
-
Эмуляция сети
-
-
-
+
+
Компиляторы
MS Visual C++
Gcc 3.3.4
Intel C++ 8.0
Эталоном многоуровневой схемы построения сетевых средств связи считается
семиуровневая модель открытого взаимодействия систем (Open System Interconnection
– OSI), предложенная Международной организацией Стандартов (International
Standard Organization – ISO) и получившая сокращенное наименование OSI/ISO
Уровни модели OSI/ISO:







Физический (сетевые платы, модемы, каб…, эл.спецификация)
Канальный (контроль формирование пакетов/ целостность (частность))
Сетевой (маршрутизация, адресация, поддержка сетевой подкачки)
Транспортный (контроль целостности пакетов/оперирование поток. переходами)
Сеансовый (регистрация/безопасность/контрольные точки восстановления)
Представления данных (трансляция + преобразование данных)
Прикладной (API + системные сервисы)
 Уровень 1 – физический. Этот уровень связан с работой hardware. На нем
определяются физические аспекты передачи информации по линиям связи,
такие как: напряжения, частоты, природа передающей среды, способ передачи
двоичной информации по физическому носителю, вплоть до размеров и формы
используемых разъемов. В компьютерах за поддержку физического уровня
обычно отвечает сетевой адаптер.
 Уровень 2 – канальный. Этот уровень отвечает за передачу данных по
физическому уровню без искажений между непосредственно связанными узлами
сети. На нем формируются физические пакеты данных для реальной доставки по
физическому уровню. Протоколы канального уровня реализуются совместно
сетевыми адаптерами и их драйверами (понятие драйвера рассматривалось в
лекции 13).
 Уровень 3 – сетевой. Сетевой уровень несет ответственность за доставку
информации от узла-отправителя к узлу-получателю. На этом уровне частично
решаются вопросы адресации, осуществляется выбор маршрутов следования
пакетов данных, решаются вопросы стыковки сетей, а также управление
скоростью передачи информации для предотвращения перегрузок в сети.
 Уровень 4 – транспортный. Регламентирует передачу данных между
удаленными процессами. Обеспечивает доставку информации вышележащим
уровнем с необходимой степенью надежности, компенсируя, быть может,
ненадежность нижележащих уровней, связанную с искажением и потерей
данных или доставкой пакетов в неправильном порядке. Наряду с сетевым
уровнем может управлять скоростью передачи данных и частично решать
проблемы адресации.
 Уровень 5 – сеансовый. Координирует взаимодействие связывающихся
процессов. Основная задача – предоставление средств синхронизации
взаимодействующих процессов. Такие средства синхронизации позволяют
создавать контрольные точки при передаче больших объемов информации. В
случае сбоя в работе сети передачу данных можно возобновить с последней
контрольной точки, а не начинать заново.
 Уровень 6 – уровень представления данных. Отвечает за форму представления
данных, перекодирует текстовую и графическую информацию из одного
формата в другой, обеспечивает ее сжатие и распаковку, шифрование и
декодирование.
 Уровень 7 – прикладной. Служит для организации интерфейса между
пользователем и сетью. На этом уровне реализуются такие сервисы, как
удаленная передача данных, удаленный терминальный доступ, почтовая служба
и работа во Всемирной паутине (Web-браузеры).
POSIX (переносимый интерфейс операционной системы для вычислительной среды)
Лекция 2. Основные термины
Операционная система (ОС) – ПО, которое выполняет роль интерфейса между
пользователем и аппаратурой ЭВМ. Оно управляет выполнением программ и
предоставляет различные сервисы: распределение, регистрация, планирование,
управление вводом/выводом данных.
Сетевые ОС – обеспечивают поддержку использования обычных серверных
систем в сети компьютеров.
Распределенная ОС - общая ОС совместно используемая сетью компьютеров.
Обеспечивает поддержку для межпроцессного взаимодействия, перемещения
процессов, взаимоисключения, а также предотвращения взаимоблокировки.
ОС реального времени (ОСРВ) – ОС, которая может планировать задачи
реального времени и управлять ими.
Компоненты
Ядро (Kernel) – часть ОС, включающая наиболее интенсивно используемые
функции. Обычно ядро постоянно располагается в основной памяти и работает в
привилегированном
режиме, отвечая на вызовы процессов и прерывания от
устройств.
Монолитное ядро (Monolithic kernel) - большое ядро, виртуально содержащее всю
операционную систему, включая планировщик, файловую систему, драйверы
устройств и управление памятью. Все функциональные компоненты ядра имеют
доступ ко всем eгo внутренним структурам данных и подпрограммам. Обычно
монолитное ядро реализуется как единый процесс, в котором все элементы разделяют
одно и то же адресное пространство.
Микроядро (Microkernel) - малое привилегированное ядро операционной
системы, обеспечивающее планирование процессов, управление памятью и
коммуникации; для выполнения прочих функций, традиционно связываемых с ядром
операционной системы, использует отдельные процессы.
Задание (Job) - последовательность вычислительных этапов, собранных для
запуска как единое целое.
Задача (Task) - то же, что и процесс. Единица выделения ресурсов в системе.
Процесс (Process) - выполняемая программа. Процесс управляется и планируется
операционной системой.
Поток (Thread) - независимо планируемый контекст выполнения, разделяющий
единое адресное пространство с другими потоками. Единица планирования.
Задача реального времени (Real-time task) - задача, которая выполняется в связи с
некоторыми процессами, функциями или событиями, внешними по отношению к
компьютерной системе, и которая должна реагировать на внешние события за
приемлемое для них время.
Драйвер устройства (Device driver) - модуль операционной системы (обычно
находящийся в ядре), который работает непосредственно с устройством или
контроллером ввода/вывода.
Командная оболочка (Shell) - часть операционной системы, интерпретирующая
интерактивные пользовательские команды и команды языка управления заданиями.
(По сути, представляет собой интерфейс между пользователем и операционной
системой.)
Обработчик прерывания (Interrupt handler) - подпрограмма, обычно являющаяся
частью операционной системы. В случае прерывания управление передается
соответствующему обработчику, который предпринимает определенные действия в
ответ на вызвавшие прерывание условия.
Прерывание (Interrupt) - приостановка нормального выполнения процесса
(компьютерной программы), вызванная внешним по отношению к процессу событием
и осуществляемая таким образом, что по ее завершении выполнение процесса может
быть продолжено.
Время отклика (Response time) - время, прошедшее между концом передачи
сообщения с запросом и началом получения ответного сообщения, измеряемое на
запрашивающем терминале.
Квантование времени (Time slicing) - режим работы, при котором два или
несколько процессов получают кванты времени на одном и том же процессоре.
Многозадачность (Multitasking) - режим работы, при котором обеспечивается
параллельное или чередующееся выполнение двух или большего количества
программ. Синоним термина multiprogramming.
Разделение времени (Time sharing) - параллельное использование устройства
несколькими пользователями.
Диспетчеризация (Dispatch) - распределение времени процессора между
заданиями, готовыми к выполнению.
Планирование (Schedule) - выбор задания для выполнения. В некоторых ОС
планироваться могут и другие единицы, например операции ввода/вывода.
Пакетная обработка (Batch processing) - метод выполнения потока компьютерных
программ, при котором запущенная программа полностью завершается до запуска
следующей программы из множества.
Повторно используемый ресурс (Reusable resource) - ресурс, который может
безопасно использоваться в определенный момент времени только одним процессом и
не расходуется им. Процесс получает единицы повторно используемого ресурса,
которые позже освобождает для их повторного использования другими процессами.
Примерами повторно используемых ресурсов могут служить процессоры, каналы
ввода/вывода, основная и вторичная память, устройства и структуры данных,
такие, как файлы, базы данных и семафоры.
Расходуемые ресурсы (Consumable resources) - ресурсы, которые могут быть
созданы (произведены) и уничтожены (потреблены). При получении процессом
ресурса последний прекращает существование. Примерами расходуемых ресурсов
могут служить прерывания, сигналы, сообщения, информация в буферах
ввода/вывода. При получении процессом ресурса, последний прекращает своё
существование.
Основная память (Main memory) - память, внутренняя по отношению к
вычислительной системе, адресуемая программами. Ее ячейки могут быть загружены
в регистры для последующего выполнения или обработки.
Вторичная память (Secondary memory) - память, расположенная
вычислительной системы, например диски или магнитные ленты.
вне
Интерфейс прикладного программирования (Application programming interface,
API) - стандартизованная библиотека программных средств, используемая
разработчиками программного обеспечения для создания приложений, совместимых с
определенной операционной системой и принятым графическим пользовательским
интерфейсом.
Пользовательский режим работы (User mode) – режим работы процессора,
который не позволяет выполнять привилегированные команды, таких как остановка
процессора или команды ввода/вывода.
Режим супервизора (Supervisor mode) – режим работы процессора, который
позволяет выполнять любые команды.
ОС делятся :
По назначению:
 Общего типа
 Специального (коммун., спец расчеты. Ex: Ctos)
 Реального времени
По типу ядра:




Стандартное монолитное ядро
Микроядро
Гибридное ядро
Экзоядро
По типу системной архитектуры:
 С модульной архитектурой
 С объектно-ориентированной архитектурой
По количеству пользователей:
 Однопользовательские
 Многопользовательские
По уровню межпроцессного взаимодействия:




Однозадачные (Dos)
Многозадачные (Unix, OS/2, Windows)
Сетевые
Распределенные
По типу многозадачности:
 С вытесняющей
 С невытесняющей (Win 3.11)
С точки зрения поддержки потоков:
 Поддерживающие потоки
 Не поддерживающие потоки
По уровню интеграции:
 Монолитные
 Встраиваемые
Лекция 3. Ядро Unix системы.
Ядро обеспечивает базовую функциональность операционной системы: создает
процессы и управляет ими, распределяет память и обеспечивает доступ к файлам и
периферийным устройствам.
Взаимодействие прикладных задач с ядром происходит посредством
стандартного интерфейса системных вызовов. Интерфейс системных вызовов
представляет собой набор услуг ядра и определяет формат запросов на услуги.
Процесс запрашивает услугу посредством системного вызова определенной
процедуры ядра, внешне похожего на обычный вызов библиотечной функции. Ядро от
имени процесса выполняет запрос и возвращает процессу необходимые данные.
Ядро состоит из трех основных подсистем:
1. Файловая подсистема
2. Подсистема управления процессами и памятью
3. Подсистема ввода/вывода
Файловая подсистема
Файловая подсистема обеспечивает унифицированный интерфейс доступа к
данным, расположенным на дисковых накопителях, и к периферийным устройствам.
Файловая подсистема контролирует права доступа к файлу, выполняет
операции размещения и удаления файла, а также выполняет запись/чтение данных
файла. Поскольку большинство прикладных функций выполняется через интерфейс
файловой системы (в том числе и доступ к периферийным устройствам), права
доступа к файлам определяют привилегии пользователя в системе.
Файловая подсистема обеспечивает перенаправление запросов, адресованных
периферийным устройствам, соответствующим модулям подсистемы ввода/вывода.
Подсистема управления процессами
Запущенная на выполнение программа порождает в системе один или более
процессов (или задач). Подсистема управления процессами контролирует:




Создание и удаление процессов
Распределение системных ресурсов (памяти, выч. ресурсов) между процессами
Синхронизацию процессов
Межпроцессное взаимодействие
Планировщик
процессов
(scheduler)
-
разрешает
конфликты
между
процессами в конкуренции за системные ресурсы (процессор, память, устройства
ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы
процесс монопольно не захватил разделяемые системные ресурсы. Процесс
освобождает процессор, ожидая длительной операции ввода/вывода, или по
прошествии кванта времени. В этом случае планировщик выбирает следующий
процесс с наивысшим приоритетом и запускает его на выполнение.
Модуль управления памятью обеспечивает размещение оперативной памяти
для прикладных задач. В случае, если для всех процессов недостаточно памяти, ядро
перемещает части процесса или нескольких процессов во вторичную память (как
правило, в специальную область жесткого диска), освобождая ресурсы для
выполняющегося процесса. Все современные системы реализуют так называемую
виртуальную память: процесс выполняется в собственном логическом адресном
пространстве, которое может значительно превышать доступную физическую память.
Управление виртуальной памятью процесса также входит в задачи модуля управления
памятью.
Модуль межпроцессного взаимодействия отвечает за уведомление процессов
о событиях с помощью сигналов и обеспечивает возможность передачи данных между
различными процессами.
Подсистема ввода/вывода
Подсистема ввода/вывода выполняет запросы файловой подсистемы и
подсистемы управления процессами для доступа к периферийным устройствам
(дискам, магнитным лентам, терминалам и т. д.). Она обеспечивает необходимую
буферизацию данных и взаимодействует с драйверами устройств - специальными
модулями ядра, непосредственно обслуживающими внешние устройства.
ОС с микроядром (ex: QNX)
Приложения
пользователя
Файловая
система
APP
FSYS
Сети
Диспетчер
устройств
NET
DEV
PROC
Администратор
процессов
Режим ядра
МИКРОЯДРО
В состав ядра входят наиболее необходимые низкоуровневые функции ОС. Все
остальные сервисы вынесены в адресное пространство пользователя и работают в
качестве серверов.
1 – Match
2 – L4 и mCOS
Преимущества (QNX)
 Единообразный интерфейс
 Расширяемость
 Гибкость
 Переносимость
 Надежность
 Поддержка распределенных систем
 Поддержка объектно-ориентированных систем
Ex: ОС 2000 – для бортовых вычислительных машин
ОС с гибридным ядром (ex: Win 2000)
Hardware Abstraction Level (HAL) – уровень аппаратных абстракций.
На этом уровне формируется отображения между общими командами и
ответными сигналами аппаратного обеспечения, и таковыми для конкретной
платформы. Этот уровень отделяет операционную систему от особенностей
используемой аппаратной платформы, благодаря чему системная шина, контроллер
прямого доступа к памяти, контроллер прерываний, системные таймеры и Память
выглядят с точки зрения ядра одинаково. Кроме того, на этом уровне поддерживается
симметричная многопроцессорность.
Функции ядра :
 Планирование выполнения процессов
 Микроядро передает управление процессом обработчику прерываний и
исключений, когда они происходят.
 Выполнение низкоуровневой многопроцессорной синхронизации
 Обеспечение восстановления системы после сбоя питания
Модули, которые находятся в адресном пространстве ядра :
1. Диспетчер ввода/вывода – поддержка независимых от устройств функций
ввода/вывода, управление файлами и сетевыми буферами.
2. Диспетчер виртуальной памяти – обеспечивает защиту адресного пространства
каждого процесса и страничную организацию
3. Диспетчер локального вызова процедур (LPC) – поддержка взаимодействия
между клиентами и сервером, расположенными на одном компьютере.
4. Диспетчер процессов – отвечает за управление процессами и потоками; при
создании процесса – в его состояние включается один поток, в последующем
потоки могут быть добавлены (в Unix ……)
5. Монитор безопасности обращений – обеспечивает защиту объектов во время
работы системы, участвует в операциях с объектами и может обеспечить аудит
использования.
6. Менеджер объектов – создает и удаляет объекты исполнительной подсистемы.
Дескрипторы объектов – расширение идеологии дескрипторов файлов в UNIX. С
помощью них можно адресовать процессы, потоки и кон. точки монтирования.
Требования, предъявляемые к современным ОС.
1. Детерминированность – жестко регламентированное время реакции ОС на
произошедшее событие. Когда некоторые процессы становятся готовыми к
выполнению, задача операционной системы – обеспечить для его выполнения
ресурсы таким образом, чтобы очередной
шаг процесса уложился в
установленные временные пределы. (В современны ОС существует два
механизма: перенаправление прерываний и вытесняющая многозадачность. Тут
он еще что-то ляпнул про инверсию приоритетов Инверсия приоритетов – это
ситуация, в которой, в результате взаимных синхронизаций, управление получает
не та ветвь исполнения, которая должна была бы получить из соображений
приоритетности, а другая, с более низким приоритетом. Механизмы,
порождающие это явление, могут быть разнообразны, но, независимо от деталей
происходящего, результат один – управление получает не та ветвь, которой
должно, а в результате нарушается детерминированность и прогнозируемость
системы.)
2. Предсказуемость – реакция ОС на запрос не должна зависеть от посторонних
факторов и определяется только формой запроса.
3. Надежность
 Устойчивость ОС к ошибкам приложений
 Устойчивость ОС к некритичным отказам оборудования
 Возможность восстановления данных в случае сбоя
 Защита адресного пространства процесса от несанкционированного доступа
из вне
Лекция 11. Многозадачность и планирование процессов.
В современных системах выделяют 4 типа планирования:
1 – Долгосрочное планирование (постановка процессов в )
2 – Среднесрочное планирование
3 – Краткосрочное планирование
4 – Планирование ввода/вывода
CPU
Требования к стратегиям (критерии)
 Минимизация времени отклика
 Стратегия не должна допускать ситуаций дискриминации процессов
(справедливость работы/беспристрастность)
 При отсутствии дополнительных указаний от системы – все процессы
рассматривать как равноправные
 Отсутствие голодания/бесконечного откладывания процессов
 Увеличение пропускной способности системы (стратегия планирования должна
стремиться увеличить пропускную способность системы за счет максимизации
завершения задач за единицу времени) (если система сильно загружена, то
стратегия планирования не отвечает требованию детерминированности)
 Минимизация (балансировка накладных расходов)
 Баланс ресурсов (стратегия планирования должна предоставлять доступ к
процессору тем процессам, которые задействуют не используемым на данный
момент ресурсам)
 Использование приоритетов
 Использование процессора
 Удовлетворение предельным срокам
Режим решения – вытесняющий/невытесняющий
Невытесняющий – предполагает, что выполняющийся процесс продолжает
вычисления до тех пор, пока он не завершится или не перейдет в заблокированное
состояние.
Вытесняющий – предполагает, что выполняющийся в данный момент времени
процесс может быть прерван системой и переведен в состояние готовности.
Лекция 12. Планирование процессов реального времени.
Система реального времени – система, корректность функционирования
которой определяется не только корректность выполнения вычислений, но и
временем, в которое получен требуемый результат. Если требования по времени не
выполняются, то считается, что произошел отказ системы.
Параметры RTS:
 Количество типов событий. Чем больше эта величина, тем сложнее СРВ
 Поведение событий во времени (периодические, непериодические)
 Крайние сроки обработки событий

Крайний срок называется ЖЕСТКИМ (HARD), если он ОБЯЗАН быть соблюден, при этом в
системе должна существовать возможность проверки того, был ли соблюден крайний срок
или нет. Несоблюдение такого крайнего срока ведет к катастрофическим последствиям
(авария, гибель людей и т.п.)

Крайний срок называется МЯГКИМ (SOFT), если «иногда» его допустимо не соблюдать.
Несоблюдение такого крайнего срока не ведет к катастрофическим последствиям, а лишь к
некоторому снижению производительности, ухудшению качества обслуживания, повышению
стоимости результатов, бесполезной трате времени и т.п.

Система реального времени называется ЖЕСТКОЙ, если все крайние сроки,
характеризующие эту систему - жесткие.
Система реального времени называется МЯГКОЙ, если хотя бы один из крайних сроков,
характеризующих эту систему, является мягким.

R (Release Time – Время запуска) – момент времени, когда процесс переходит в
состояние готовности.
φ (фаза) – абсолютный крайний срок.
d (Absolute DeadLine) – момент времени, к которому процесс должен закончить
выполнение или этап выполнения (для периодического процесса).
D (Relative Deadline) - относительный крайний срок. D = d – r
s (Start Time – время активации) - момент времени, когда процесс начал
выполняться на процессоре.
с (Complition Time) - момент времени, когда процесс закончил обработку некоторого события.
e (Execution Time) - время исполнения задачи при выполнении ею очередной
работы. e = c – s
R (Response Time) - время отклика. R = c – r
Δ (Slack Time) – резерв времени/остаток времени от момента завершения до
относительного крайнего срока. Δ = D - c
T (период выполнения) – время, через которое задача поступает в систему.
r
d
D
S
R
e
S
Δ
t
Определение времени исполнения :
- подсчет тактов (с учетом кэшей и конвейеров)
- времена исполнения непосредственно измеряются
Системы, использующие механизмы подкачки страниц, также являются менее
предсказуемыми и поэтому считается, что такого рода механизмы являются
"врагами" систем реального времени. Недаром в различного рода стандартах,
касающихся СРВ, предусмотрены средства блокировки страниц памяти.
Классификация процессов по моменту попадания в систему:



Периодический процесс (запускается периодически и имеет предельные сроки)
Спорадические процессы (непериодические задачи с жестким крайним сроком)
Апериодические процессы (непериодические задачи с мягким крайним сроком)
Download