Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Иерархия драйверов в операционной системе



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

Примеры иерархических структур драйверов рассмотрим на кон­кретных примерах.

В подсистеме дискового ввода-вывода нижний уровень образован аппаратными драйверами устройств (дисков), имеющих различные аппаратные интерфейсы: MFM, IDE, SCSI, SATA. Следующий уро­вень иерархии образуют программные драйверы конкретных файло­вых систем, которые могут быть использованы для хранения данных на дисках, подключённых по этим интерфейсам: FAT, ext2, ext3, NTFS, HPFS и др. Самый верхний уровень иерархии представлен программным драйвером виртуальной (обобщённой) файловой систе­мы, предоставляющей универсальный доступ к файлам в файловой системе любого типа на устройствах с любым интерфейсом.

В подсистеме обмена по сети нижний уровень образован аппа­ратными драйверами сетевых контроллеров: ne2000, Зсот, CNet, Realtek и т. п. Программные драйверы промежуточного уровня могут предоставлять различные уровни сетевых протоколов: UDP, TCP/IP, IPX/SPX, Tokenring и т. п. Программные драйверы верхне­го уровня предоставляют доступ в сеть через протоколы различных служб: http, ftp, nfs и т. п.

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

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

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

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

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

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

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

47. Проблема эффективности при доступе к вращающимся накопителям информации (например, жёстким дискам)

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

Для выполнения запроса на чтение или запись к диску последо­вательно выполняются следующие действия:

- каретка с головками перемещает головки таким образом, чтобы они оказались над заданной дорожкой;

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

- выполняется чтение или запись данных и их передача кон­троллеру диска.

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

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

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

Однако при большой интенсивности запросов к диску из-за боль­шого времени обслуживания каждого запроса возникнет очередь за­просов, в которой одновременно может находиться много программ. Учитывая механические особенности обслуживания каждого запро­са (прежде всего необходимость перемещать каретку с головками), можно попытаться переупорядочить запросы в очереди с тем, что­бы, ухудшив времена обслуживания отдельных «неудобных» запро­сов, значительно улучшить (сократить) времена обслуживания мно­жества других запросов. Тем самым возможно повысить эффектив­ность работы дисковой подсистемы.

48. Стратегии оптимизации среднего времени доступа к жёсткому диску





Дата публикования: 2015-02-03; Прочитано: 932 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...