Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Многослойное построение программного обеспечения, характерное для операционных систем вообще, оказывается особенно естественным и полезным при построении подсистемы ввода-вывода. При большом разнообразии устройств ввода-вывода, обладающих существенно различными характеристиками, иерархическая структура программного обеспечения позволяет соблюсти баланс между двумя требованиями: с одной стороны, необходимо учесть все особенности каждого устройства, а с другой стороны, обеспечить единое логическое представление и унифицированный интерфейс для устройств всех типов. При этом нижние слои подсистемы ввода-вывода должны включать индивидуальные драйверы, написанные для конкретных физических устройств, а верхние слои должны обобщать процедуры управления этими устройствами, предоставляя общий интерфейс если не для всех устройств, то по крайней мере для групп устройств, обладающих некоторыми общими характеристиками.
Примеры иерархических структур драйверов рассмотрим на конкретных примерах.
В подсистеме дискового ввода-вывода нижний уровень образован аппаратными драйверами устройств (дисков), имеющих различные аппаратные интерфейсы: 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!