
- •Процессы
- •Дерево процессов:
- •Запуск процесса – инициализация
- •Порождение нового процесса это длительная процедура, поскольку ОС должна выполнить множество действий :
- •Потоки
- •При переключении между потоками процессору нет необходимости производить выполнение самых длительных операций (запоминание
- •Планирование процессов Планирование необходимо для того, чтобы организовать наиболее производительную
- •Для ОС пакетной обработки данных кроме того используются следующие критерии планирования:
- •Взаимоблокировка процессов
- •Имеются различные способы выхода из блокировок:
- •На построение ОС безопасных по отношению к взаимоблокировкам идут лишь в некоторых случаях,
- •Системные и пользовательские вызовы в ОС
- •Системные вызовы отличаются от пользовательских тем, что они выполняются в пространстве ОС, поэтому
- •Некоторые системные вызовы UNIX
- •Вызовы для работы с файлами
- •КЭШа у процессора два: L1 и L2. Они оба работают на частоте одинаковой
- •Организация памяти
- •Физическая организация памяти:
- •2) Статическая организация памяти:
- •Страничная организация памяти удобна потому, что позволяет выполнить параллельно несколько процессов суммарной длинной
- •paging swaping
- •В TBL обычно помещается не одна пара чисел (виртуальный и физический номер страницы),
- •Семафоры
- •При управлении семафором(при запросе ресурсов) процесс устанавливает флаг операции: Если флаг отрицателен, то
- •Ввод вывод в ОС
- •Аппаратные особенности управления устройства ввода вывода в ЭВМ
- •Для управлением устройством ввода вывода уметь вызывать машинными командами управляющими данным устройством.
- •Преимуществом такой схемы является достаточно простая аппаратная реализация ввода вывода. Однако при этом
- •Преимуществом такой схемы является то, что при этом существенно ускоряется написание и логика
- •Преимуществом такой схемы является достижение некоторого компромисса между сложной организации ОС и сложностью
- •Работа устройств ввода вывода ОС-мой управляется следующим способом:
- •При реализации строгих прерываний выполняются на ЭВМ быстро, поскольку в этом случае нужно
- •Контроллеры устройство ввода вывода
- •Каналы DMA (Direct Memory Access)- прямой доступ к памяти. Используется любыми высокоскоростными устройствами
- •Винчестеры
- •FIFO Недостатки:
- •RAID - системы
- •Прожиг в местах пересечения синусоиды и дорожки. 1.2 мм толщина диска 0.6 мм
- •Схема не надежна:
- •Защита информации на диске:
- •Эти диски не копируются большинством программ, а на дисководах, не поддерживающих режим disc-at-once
- •«голубой лазер»
Страничная организация памяти удобна потому, что позволяет выполнить параллельно несколько процессов суммарной длинной логической памяти намного больше чем физическая память компьютера. Кроме того и логическая память одного процесса может быть намного больше чем физическая память компьютера.
Потребность в памяти всегда намного больше чем ее реальные размеры. Именно по этой причине страничная организация памяти является стандартной на всех достаточно развитых компьютерах (кроме игрушек), начиная с середины 70-х годов.
В физической памяти страницы соответствующие различным процессам перемещены. При недостатки физической памяти происходит конкуренция между процессами за ее обладание. Поэтому время от времени физические страницы памяти отнимаются у процесса и передаются другому процессу.
Логические страницы памяти которые не отображаются на реальную физическую память хранятся на диске в специальном файле или разделе диска, до тех пор пока для них не будет предоставлено место в физической памяти. Далее они снова могут быть вытеснены ОС из физической памяти на диск. Процесс перемещения логической памяти их физической на диск и обратно называется страничным свопингом.
paging swaping
Страничная организация памяти очень сильно усложняет «железо» компьютера, построение ОС и существенно замедляет время выполнения программ (снижает производительность компьютера). Снижение происходит из-за того, что отображение логической памяти на физическую требует дополнительные машинные команды. Однако на это увеличение сложности компьютеров и ОС, а так же на снижение производительности компьютеров идут потому что потребности в памяти всегда превосходят ее реальные размеры.
При отключении страничной организации памяти производительность компьютера возрастает на несколько десятков %. При инициализации процесса создается (уникальная для каждого процесса) таблица. При переключении компьютера между различными процессами происходит загрузка ответствующей таблицы в RAM. 12 бит смещение 20 бит номер страницы Если в таблице соответствия виртуальной и физической памяти имеется пустое место для старших 20 бит виртуального адреса, то это значит, что данная страница виртуальной памяти не отображена на физическую память. В этом случае аппаратно генерируется прерывания «нет страница памяти».
Вэтом случае ОС должна выполнить функции по отображению данной страница виртуальной памяти на физическую. Преобразованием виртуальных адресов в физические занимается специальная часть процессора «менеджер управления памяти». (MMU) Страничная организация памяти существенно замедляет работу компьютера, так как необходимы преобразования виртуальной памяти в физическую. Это преобразование требует значительных накладных расходов по времени.
Для ускорения процесса преобразования виртуального адреса в физический в MMU вносится специальная схема TBL, называемая таблицей быстрой трансляции адреса.
ВTBL заполняются номер страницы виртуальной памяти и соответствующий ему номер страницы физической памяти. При повторном обращении к тому же номеру виртуальной страницы, MMU не будет обращаться к RAM для поиска страницы физической памяти а возьмет данное значение в TBL.
Врезультате отображение виртуальной памяти на физическую будет выполнено значительно быстрее.
В TBL обычно помещается не одна пара чисел (виртуальный и физический номер страницы), а несколько пар, при этом происходит параллельное сравнение по всем элементам таблицы, если нашлось соответствие номеров страниц виртуальной и физической памяти, то будет выполнена быстрая (однократная) трансляция виртуального адреса в физический.
Если такого соответствия нет, то MMU будет производить поиск такого соответствия в таблице, хранящейся в RAM, при этом в TBL будет заполнена одна из строк на новое найденное соответствие.
Впроцессоре имеются специальные команды для управления TBL. Эти команды позволяют сохранить значения TBL в RAM и записать в TBL значения из RAM.
Эти команды используются при переключении процессором между процессами. Значит каждому выполняющемуся процессу соответствует своя таблица TBL.
Размер TBL зависит от сложности процессора.
Чем сложнее процессор, тем больше таблицы и тем быстрее выполняется все программы за счет более быстрого преобразование виртуального адреса в физический.
Втаблице соответствия номера страниц виртуальной и физической памяти (как хранится в PAM, так и в TBL) хранится обычно несколько полей.
Обычно длина элемента таблицы составляет 32 бита.
0-19 бит - соответствие виртуального номера физическому.
Семафоры
Семафоры лучше всего представлять себе как счетчики, управляющие доступом к общим ресурсам. Чаще всего они используются как блокирующий механизм, не позволяющий одному процессу захватить ресурс, пока этим ресурсом пользуется другой. Семафоры часто подаются как наиболее трудные для восприятия из всех трех видов IPC-объектов. Слово «семафор» в действительности является старым железнодорожным термином. Семафор в положении ON (руки подняты вверх) если ресурс свободен и в положении OFF (руки опущены) если ресурс недоступен (должны ждать).
Возможен другой подход к семафорам - как к счетчикам ресурсов. Приведем другой пример из жизни. Вообразим себе спулер, управляющий несколькими принтерами, каждый из которых обрабатывает по нескольку заданий. Гипотетический менеджер печати будет использовать множество семафоров для установления доступа к каждому из принтеров. Предположим, что в корпоративной комнате имеются 5 работающих принтеров. Наш менеджер конструирует 5 семафоров - по одному на каждый принтер. Поскольку каждый принтер может обрабатывать только по одному запросу за раз, все семафоры устанавливаются в 1, что означает готовность всех принтеров печатать.
Машенька послала запрос на печать. Менеджер смотрит на семафоры и находит первый из них со значением 1. Перед тем, как Машенькин запрос попадет на физическое устройство, менеджер печати уменьшит соответствующий семафор на 1. Теперь значение семафора есть 0. В мире семафоров System V нуль означает стопроцентную занятость ресурса на семафоре. В нашем примере на принтере не будет ничего печататься, пока значение семафора не изменится.
Когда Машенька напечатала все свои плакаты, менеджер печати увеличивает семафор на 1. Теперь его значение вновь равно 1 и принтер может принимать задания снова.
При управлении семафором(при запросе ресурсов) процесс устанавливает флаг операции: Если флаг отрицателен, то его значение вычитается из семафора (семафор уменьшается - перев.). Это соответствует получению ресурсов, которые контролирует семафор. Если режим «без ожидания» не установлен, то вызывающий процесс засыпает, пока семафор не выдаст требуемое количество ресурсов (пока другой процесс не освободит их).
Если флаг положителен, то его значение добавляется к семафору. Это соответствует возвращению ресурсов множеству семафоров приложения. Ресурсы всегда нужно возвращать множеству семафоров, если они больше не используются!
Наконец, если флаг равен нулю, то вызывающий процесс будет усыплен (sleep()), пока значение семафора не станет нулем. Это соответствует ожиданию того, что ресурсы будут использованы на 100%. Хорошим примером был бы демон, запущенный с суперпользовательскими правами, динамически регулирующий размеры множества семафоров, если оно достигло стопроцентного использования.
Ввод вывод в ОС
Современный ОС практически никогда не дают возможности определенным пользователям (пользовательским программам) напрямую управлять вводом выводом. Сделано это по трем причинам:
Предоставление возможности пользователям напрямую управлять устройством ввода вывода, приводит к полной незащищенности всей вычислительной системы от плохо написанных и злонамеренных программ (вирусов).
Именно поэтому на аппаратном уровне предусмотрено следующее решение: все машинные команды касающиеся устройств управляющими вводом выводом являются привилегированными и исполнять их может лишь программа (часть ОС драйвера), обладающие соответствующими привилегиями.
Управление вводом выводом является сложной задачей, поскольку ввод вывод очень сильно зависит от архитектурной особенности конкретной ЭВМ. И кроме того управление вводом выводом весьма сложная задача, т.к для записи блока необходимо видеть несколько сотен машинных команд.
Поэтому ОС берет на себя роль посредника между пользовательской программой и реальной аппаратной ЭВМ.
Устройства ввода вывода являются существенным ресурсом ЭВМ, поэтому предоставление их отдельной программе приводит к конфликтам между программами и зависанию ОС из-за недостатков ресурсов.

