Разработка драйвера виртуального жесткого диска - Курсовая работа

бесплатно 0
4.5 90
Повышение быстродействия операционной системы. Разработка драйверов для средств хранения данных, управление работой устройства командами PnP. Создание, настройка параметров и установка классового драйвера виртуального диска, его структура и свойства.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Все это приводит к повышению требований к скорости чтения и записи данных из файлов а также уменьшению времени доступа к каждому файлу в отдельности. Время доступа к произвольному месту на диске зависит от скорости перемещения считывающей головки. Но быстродействие механики диска имеет предел, и время ответа для жесткого диска на несколько порядков выше, чем для оперативной памяти. Все записываемые и считываемые данные не сразу пишутся на диск, а сохраняются в определенной области оперативной памяти - кэше. Однако буферизация только на основе оперативной памяти в подсистеме ввода-вывода оказывается недостаточной - разница между скоростью обмена с оперативной памятью, куда процессы помещают данные для обработки, и скоростью работы внешнего устройства часто становится слишком значительной, чтобы в качестве временного буфера можно было бы использовать оперативную память - ее объема может просто не хватить.Для увеличения скорости передачи, драйвер должен работать в блочном режиме передачи данных Драйвер должен быть конфигурируемым, для драйвера можно задать имя, которое присваивается диску и его размер Драйвер должен определять объем свободной физической памяти и ограничивать размер создаваемого виртуального диска. Драйвер может динамически выгружаться из системы и загружаться в нее без необходимости перезагружать компьютер Поскольку операции чтения записи, создания, переименования и удаления файлов выполняет драйвер файловой системы, то нужно обеспечивать считывание и запись необходимых файловой системе данных.Каждый драйвер в стеке изолирует аппаратно зависимые возможности от вышестоящего уровня. Они обрабатывают запросы пользователя или других приложений и вызывают или подсистему Win 32 или клиент драйвер пользовательского режима. Клиент драйвер пользовательского режима обрабатывает запросы от приложений или от подсистемы Win32. При получении запросов, которые требуют обработки в режиме ядра, он вызывает нужный клиент драйвер режима ядра или процедуру обработки запроса через подсистему Win32. Клиент драйвер режима ядра обрабатывает запросы подобно клиент драйверу в режиме пользователя, за исключением того, что обработка идет в режиме ядра.Классовые и фильтр-драйвера для устройств хранения предоставляют интерфейс взаимодействия между драйверами высокого уровня, расположенными в стеке над ними, и порт-драйвером предоставляемым операционной системой. Подсистема формирует пакет запроса на ввод/вывод(IRP), который приходит классовому драйверу устройства ввода вывода через один или несколько промежуточных драйверов фильтров верхнего уровня(таких как например драйвер файловой системы). Классовый драйвер ввода вывода дополняет полученный пакет IRP дополнительным SCSI блоком запроса (SRB) и посылает запрос порт драйверу через фильтр драйверы нижнего уровня.Для того, чтобы начать работу с диском, диск разбивается на разделы. Раздел - это непрерывная часть физического диска, которую операционная система представляет пользователю как логическое устройство (используются также названия логический диск и логический раздел). В частном случае, когда все дисковое пространство охватывается одним разделом, логическое устройство представляет физическое устройство в целом. Исходя из того, что объем диска ограничен объемом имеющейся свободной оперативной памяти, то нецелесообразно разбивать виртуальный диск на несколько разделом. Создание одного логического раздела позволяет упростить логику устройства и сэкономить место, которое используется для описания каждого раздела.Драйвер реализуется как набор процедур, каждая из которых предназначена для реализации отдельного типа обращений к драйверу со стороны диспетчера ввода/вывода. Процедуры, которые необходимо поддерживать классовому драйверу приведены в таблице 1. Здесь драйвер регистрирует свои остальные точки входа и выполняет свою общую инициализацию. ADDDEVICE Здесь создается объект-устройство, соответствующий полученному уведомлению от менеджера устройств, и выполняется инициализация данных, специфичных для данного устройства.Следует учесть тот факт, что при запросах на чтение /запись данных, в качестве параметров указывается : смещение в байтах с которого начинается передача данных (которое и служит индексом первого байта для чтения) и количество байт для передачи. Таким образом, виртуальный диск будет храниться в памяти как одномерный массив байт заданного размера. Следующим шагом выберем, каким образом мы зарезервируем память для диска. Существуют следующие типы резервируемой памяти: · Страничная память(Paged memory) - виртуальная память, которая может быть перемещена системой на жесткий диск в любой момент времени. В случае, если приложение обратиться к отсутствующей в физической памяти области своей виртуальной памяти, то возникает исключение по отсутствию страницы в памяти.Пользовательский процесс, вызывая функцию API (например, WRITEFILE), передает ей указатель на буфер, в котором размещается записываемая информация. Однако, передаваемый виртуальный адрес действительно б

План
СОДЕРЖАНИЕ

СОДЕРЖАНИЕ 1

ВВЕДЕНИЕ 2

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

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

1.2 Архитектура Windows 2000 4

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

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

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

2. КОНСТРУКТОРСКИЙ РАЗДЕЛ 11

2.1 Структура классового драйвера 11

2.2 Организация внутреннего хранения данных диска 12

2.3 Доступ к передаваемым данным 13

2.4 Обработка запросов Plug and Play 14

2.5 Обработка расширенных запросов 15

2.7 Расчет геометрии диска 16

2.6 Структура драйвера 17

3. ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ 18

3.1 Выбор и обоснование языка и среды программирования 18

3.2 Структуры данных классового драйвера 18

3.3 Блокировка выгрузки устройства 19

3.4 Процедуры драйвера виртуального диска 19

3.4.1 Инициализация драйвера 19

3.4.2Обработка запросов записи/чтения 22

3.4.3 Обработка расширенных запросов 24

3.4.4 Обработка запросов Plug and Play 26

3.4.5 Выгрузка драйвера 28

3.5 Программа настройки параметров виртуального диска 29

3.6 Установка драйвера 29

4. ЭКСПЕРИМЕНТАЛЬНО-ИССЛЕДОВАТЕЛЬСКИЙ РАЗДЕЛ 31

4.1 Описание экспериментов 31

4.2 Результаты экспериментов 31

ЗАКЛЮЧЕНИЕ 32

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 33

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?