© А.Д. Руднев, А.А. Шалыто
Санкт-Петербургский государственный университет информационных технологий, механики и оптики
В настоящее время только небольшая часть драйверов (в основном драйверы сетевых карт и протоколов) строятся с использованием конечных автоматов. Как показано в настоящей работе, применение автоматов может повысить надёжность и других типов драйверов.
Отметим также, что даже в тех случаях, когда автоматы применяют для описания поведения компонент, обычно отсутствует формальный переход от такого описания к коду программ.
Другим важным фактором, препятствующим созданию надежных драйверов, является практически полное отсутствие какой–либо документации. Сформулируем задачу, решаемую в данной работе.
Имеется пользовательская программа, для которой должно быть обеспечено выполнение операций чтения сектора гибкого диска (прочие операции, включая запись, для упрощения программы не рассматриваются).
Между пользовательской программой и гибким диском расположен контроллер I8272A, который управляется с помощью базовой системы ввода – вывода BIOS. В работе в учебных целях вместо подпрограмм BIOS, которые не используются, на основе автоматного подхода разрабатывается модуль управления контроллером гибкого диска. Этот модуль осуществляет две основные операции – инициализацию контроллера и чтение сектора данных. Все операции рассчитаны на работу с современной конфигурацией дисководов, которая содержит один привод, читающий двухсторонние диски двойной плотности размером три с половиной дюйма.