Сигналы в ОС UNIX, посылаемые процессам, являются программными аналогами аппаратных прерываний

Файловая система – абстрактная модель, состоящая из независимых от устройства файлов.

Монтирование файловой системы – подключение к другой файловой системе ее корня.

Для выполнения операций с файлами в ОС предусмотрены системные вызовы.

Относительный путь к файлу – адрес от рабочего каталога до файла.

Абсолютный адрес – от корневого каталога до файла.

Дескриптор файла – целое число, которое возвращает ОС. Дескриптор дает информацию о правах доступа – если доступ к файлу разрешен, используется при работе с файлом.

Именованный канал – это разновидность псевдофайла, который используется для организации взаимодействия процессов. (Для обмена данными между процессами, один процесс использует другой как исходные данные).

Виртуальная и физическая память

Виртуальная память – множество всех допустимых значений виртуального адреса для некоторого процесса.

Физическая память – реально существующие ячейки памяти.

Виртуальное адресное пространство процесса зависит от архитектуры процессора и от системы программирования и практически не зависит от физической памяти компьютера.

Виртуальная память позволяет запускать программы, размер которых превышает объем физической памяти.

При страничной организации виртуальной памяти оперативная память разбивается на физические страницы(одинаковые по размеру), а программа на виртуальные.

При сегментной организации виртуальной памяти: сегмент – логический элемент программы, для каждой задачи – таблица сегментов.

Свопинг сегментов – перемещение сегментов между оперативной и внешней памятью.

Механизм свопинга: каждый процесс сначала целиком размещается в оперативной памяти, а затем сбрасывается на диск, уступая место другим процессам.

Режимы

Мультипрограммный режим работы позволяет выполнять один процесс/поток, пока другие блокированы или находятся в состоянии «Готовность».

В этом режиме в памяти поддерживается более одного процесса, готового использовать ресурсы.

В этом режиме повышается пропускная способность системы и сокращается время простоя центрального процессора.

Режим разделения времени предполагает, что на каждую задачу поочередно выделяется квант времени, после чего процессор передается другой задаче.

При многопоточном(многозадачном) режиме разработчик программы должен позаботиться о разделении ресурсов между потоками. ОС при этом только разделяет процессорное время между потоками.

Многопоточность – возможность параллельно выполнять несколько видов операций в рамках одного процесса.

Мультитерминальный режим – диалоговый режим работы и режим мультипрограммирования.


Дидактическая единица 2.

Последовательный процесс – отдельная программа с ее данными, выполняющаяся на последовательном процессоре.

Последовательная трансляция двух исходных программ – это 2 разных процесса.

Концепция процесса предполагает, что он – носитель данных и выполняет операции, связанные с обработкой этих данных.

Поток – часть процесса.

Очередь процессов/потоков – список процессов/потоков, сформированный в соответствии с алгоритмом планирования.

Состояния процесса:

Активное:

– процесс может конкурировать за ресурсы вычислительной системы

– процесс в состоянии выполнения

Идентификатор – часть дескриптора процесса, часть блока управления процессами.

Идентификатор используется для:

– реализаций перекрестных ссылок на таблицы процессов из других таблиц.

– указания операционной системе процессов, обменивающихся информацией

Дескриптор файла – целое число, которое возвращает ОС. Дескриптор дает информацию о правах доступа – если доступ к файлу разрешен, используется при работе с файлом.

Дескриптор содержит:

– идентификатор процесса (PID – Process Identifier)

– состояние процесса

– приоритет процесса, в соответствии с которым супервизор дает ресурсы.

– указатели ресурсов процесса

– указатели адресов процесса во внешней памяти

– область сохранения регистров

Контекст процесса:

– состояние регистров и программного счетчика

– режим работы процессора

– указатели на открытые файлы

– информация о незавершенных операциях ввода-вывода

– коды ошибок

Тождество родительского и дочернего процессов нарушается из-за разных сегментов и контекстов.

При инициализации ОС UNIX для интерпретации команд средства управления иерархией процессов используются в сеансах работы пользователей в монопольном или многопользовательском режимах.

Все дочерние потомки процессов представляют собой единое дерево процессов.

Дочернему процессу через контекст передается таблица пользовательских дескрипторов файлов(файлов, открытых родительским процессом).

В ОС UNIX каждый процесс относится к одному из трех приоритетных классов:

– класс реального времени

– класс системных процессов

– класс процессов разделения времени (приоритет вычисляется пропорционально пользовательской и системной части, причем пользовательская часть может быть изменена администратором в сторону повышения либо понижения, а владельцем файла – только в сторону понижения)

WINDOWS – все процессы равнозначны.

Планирование:

– задача выбора из списка готовых процессов/потоков