Аппаратные особенности управления устройства ввода вывода в ЭВМ
В настоящее время существуют сотни различных устройств ввода вывода даже PC совместимых ЭВМ.
Все эти устройства могут быть разбиты на 2 больших класса: блочные и символьные устройства ввода вывода.
Блочные устройства позволяют в произвольном порядке читать либо записывать любой блок информации хранящийся на устройстве. Например: жесткий диск, дискета CD- диски, flesh-память.
Символьные устройства позволяют лишь последовательно читать или записывать последовательность символов. Например: клавиатура, мышь, модем, сетевая карта, принтер, сканер.
Классическая схема ЭВМ Фон Неймана представляет следующую организацию ЭВМ.

Для управлением устройством ввода вывода уметь вызывать машинными командами управляющими данным устройством.
Исторически имеются 3 различные схемы реализации этих команд:
различная адресация ОП и управляющих данных ( в том числе буферов) устройств ввода вывода.
Отдельная ОП, память команд ввода вывода, буфера устройств ввода вывода.

Преимуществом такой схемы является достаточно простая аппаратная реализация ввода вывода. Однако при этом существенно усложняется написание ОС, поскольку в данном случи необходимо работать с помощью различных команд с различными устройствами. Такая схема реализуется достаточно редко (на майнфреймах IBM).
Второй схемой
Преимуществом такой схемы является то, что при этом существенно ускоряется написание и логика работы ОС.
Нет необходимости держать в памяти отдельные машинные команды.
Всю ОС можно написать на С++ без ассемблерных вставок, в независимости от того на какой ЭВМ работает ОС.
Отдельные управляющие регистры и ячейки памяти соответствующие буферу устройств ввода вывода можно отображать на отдельные виртуальные страницы.
Недостатком такой схемы является то что она требует сложной организации ЭВМ. Это связано с тем, что ЭВМ при обращении к участку памяти должна разобраться в том, идет ли адресация к реальной ОП или к регистрам конкретного устройства и перенаправлять эти команды исполнение различным аппаратным частям ЭВМ. Поэтому в настоящее время такая схема используется достаточно редко.
В настоящее время более распространена ( на PC совместимых компьютерах) комбинированная схема организации команд ввода вывода: реальные ОП и буферы устройств ввода вывода расположенных в одном адресном пространстве, а управляющие регистры устройств другом адресном пространстве