Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Операционные системы – Докторов А.Е.





1. Определение процесса. Состояние процесса. Диаграммы смены состояний процессов. Блок управления процессом. Операции над процессами.

Определения термина «процесс»

Под процессом понимается “программа во время выпол­нения”.

Часто применяются также и такие определения процесса, как:

- нечто, представленное в виде “блока управления процессом” в операционной системе;

- объект, которому выделяются процессоры;

- “диспетчируемый” модуль.

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

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

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

В однопроцессорной машине в каждый конкретный момент времени может выпол­няться только один процесс, однако несколько процессов могут находиться в состоянии готовности, а несколько—в состоянии блокировки. Поэтому создается список готовых к выполнению процессов и список заблокированных процессов.

Переход процесса из состояния в состояние

Когда в систему поступает некоторое задание, она создает соответствующий процесс, который затем устанавливается в конец списка готовых процессов. Этот процесс постепенно продвигается к головной части списка — по мере завершения выполнения преды­дущих процессов. Когда процесс оказывается 1-ым в списке го­товых и когда освобождается ЦП, этому про­цессу выделяется ЦП и говорят” что происходит смена состояния



Пробуждение процесса – переход из состояния готовности в состояние вы­полнения. Предоставление ЦП 1-му процессу списка готовых процессов называется запуском, или выбором процесса для выполнения, и это делается при помощи системной программы, называемой диспетчером. Подобную смену состояния обозначается следующим образом: запуск (имяпроцесса): готов -> выполняется.

Чтобы предотвратить либо случайный, либо умышленный монопольный захват ресурсов машины каким-то од­ним процессом; ОС устанавливает в специальном аппаратном таймере прерываний некоторое значение, определяющее временной интервал, или квант времени, в течение которого дан­ному процессу пользователя разрешается занимать ЦП. Если процесс добровольно не освободит ЦП до истечения указанного временного интервала, таймер выработает сигнал прерывания, по которому управление будет передано ОС. После этого ОС переведет ранее выполнявшийся про­цесс в состояние готовности, а 1-ый процесс списка готовых – в состояние выполнения. Эти смены состояний обозначаются так:

истечение кванта (имяпроцесса): выполняется -> готов и

запуск (имяпроцесса): готов -> выполняется

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

блокирование (имяпроцесса): выполняется -> блокирован

В нашей модели с 3-мя состояниями может иметь место еще лишь одна допустимая смена состояния — когда завершается опе­рация ввода-вывода (или происходит какое-либо другое событие, ожидаемое процессом). При этом процесс переходит из состояния блокировки в состояние готовности. Эта смена состояния обозна­чается так: пробуждение (имяпроцесса): блокирован -> готов

Таким образом существуют 4 возможных смены со­стояния процесса:

запуск (имяпроцесса): готов -> выполняется

истечениекванта (имяпроцесса): выполняется -> готов

блокирование (имяпроцесса): выполняется -> блокирован

пробуждение (имяпроцесса): блокирован -> готов

Отметим, что единственная смена состояния, инициируемая самим процессом пользователя,— это блокирование, остальные три смены состояния инициируются объектами, внешними по отно­шению к данному процессу.

Блок управления процессом

Представителем процесса в ОС является блок управления процессом (РСВ – process control block). Это структура данных, содержа­щая определенную важную информацию о процессе, в т. ч.:

- текущее состояние процесса;

- уникальный идентификатор процесса;

- приоритет процесса;

- указатели памяти процесса;

- указатели выделенных процессу ресурсов;

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

Когда ОС пере­ключает ЦП с процесса на процесс, она использует области сохра­нения регистров, предусмотренные в РСВ, чтобы запомнить инфор­мацию, необходимую для рестарта (повторного запуска) каждого процесса, когда этот процесс в следующий раз получит в свое рас­поряжение ЦП.

Таким образом, РСВ — это объект, который определяет про­цесс для ОС.

Операции над процессами

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

- создание (образование) процесса;

- уничтожение процесса;

- возобновление процесса;

- изменение приоритета процесса;

- блокирование процесса;

- пробуждение процесса;

- запуск (выбор) процесса.

Создание процесса состоит из многих операций, включая:

- присвоение имени процессу;

- включение этого имени в список имен процессов, известных системе;

- определение начального приоритета процесса;

- формирование блока управления процессом РСВ;

- выделение процессу начальных ресурсов.

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

Уничтожение процесса означает его удаление из системы. Ре­сурсы, выделенные этому процессу, возвращаются системе, имя процесса в любых системных списках или таблицах стирается, и блок управления процессом освобождается.

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

Возобновление (или активация) процесса — операция подго­товки процесса к повтор. запуску с той точки, в которой он был приостановлен.

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

 

 

2. Ядро операционной системы. Основные функции. Асинхронные параллельные процессы. Семафоры.

Все операции, связанные с процессами, выполняются под уп­равлением той части ОС, которая называется ее ядром. Ядро представляет собой лишь небольшую часть кода ОС в целом, однако оно относится к числу наиболее интенсивно используемых компонент системы. По этой причине ядро обычно резидентно размещается в основной памяти, в то время как другие части ОС перемещаются во внешнюю память и обратно по мере необходимости.

Одной из самых важных функций, реализованных в ядре, яв­ляется обработка прерываний. В больших многоабонентских системах в процессор поступает постоянный поток прерываний. Быстрая реакция на эти прерывания играет весьма важную роль с точки зрения полноты использования ресурсов системы и обеспечения приемлемых значений времени ответа для пользователей, работающих в диалоговом режиме.

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

Основные функции ядра

Ядро ОС, как правило, содержит программы для реализации следующих функций:

- обработка прерываний;

- создание и уничтожение процессов;

- переключение процессов из состояния в состояние;

- диспетчирование;

- приостановка и активизация процессов;

- синхронизация процессов;

- организация взаимодействия между процессами;

- манипулирование блоками управления процессами;

- поддержка операций ввода-вывода;

- поддержка распределения и перераспределения памяти;

- поддержка работы файловой системы;

- поддержка механизма вызова-возврата при обращении к проце­дурам;

- поддержка определенных функций по ведению учета работы машины.

Асинхронные параллель­ные процессы. Концепция параллелизма

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

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

Взаимоисключение.

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

Способ взаимодействия, при котором во время обращения од­ного процесса к разделяемым данным всем другим процессам это запрещается, называется взаимоисключением.

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

Семафоры

Одним из механизмов реализации взаимоисключения является концепция семафоров. Семафор — это защищенная переменная, значение которой можно опрашивать и менять только при помощи специальных опе­раций Р и V и операции инициализации, которую мы будем назы­вать “инициализация семафора”. Двоичные семафоры могут прини­мать только значения 0 и 1. Считающие семафоры (семафоры со счетчиками) могут принимать неотрицательные целые значения.

Операция Р над семафором записывается как P(S) и выполняется следующим образом:

если S > О то S = S - 1 иначе (ожидать на S).

Операция V над семафором S записывается как V(S) и выпол­няется следующим образом:

если (один или более процессов ожидают на S) то

(разрешить одному из этих процессов продолжить работу)

иначе S= S + 1.

Мы будем предполагать, что очередь процессов, ожидающих на S, обслуживается в соответствии с дисциплиной “первый пришед­ший обслуживается первым” (FIFO).

Операции Р и V являются неделимыми. Участки взаимоисключения по сема­фору S в процессах обрамляются операциями P(S) и V(S). Если од­новременно несколько процессов попытаются выполнить операцию P(S), это будет разрешено только одному из них, а остальным при­дется ждать.

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

 

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

 

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

Те адреса, на которые делает ссылки выполняющийся процесс, называются виртуальными адресами, а те адреса, которые сущест­вуют в первичной памяти, называются реальными (или физическими) адресами. Соответственно различают пространство (диапазон) виртуальных адресов V процесса и пространство (диапазон) реальных адресов R компьютера.

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

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

Способы реализации (организации) виртуальной памяти:

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

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

Поблочное отображение

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

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

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

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

Адреса в системе поблочного отображения являются двухкомпонентными («двумерными»). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором этот элемент располагается, и смещение этого элемента относительно начала блока. Виртуальный адрес v указывается при помощи упорядоченной пары (b, d), где b номер блока, в котором размещается соответствующий элемент, ad смещение относительно начального адреса этого блока.

Преобразование адреса виртуальной памяти v = (b, d) в адрес реальной памяти r осуществляется следующим образом. Каждый процесс имеет собственную таблицу отображения блоков, которую система ведет в реальной памяти. Реальный адрес а этой таблицы загружается в специальный регистр центрального процессора, называемый регистром начального адреса таблицы блоков. Таблица отображения блоков содержит по одной строке для каждого блока процесса, причем эти строки идут в последовательном порядке, сначала блок 0, затем блок 1 и т. д. Номер блока b суммируется с базовым адресом, а таблицы, образуя реальный адрес строки таблицы для блока b.

Рис. Преобразование виртуального адреса при поблочном отображении.

 

Эта строка содержит реальный адрес b' блока b в реальной памяти. К этому начальному адресу b' прибавляется смещение d, так что образуется нужный реальный адрес r = b'+d.

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

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

 

4. Способы распределения памяти под файлы на жестком диске. Поблочное распределение памяти с помощью таблиц отображения.

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

Файловая система это часть общей системы управления па­мятью, ответственная преимущественно за управление файлами, которые хранятся во внешней памяти.

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

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

- Связное распределение внешней памяти.

- Несвязное распределение внешней памяти.

Связное распределение памяти

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

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

Несвязное распределение памяти

При несвязном распределении памяти используется распределение с помощью списков секторов.

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

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

Несвязное распределение памяти имеет свои недостатки: выборка логически смежных записей может быть сопряжена с длительными поисками; приходится также идти на накладные расходы машинного времени для обработки ссылок-указателей.

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

В этой схеме память распределяется не индивидуальными секто­рами, а блоками смежных секторов (иногда эти блоки называют”экстентами). При выделении новых блоков система стремится выбирать свободные блоки, как можно ближе к уже существующим блокам файла. При каждом обращении к файлу вначале определяет­ся соответствующий блок, а затем соответствующий сектор в рам­ках этого блока.

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

В схеме с цепочками блоков строка в директории пользователя указывает на 1-ый блок файла. Каждый из блоков фиксированной длины, входящих в состав файла, содержит 2 час­ти: блок данных и указатель следующего блока. Минимальная еди­ница выделяемой памяти — это блок фиксированного размера, вклю­чающий, как правило, много секторов. Для нахождения конкретной записи необходимо просмотреть цепочку блоков, найти соответствующий блок, а затем просмотреть этот блок, пока не будет найдена соответствующая запись.

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

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









Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2021 zdamsam.ru Размещенные материалы защищены законодательством РФ.