– определение, какой из процессов во входной очереди должен быть переведен в очередь «готовых процессов» при освобождении ресурсов.

Различают динамическое (решение принимается во время работы системы на основе анализа текущей ситуации) и статическое планирование (решения приняты заранее).

Вытесняющий алгоритм планирования процессов/потоков – решение о переключении процессора с одного процесса на другой принимается ОС.

Квантование – предоставление непрерывного периода процессорного времени.

Алгоритм планирования, основанный на приоритетах – каждый поток/процесс имеет изначальную количественную характеристику, на основании которой определяется порядок их выполнения.

Диспетчеризация – реализация решения планирования (переключение).

Приоритеты:

– динамический

– фиксированный

– относительный (процесс сам покидает процессор, либо происходит ошибка)

– абсолютный (процесс сам покидает процессор, либо происходит ошибка, либо появляется процесс с более высоким приоритетом)

При планировании с абсолютными приоритетами при появлении в очереди процесса с более высоким приоритетом, активный процесс прерывается и переходит в состояние готовности.


Дидактическая единица 3.

Абсолютная адресация памяти означает использование физических адресов ячеек памяти в качестве операндов в командах. Программа привязана к конкретному адресу в загрузки в память.

Адресное пространство процесса – набор адресов, который может быть использован процессом для обращения к памяти.

Использование отдельных адресных пространств для команд и данных позволяет

– увеличить суммарный объем адресуемой памяти,

– совместно использовать одни и те же страницы разными процессами.

Базовые (перемещающие) регистры процессора позволяют загружать программу в произвольное место в памяти.

Механизм свопинга: каждый процесс сначала целиком размещается в оперативной памяти, а затем сбрасывается на диск, уступая место другим процессам.

При использовании свопинга при мультипрограммировании эффективность распределения памяти снижается вследствие фрагментации памяти.

Уплотнение памяти при использовании свопинга заключается в перемещении при первой возможности всех процессов в нижние адреса.

При использовании свопинга процесс, которому часть памяти выделяется динамически, должен заранее получать несколько больший объем памяти, чем ему требуется в начале.

Учет свободных участков памяти:

– с помощью битовой карты (матрицы) предполагает компромисс между временем поиска в битовой карте и размеров блока памяти.

– с помощью связанного списка свободных занятых блоков позволяет выделять участки памяти произвольных размеров.

При распределении памяти фиксированнымиразделами в каждом разделе в каждый момент времени может располагаться один процесс.

Основной недостаток фиксированных разделов – фрагментация памяти.

При распределении подвижными разделами память каждому процессу выделяется при его инициализации. Вследствие того, что для освободившегося участка при таком распределении нет программы для загрузки, происходит фрагментация памяти. Фрагментация преодолевается перемещением активных программ в памяти.

При заполнении свободных участков памяти фиктивными процессами происходит жесткая привязка к месту загрузки в оперативную память.

Устранить невозможность загрузки программы в произвольное место в памяти можно с помощью повторного редактирования связей в программе перед загрузкой в оперативную память.

Оверлейная организация программ ( оверлей – фрагмент, который может выполняться независимо от других оверлеев) заключается в ручном разбиении программ на части и поочередной загрузке частей программы в память по мере необходимости.

Виртуальная память

Главная идея: у каждого процесса имеется собственное адресное пространство, которое разбивается на страницы, отображаемые на физическую память. Программы можно размещать в виртуальном адресном пространстве вместо физической памяти. Преобразование виртуального адреса в физический происходит в оперативной памяти выполняется с помощью аппаратного диспетчера памяти, с помощью таблицы страниц.

Особенности виртуальной памяти:

– все программы имеют рабочее множество часто используемых адресов, объем которого в каждый момент времени существенно меньше размера программы

– страницы выгржаются на диск целиком и загружаются в память целиком

– возможность применения высокоэффективных алгоритмов управления памятью

– использование виртуальной памяти в однопрограммном режиме приводит к замедлению процесса, если размер программы больше опер.памяти. (из-за постоянной загрузки и выгрузки частей программы)

– вирт.адреса поступают в диспетчер памяти, который отображает вирт.адреса на адреса физической памяти. Если запрощенная страница отсутствует, происходит страничный сбой и происходит прерывание процесса. При страничном сбое управление передается страничному супервизору.

Преимущества виртуальной памяти перед свопингом:

– загрузка и выгрузка отдельных страниц выполняется существенно быстрее, чем свопинг целых процессов

– виртуальная память позволяет выполнять программы, размер которых превышает объем доступной оперативной памяти.

Преимущества вирт.организации памяти перед оверлейной:

– освобождение программиста от решения задач управления памятью

В многозадачных системах виртуальная память обеспечивает высокуюпроизводительность системы за счет того, что:

– может быть увеличено число параллельно выполняющихся процессов

– пока один процесс ждет подкачки страниц, центральный процессор может переключиться на другой

Недостатки виртуальной организации памяти:

– необходимость наличия дополнительного оборудования и операций по поддержке виртуализации

– возможность перегрузки системы, когда процессы постоянно запрашивают загрузку страниц

Сегментная организация памяти:

– каждый сегмент содержит собственное адресное пространство

– упрощается совместное использование процедур и данных несколькими процессами

– возможны разные виды защиты разных сегментов

– упрощается компоновка отдельно скомпилированных процедур

– должна поддерживаться архитектурой процессора

Сегмент – логический объект, который может содержать процедуру, стек, массив или набор скалярных данных. Длина сегмента может увеличиваться при добавлении ресурсов памяти или сокращаться при удалении используемых ресурсов памяти. Для обращения к памяти требуется номер сегмента и адрес внутри сегмента(двумерная адресация).

Сегмент может частично или полностью перекрываться другим сегментом. Размер сегмента ограничивается возможностью адресации сегментов процессором.

Реализация чистой сегментации памяти вызывает внешнюю фрагментацию. (при удалении фрагмента из памяти, на это место может поместиться только другой сегмент меньшего размера)

Сегментация памяти позволяет уменьшить длины адресов, используемых в командах.

Страничная организация памяти:

– виртуальный адрес – адрес, сгенерированный программой, в т.ч. с исп. индексной адресации, базовых и сегментных регистров

– размер страницы в точности соответствует размемру блока физической памяти

– перенос информации между ОП и диском всегда осуществляется целыми страницами

– таблица страниц отображает виртуальные страницы на страничные блоки в физической памяти

– наличие страницы в памяти отмечается битом присутствия-отсутствия в таблице страниц

– если бит M(Modified) модификации в таблице страниц установлен в ноль, страницу не нужно сбрасывать на диск при удалении ее из памяти (изменений нет, перезапись не нужна), и устанавливается в единицу, каждый раз, когда в страницу ведется запись.

– бит R(Read) – устанавливается в единицу при каждом обращении на чтение или запись

– каждая строка таблицы страниц соответствует странице виртуального адресного пространства. Бит R периодически сбрасывается, чтобы отличить страницы, к которым в последнее время не было обращений от тех страниц, к которым обращения были

– каждой команде требуется обращение к таблице страниц для выборки команды, операндов, а также записи результата

– таблица страниц может размещаться в быстрой памяти процессора и в ОП (размещение таблицы страниц в опер.памяти ускоряет переключение контекста)

– при переключении процессора с одного процесса на другой требуется полная перезагрузка таблицы страниц

– адрес виртуальной страницы на диске вычисляет ОС

– уменьшение размера страницы снижает внутреннюю фрагментацию и увеличивает время обработки страничного прерывания

– время загрузки страницы в память почти не зависит от ее размера

– обращение процесса к странице, который отсутствует в физической памяти вызывает системное прерывание по страничному сбою

– буфер быстрого преобразования адреса ускоряет отображение виртуальных страниц на физические за счет сокращения обращений к таблице страниц

– при условии, что адресное пространство намного объемнее физической памяти, инвертированная таблица страниц занимает меньше памяти

– сокращение размеров таблицы страниц может быть достигнуто предоставлением каждому процессу отдельного адресного пространства

– алгоритмы замещения страниц используют информацию об обращении к страницам в прошлом для прогнозирования

– использование информации о первом прогоне программы для прогнозирования ее поведения в будущем используется при моделировании, но в практических ОС не имеет смысла

– алгоритм замещения NRU (Not Recently Used) удаляет из памяти произвольную страницу, относящуюся к самому низкому непустому классу, удаляет страницы, к которым в последнее время не было обращений

– алгоритм FIFO (First In – First Out) удаляет страницу, которая была загружена раньше других. Новые страницы записываются в конец таблицы, удаляется верхняя страница. Модификация этого алгоритма «Второй шанс» предусматривает проверку бита R, если равен 0 – удаляется, если 1, то сбрасывается в 0 и ставится в конец таблицы

– алгоритм замещения страниц «Часы» отличается от алгоритма FIFO и его модификации «Второй шанс» тем, что не требует постоянного перемещения строк в таблице страниц. Таблица при этом хранится в виде циклического списка в виде часов, где стрелка указывает на самую старую страницу. При страничном сбое эта страница замещается новой, а стрелка сдвигается на строку. По сути – это закольцованный стек.

– алгоритм LRU (Least Recently Used) – наиболее оптимален. Наиболее используемые страницы перемещаются наверх таблицы, наименее – вниз. Подход затратен для каждой команды, почти невыполним.

