0079 - Сетевые операционные системы - Нижние половины драйверов выполняются с низким уров

В. Г. Олифер, Н. А. Олифер. Сетевые операционные системы. 2001

 В. Г. Олифер, Н. А. Олифер 
.  Сетевые операционные системы 
. 2001
. 5-272-00120-6
. Питер
. 
. Эта книга — не о конкретной системе и даже не о конкретном типе операционных систем. Она рассматривает фундаментальные концепции и принципы построения, справ
Название: 
Сетевые операционные системы
Автор: 
В. Г. Олифер, Н. А. Олифер
Год: 
2001
Издательство: 
Питер
Описание: 

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

Нижние половины драйверов выполняются с низким уровнем приоритета, так что любые запросы прерываний устройств могут прервать их обработку. Нижние половины обработчиков прерываний драйверов . Часто единственной обязанностью верхней половины обработчика прерываний является постановка в очередь нижней половины для последующего выполнения. Примером разделения функций между верхней и нижней половинами является обработчик прерываний от таймера. Затем верхняя половина ставит в очередь диспетчера прерываний нижнюю половину и завершает свою работу. Нижняя половина обработчика прерываний таймера занимается вычислением статистики на основании данных о тактах, собранных верхней половиной. Нижняя половина вычисляет такие статистические показатели, как средняя загрузка системы в пользовательском и системном режимах, обновляет глобальную переменную системного времени, а также уменьшает оставшееся значение кванта времени текущего процесса. Затем нижняя половина просматривает очередь процедур, ожидающих своего вызова по времени, в число которых входит и планировщик процессов. Функция стратегии драйвера . Между ним и пользовательским процессом всегда работает промежуточный программный слой или слои — либо слой дискового кэша вместе со слоем файловой системы, либо слой байт. В число наиболее важных элементов структуры . В заголовок запроса помещается также другая информация, необходимая для работы контроллера, — это операция чтения или записи, адрес системной памяти, куда нужно поместить прочитанную информацию или откуда контроллеру нужно считать записываемые данные. Драйвер ведет две очереди для передачи запросов на выполнение операций чтения и записи контроллеру диска. После помещения нового запроса в одну из очередей функция стратегии разрешает прерывания от данного устройства и завершает свою работу. Всю дальнейшую работу по обслуживанию поставленных в очереди запросов выполняют контроллер и обработчики прерываний. По этому сигналу вызывается верхняя часть обработчика прерываний дискового драйвера . Эта процедура считывает данные из регистра управления контроллера для того, чтобы определить, корректно ли завершилась запрошенная операция. Если признак ошибки в регистре не установлен, то в рабочую очередь контроллера понещаетря следующий заголовок запроса из очереди приостановленных запросов, а по завершении операций вызывается функция . Специальные файлы и аппаратные драйверы . Дополнительные возможности файловых систем . Функции чтения и записи данных выполняют обмен заданной последовательности байт из буфера в области пользователя с контроллером символьного устройства. Функции, используемые для отображения специального файла в виртуальную память, рассматриваются ниже в разделе . Если драйвер не поддерживает какую. Например, драйвер принтера может не поддерживать функцию . Для тех случаев, когда функция должна обязательно поддерживаться . Функция записи осуществляет передачу данных из пользовательского буфера процесса, выдавшего запрос на обмен, в системный буфер, организованный в виде очереди байт. Передача байт идет до тех пор, пока системный буфер не заполнится до некоторого, заранее определенного в драйвере уровня. Затем функция записи драйвера приостанавливается, выполнив системную функцию . Если при очередном прерывании оказывается, что очередь байт уменьшилась до определенной нижней границы, то обработчик прерываний активизирует секцию записи драйвера путем обращения к системной функции . Аналогично организована работа драйвера при чтении данных с устройства. Отображаемые в память файлы . Взаимодействие секции записи драйвера с модулем обработки прерывания Отображаемые в память файлы Отображение файла в виртуальное адресное пространство процесса применяется для упрощения программирования. Такое отображение позволяет работать с данными файла с помощью адресных указателей как с обычными переменными программы, без использования несколько громоздких файловых функций . При отображении файлов в память широко используются механизмы подсистемы виртуальной памяти. Действительно, подсистема виртуальной памяти связывает некоторый сегмент виртуального адресного пространства процесса с некоторым файлом или частью . Дополнительные возможности файловых систем файла. Так, кодовый сегмент и сегмент инициализированных данных всегда связаны с файлом, в котором находится исполняемый модуль приложения. Сегменты стека и неинициализированных данных связаны с выделенными им областями системного страничного файла. При обращении кода приложения к некоторой переменной сегмента данных подсистема виртуальной памяти читает с диска данные из блоков, соответствующих странице виртуального адресного пространства, содержащей эту переменную, и переносит данные в оперативную память, если на момент обращения эта страница там отсутствовала. В сущности, подсистема виртуальной памяти выполняет обмен данными с файлом по запросу, только этот запрос формулируется косвенно, а не путем явного описания области файла, с которой нужно выполнить обмен данными, как это происходит при выполнении операций . Механизм отображения файлов. Отображение данных файла в память осуществляется с помощью системного вызова, который указывает, какую часть какого файла нужно отобразить в память, а также задает виртуальный адрес, с которого должен начинаться новый сегмент виртуальной памяти процесса. Подсистема управления виртуальной памятью создает по этому системному вызову новый сегмент процесса, в дескриптор которого помещает указатель на открытый отображаемый файл. При первом же обращении приложения по виртуальному адресу, принадлежащему новому сегменту, происходит страничный отказ, при обработке которого из отображаемого файла читается несколько блоков и данные из них помещаются в физическую страницу. Этот вызов имеет следующие аргументы. Для сравнения рассмотрим две функции, которые выполняют одни и те же действия . Отображение в память блок. Дополнительные возможности файловых систем устройств в оперативную память отображается внутренняя память контроллера устройства, например память сетевого адаптера .