Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Семафоры

Одним из механизмов реализации взаимоисключения является концепция семафоров. Семафор — это защищенная переменная, значение которой можно опрашивать и менять только при помощи специальных опе­раций Р и 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 номер блока, в котором размещается соответствующий элемент, a d смещение относительно начального адреса этого блока.

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

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

 

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

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

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

 



Поделиться:


Последнее изменение этой страницы: 2016-04-07; просмотров: 815; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.97.14.90 (0.011 с.)