Если в ОП нет свободного места, то ОС выбирает редко используемый страничный блок и сбрасывает его содержимое на диск; на место выгруженного файла помещает страницу, к которой обратился процесс, вносит в таблицы и заново запускает прерванную команду.

Фрагментация памяти при страничной организации

– сохраняется только за счет неиспользуемых участков памяти в последней странице, используемой странице

– устраняется с точностью до целых страниц

Страничная и сегментная организация памяти МОГУТ существовать совместно


Дидактическая единица 4.

Прерывания от устройств ввода-вывода относят к классу внешних прерываний, имеют более высокий приоритет, чем программные прерывания.

У прерываний от средств контроля процессора, от системного таймера более высокий приоритет, чем у внешних прерываний.

Диспетчер(менеджер, супервизор) ввода-вывода – компонент ОС, управляющий вводом-выводом.

Диспетчер ввода-вывода:

–получает запросы на ввод-вывод от супервизора задач(управляющего компонента), программных модулей ОС.

– получает управление от процессов/потоков при поступлении запроса на ввод-вывод

– вызывает распределители каналов и контроллеров

планирует ввод-вывод

занимается выводом данных из системного буфера

передает сообщения об ошибках, если они проиходят

– посылает сообщения о завершении операции ввода-вывода запросившей эту операцию задаче и снимает ее с состояния ожидания

– при получении сигналов прерываний от устройств ввода-вывода диспетчер ввода-вывода идентифицирует эти сигналы и передает управление соответствующим программам обработки.

По завершении операции ввода-вывода, управление передается супервизору(диспетчеру) процессов(задач).

Управляющий компонент или супервизор задач – модуль супервизора ОС, который получает запросы от прикладных задач на выполнение тех или иных операций, в том числе и на ввод-вывод.

Устройства ввода-вывода:

– блок-ориентированные (блочные) – позиционируемые устройства, хранят информацию в блоках фиксированной длины, у каждого из которых есть свой адрес. Примеры: жесткие диски, приводы компакт-дисков, USB-флэшки.

– байт-ориентированные (символьные, поточные) – не адресуемые устройства, выдают или воспринимают поток символов, не относящийся ни к какой блочной структуре. Не имеют операции позиционирования. Примеры: принтеры, сетевые интерфейсы, мыши (в качестве указателя).

Способы осуществления ввода-вывода:

Программируемый ввод-вывод – способ осуществления ввода-вывода, при котором процессор посылает необходимые команды контроллеру ввода-вывода, после чего процесс находится в состоянии ожидания завершения операции ввода-вывода.

Ввод-вывод, управляемый прерываниями – способ осуществления ввода-вывода, при котором процессор может передать контроллеру команду ввода-вывода и затем перейти к выполнению другой работы, а контроллер при готовности обмениваться данными прерывает процессор для его обслуживания.

Прямой доступ к памяти(DMA – direct memory access) - способ осуществления ввода-вывода, при котором специальный модуль управляет обменом данными между основной памятью и контроллером ввода-вывода.

Обращение к командам ввода-вывода в пользовательском режиме вызывает выполнение системного вызова, и управление через механизм прерываний передается коду ОС.

Главный принцип организации ввода-вывода: любые операции по их управлению объявляются привилегированными и могут выполняться только кодом самой ОС.

В большинстве процессоров есть режимы пользователя и ядра. Операции ввода-вывода выполняются в режиме ядра.

Режимы управления вводом-выводом:

1) режим обмена с опросом готовности устройства ввода-вывода (драйвер, управляющий процессом обмена данными с внешним устройством, выполняет в цикле, до тех пор, пока сигнал готовности не появится, команду «проверить наличие сигнала готовности», что приводит к нерациональному использованию времени центрального процессора)

2) режим обмена с прерываниями (тайм-аут – максимальное время, в течение которого устройство в.-в. или его контроллеров должны выдать сигнал запроса на прерывание; драйверы, работающие в этом режиме могут иметь секцию запуска, одну или несколько секций продолжения, секцию завершения; основную работу по передаче данных осуществляет секция продолжения)

Закрепленные устройства – предоставляются некоторому вычислительному процессу на всё его время жизни (например, устройства с последовательным доступом)

Виртуальные устройства – понятие, которое используется для устройств в.-в., которые не могут быть разделяемыми, но совместно используются многими параллельно выполняющимися задачами.

Спулинг (Spooling – Simultaneous Peripheral Operation On-Line) – ввод-вывод с буферизацией, имитация работы с устройством в режиме непосредственного подключения, создание видимости разделения устройства, являющегося фактически устройством с последовательным доступом, использующимся только монопольно и закрепленным за процессом; более узкое понятие, чем «виртуальное устройство».


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: