Драйвер виртуального диска

Автор: Пользователь скрыл имя, 29 Ноября 2011 в 19:08, курсовая работа

Описание работы

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

Содержание

ВВЕДЕНИЕ………………………………………………………………….3
1. АНАЛИТИЧЕСКИЙ РАЗДЕЛ
1.1. Постановка задачи………………………………………………………5
1.2. Архитектура Windows XP………………………………………………5
1.3. Многослойная архитектура драйверов………………………………...8
1.4. Архитектура драйверов устройств хранения………………………….9
1.5. Выбор файловой системы……………………………………………...11
……………………….38

Работа содержит 1 файл

Курсовой проект 1.doc

— 369.00 Кб (Скачать)

                                        СОДЕРЖАНИЕ 

 ВВЕДЕНИЕ………………………………………………………………….3

1. АНАЛИТИЧЕСКИЙ  РАЗДЕЛ

1.1. Постановка  задачи………………………………………………………5

1.2. Архитектура  Windows XP………………………………………………5

1.3. Многослойная  архитектура драйверов………………………………...8

1.4. Архитектура  драйверов устройств хранения………………………….9

1.5. Выбор файловой  системы……………………………………………...11

……………………….38 

 

   ВВЕДЕНИЕ

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

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

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

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

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

 

   1. АНАЛИТИЧЕСКИЙ  РАЗДЕЛ 

  1.1 Постановка задачи

  К разрабатываемому драйверу виртуального диска предъявляются следующие  требования:

  Разрабатываемый драйвер должен добавлять в операционную систему новый виртуальный диск

  Для увеличения скорости передачи, драйвер  должен работать в блочном режиме передачи данных

  Драйвер должен определять объем свободной  физической памяти и ограничивать размер создаваемого виртуального диска.

  Драйвер перезагружается динамически в систему только после перезагрузки компьютера.

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

  Работа  драйвера не должна влиять на работу других драйверов. 

                                  1.2 Архитектура Windows XP.

          Разработка любой ОС предполагает компромиссные решения, поэтому ни одна из операционных систем не удовлетворяет всем требованиям каждого отдельного. 
     В XP существует два типа драйверов: драйверы пользовательского режима и драйверы режима ядра. В дальнейшем, говоря «драйвер», мы будем подразумевать драйвер режима ядра. Такие драйверы являются частью исполнительной системы, а более точно - элементами диспетчера ввода/вывода (архитектура NT и ее компоненты будут обсуждаться ниже). Как следует из названия, при работе драйвера режима ядра процессор находится в режиме ядра (RING 0 - см. любой справочник по защищенному режиму работы процессора).

  Драйвер XP располагается в файле с расширением .sys и имеет стандартный РЕ-формат (РЕ - Portable Executable).

  Драйверы  реализованы как самостоятельные  модули с четко определенным интерфейсом  взаимодействия с ОС. Все драйверы имеют определенный системный набор стандартных функций драйвера (standard driver routines) и некоторое число внутренних функций, определенных разработчиком.

  Драйверы  режима ядра можно разбить на три  типа:

  - драйверы высшего уровня (highest level drivers);

  - драйверы промежуточного уровня (intermediate drivers);

  - драйверы низшего уровня (lowest level drivers).

  Как будет показано ниже, такое разбиение  обусловлено многоуровневой моделью  драйверов (layered driver model). Для сохранения общности изложения, монолитный драйвер можно включить в эту схему, хотя он не использует многоуровневую архитектуру. В этом случае он будет «гибридом» - драйвером, принадлежащим одновременно к нескольким типам. Например, монолитный драйвер, имеющий интерфейс с приложением и осуществляющий доступ к оборудованию, будет одновременно драйвером высшего и низшего уровня.

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

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

  - сетевые драйверы.

  Отдельно  необходимо упомянуть архитектуру WDM - Windows Driver Model. Эта архитектура  позволяет создавать драйверы для Windows 98 и Windows 2000, совместимые на уровне двоичного кода.

  Характеристики  драйверов - это совокупность следующих  вопросов:

  1)Поддержка динамической загрузки и выгрузки (однако могут быть исключения).

  2).Необходимость следовать определенным протоколам взаимодействия с системой, нарушение которых чаще всего ведет к «синему экрану» (Blue Screen Of Death, BSOD).

  3) Возможность «наслоения» драйверов поверх друг друга. В Windows 2000 эта возможность возведена в абсолют, хотя монолитные драйвера все еще поддерживаются.

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

  Операционная  система Windows XP проектировалась как модульная, многоуровневая архитектура, поддерживающая расширения за счет добавление новых функций. Архитектура позволяет добавлять поддержку новых устройств и новых возможностей, например шифрующей файловой системы (EFS). Архитектура системы позволяет добавлять поддержку приложений, которые основаны на других операционных системах, например OS/2 или POSIX.  

  

                         Рис. 1. Архитектура ввода/вывода Windows XP.

 

   1.3 Многослойная архитектура драйверов

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

  На  рис. 2 показаны типы драйверов, которые  могут обслуживать устройство. В  действительности, некоторые из этих типов могут отсутствовать в  стеке. 

  

  Рис. 2 Многослойная архитектура драйверов 

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

  Клиент  драйвер пользовательского режима обрабатывает запросы от приложений или от подсистемы Win32. При получении запросов, которые требуют обработки в режиме ядра, он вызывает нужный клиент драйвер режима ядра или процедуру обработки запроса через подсистему Win32. Клиент драйвер реализуются как динамические библиотеки (DLL).

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

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

  Мини  классовый драйвер обрабатывает отдельные операции для устройства из этого класса.

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

  Все драйвера устройств хранения имеют  порт-драйвер. Например, SCSI порт драйвер выполняет ввод/вывод через шину SCSI.

  Мини  порт-драйвер обрабатывает специфичные  операции порт-драйвера.

  Драйвер аппаратной шины находится в самом  низу стека. Microsoft предоставляет эти драйвера для всех шин, как часть операционной системы. 

  1.4 Архитектура драйверов устройств хранения

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

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

  

  Рис. 3 Архитектура драйверов устройств  хранения 

  Запрос  ввода-вывода от приложений пользователя обрабатывается подсистемой ввода/вывода. Подсистема формирует пакет запроса на ввод/вывод(IRP), который приходит классовому драйверу устройства ввода вывода через один или несколько промежуточных драйверов фильтров верхнего уровня(таких как например драйвер файловой системы).

  Классовый драйвер ввода-вывода дополняет полученный пакет IRP дополнительным SCSI блоком запроса (SRB) и посылает запрос порт драйверу через фильтр драйверы нижнего уровня.

  Порт-драйвер  полученные пакеты SRB преобразует к формату для передачи по аппаратной шине, и посылает их адаптеру главной шины (HBA), через драйвер ввода-вывода шины и один или несколько фильтр-драйверов.

  Благодаря тому, что виртуальный диск не является реальным физическим устройством, нам не требуется производить доступ к аппаратной шине и формировать специальные пакеты SRB. Данные в оперативной памяти уже доступны на уровне классового драйвера; нецелесообразно и не нужно передавать IRP пакеты на нижний уровень.

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

  1.5 Выбор файловой  системы

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

Информация о работе Драйвер виртуального диска