Главная страница
Навигация по странице:

  • Ядро файл msdos.sys

  • Ядро: Системные вызовы.

  • 41. Реализация драйверов в MS-DOS

  • Смещение, байт Размер, байт Имя поля Описание

  • ос и с. ОСиС. 1. Классификация программного обеспечения


    Скачать 2.7 Mb.
    Название1. Классификация программного обеспечения
    Анкорос и с
    Дата11.12.2022
    Размер2.7 Mb.
    Формат файлаdoc
    Имя файлаОСиС.doc
    ТипДокументы
    #839260
    страница16 из 29
    1   ...   12   13   14   15   16   17   18   19   ...   29

    Ядро файл io.sys
    Ядро файл IO.SYS: Файл io.sys, являющийся частью системного ядра, хранится в определённом месте на системном диске и активизируется во время загрузки OS. Файл io.sys содержит расширение программ BIOS и отвечает за выполнение следующих функций:


    - организация взаимодействия BIOS и DOS;
    - обновление программ обработки прерываний и драйверов записанных в ПЗУ BIOS;
    - подключение драйверов дополнительных устройств;


    Ядро файл msdos.sys
    Ядро файл msdos.sys - являющийся частью системного ядра, хранится в корневом каталоге (где и файл io.sys) и вызывается во время загрузки OS. К функциям файла относится:


    - управление файловой системой;
    - управление ресурсами системы;
    - обработка ошибок;
    - завершение выполнения программ;
    Ядро: Системные вызовы.
    Системные вызовы в MS DOS реализованы в виде программ обработки прерываний, вызываемых по таблице векторов прерываний BIOS. Некоторые вектора прерываний в таблице зарезервированы для использования сомой OS. К таким прерываниям, называемым прерываниями DOS, относятся обработка завершения программы, обработка ошибок, прерывание размещения резидентных программ и др.
    Среди этих прерываний особое место занимает прерывание 21H, называемое ''Функции DOS'', которое отвечает практически за все системные вызовы DOS.


    Версии 1.х :

    Очень похожа на OS CP/M(считалась стандартом в тот период).

    Поддерживался только односторонний формат дискет с объемом па-

    мяти 160 Кб (8 секторов,40 дорожек,размер сектора 512 байт).

    Начиная с версии 1.25(PC DOS 1.0), появившейся в Мае 1982 г.

    введен двухсторонний формат дискет с объемом памяти 320 Кб.

    Версии 2.х :

    Версия 2.0 - Март, 1983 г.

    Дополнительные возможности :

    - работа с жесткими дисками(HDD),

    - иерархическая структура файловой системы,

    - средства перенаправления ввода/вывода(заимствованы у UNIX),

    - концепция устанавливаемых драйверов периферийных

    устройств(используя файл CONFIG.SYS), что позволило опера-

    тивно адаптировать OS к различным конфигурациям аппаратных

    средств.

    - Метки томов(носителей информации),

    - атрибуты файлов,

    - спулер принтера(спец.программа,позволяющая выводить информа-

    цию на принтер в фоновом режиме) - PRINT.com,

    - формат дискет на 360 Кб (9 секторов, 40 дорожек, размер

    сектора 512 байт)

    Версии 3.х :

    Версия 3.05 - Август, 1984 г.

    Дополнительные возможности :

    - формат дискет на 1.2 Мб,

    - дискеты 3.5"(формат 720 Кб)(начиная с версии 3.2),

    - разбиение HDD на логические диски(размером до 32 Мб), что

    дало возможность использовать HDD большего, чем 32 Мб объема,

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

    - команды(программы) : LABEL,ATTRIB,

    - команды(программы) : XCOPY,REPLACE(начиная с версии 3.3),

    MS DOS 3.3 и на сегодняшний день является наиболее широко применяемой на IBM PC XT и на IBM PC AT-286 с объемом памяти

    не более 640 Кб.

    Версии 4.х :

    Версия 4.0 - Ноябрь, 1988 г.

    Дополнительные возможности :

    - поддержка графических ВидеоАдаптеров EGA,VGA ,

    - объем логических дисков - более 32 Мб.,

    - поддержка стандарта LIM/EMS(драйвер EMM386.sys,доступ

    к дополнительной памяти ОЗУ на IBM PC AT-386 и выше),

    что позволило отдельные части MS DOS загружать в дополни-

    тельную память,

    - программа-оболочка Dos-Shell,

    Несмотря на это - MS DOS версий 4.х не получили широкого

    распространения.

    Версия 5.0 :

    Версия 5.0 - Июль, 1991 г.

    Дополнительные возможности :

    - эффективное использование ОЗУ,

    - дополнительные сервисные программы,

    - возможность загрузки ядра MS DOS,в HMA-память(High Memory

    Area) на IBM PC AT-286 и выше,

    - возможность загрузки драйверов периферийных устройств в

    UMB-память на IBM PC AT-386 и выше,

    - для прикладных программ отводится до 620 Кб адресного

    пространства(0-640 Кб) ОЗУ,

    - поддержка HDD до 2 Гб,

    - формат 2.88 Мб для дискет 3.5",

    Версия 6.0 :

    Версия 6.0 - Март, 1993 г.

    Дополнительные возможности :

    - эффективное использование ОЗУ,

    - дополнительные сервисные программы,

    - программные средства для оптимизации файловой системы

    на логических дисках(DEFRAG),

    - изъяты команды(программы), утратившие актуальность,

    - спец.программа MEMMAKER - оптимизация расположения рези-

    дентных программ в ОЗУ,

    - мультиконфигурационные файлы CONFIG.sys(возможность выбора

    варианта конфигурации из меню),

    - система защиты от вирусов(слабая),

    - увеличение доступного дискового пространства(DoubleSpace),

    - средства регулирования энергопотребления PC (LapTop,NoteBook)

    Версия 6.2 :

    Версия 6.2 - Октябрь, 1993 г.

    Все улучшения - в области повышения надежности работы с данными на уровне файловой системы.

    Дополнительные возможности :

    - повышена эффективность существующих команд(программ),

    - КЭШирование CD-ROM (программа SMARTDRV),

    - отказ от DoubleSpace без потери информации(позволяет вернуть

    логический диск в исходное состояние),

    - выявление и обход физических дефектов HDD и FDD(SCANDISK),

    - выявление и устранение дефектов в файловой системе(SCANDISK),

    в том числе и "сжатых" DoubleSpace,

    - пошаговое выполнение любого *.bat-файла, в том числе и

    AutoExec.bat,

    ОСНОВНЫЕ СОСТАВНЫЕ ЧАСТИ MS DOS

    MS DOS состоит из следующих компонент :

    - блок начальной загрузки(размещается в 1-м секторе 0-дорожки

    0-стороны системной дискеты),

    - модуль взаимодействия с BIOS(IO.sys для версии 5.0 и выше),

    - модуль обработки прерываний(MSDOS.sys для версии 5.0 и выше),

    - командный процессор(COMMAND.com)

    - внешние команды(программы) MS DOS,

    - драйверы устройств,

    - файл Config.sys,

    - файл AutoExec.bat,

    Блок начальной загрузки + IO.sys + MSDOS.sys - ядро MS DOS.

    Блок начальной загрузки :

    Размещается :

    в 1-м секторе 0-дорожки 0-стороны системной дискеты,

    в 1-м секторе HDD-диска, в разделе, отведенном под DOS.

    Просматривает КОРНЕВОЙ каталог системного диска.Проверяет,

    являются ли первые два файла в каталоге - файлами IO.sys и

    MSDOS.sys.Если ДА - загружает их в ОЗУ и передает управление

    MS DOS.Если НЕТ - сообщение на экране и ожидание нажатия какой-

    либо клавиши Пользователем :

    Non-System disk or disk error

    Replace and press any key when ready

    Не системный диск или ошибка диска

    Замените и нажмите какую-либо клавишу, когда будет готово

    Именно поэтому , при "изготовлении" Системной Дискеты - необходимо переносить файлы IO.sys и MSDOS.sys на Системную Дискету с помощью спец.программы SYS.com.
    IO.sys :
    Это резидентный модуль(всегда находится в ОЗУ после загрузки,пока

    включен PC).

    Взаимодействует с BIOS. Расширяет возможности BIOS или изменяет ее свойства(где необходимо) с помощью дополнительных драйверов.


    MSDOS.sys :
    Это резидентный модуль.

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

    Прикладная Программа вызывает функции этого модуля через механизм прерываний(программные прерывания,см. тема 5.1), передавая

    (принимая) информацию к(от) MS DOS через регистры CPU или(и) области памяти ОЗУ. MSDOS.sys транслирует(переводит) запрос прикладной программы в один или несколько вызовов (IO.sys+BIOS).

    Командный процессор(COMMAND.com) :

    Отдельный Модуль MS DOS.Этот модуль может быть заменен на другой, более удобный. Предназначен :

    - прием команд с клавиатуры или из *.bat - файлов и их

    выполнение,

    - выполнение команд файла AutoExec.bat при загрузке MS DOS,

    - загрузка в ОЗУ и запуск на выполнение прикладных программ

    в среде MS DOS

    Командный процессор состоит из 3-х частей :

    - резидентная(размещается в ОЗУ сразу после MSDOS.sys,

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

    процедуры обработки стандартных ошибок MS DOS,процедуру

    загрузки транзитной части командного процессора),

    - инициализирующая(в ОЗУ следует сразу за резидентной частью;

    во время загрузки OS ей передается управление;она “выполняет”

    файл AutoExec.bat и некоторые другие действия; эта часть командного процессора стирается из ОЗУ первой же загруженной

    программой),

    - транзитная(загружается в старшие адреса ОЗУ;обрабатывает все

    внутренние команды, команды с клавиатуры и из *.bat-файлов;

    выдает системную подсказку MS DOS; загружает в ОЗУ программы

    и передает им управление)

    Внешние команды(программы) :

    Дополнительные программы, входящие в MS DOS, выполняющие определенные функции.

    Драйверы устройств :

    Специальные резидентные программы, которые управляют внешними устройствами .Драйверы загружаются в ОЗУ в том порядке, как они указаны в файле CONFIG.sys.

    CONFIG.sys :

    Спец.текстовый файл, где содержится информация о подгружаемых дополнительных драйверах и некоторая другая информация, касающаяся непосредственно MS DOS и выполняемых в ее среде прикладных программ.

    MS DOS выполняет этот файл автоматически, сразу после загрузки COMMAND.com.
    AUTOEXEC.bat :
    Спец.текстовый файл, где содержится дополнительная настроечная информация.

    MS DOS выполняет этот файл автоматически, сразу после выполнения CONFIG.sys.

    НАЧАЛЬНАЯ ЗАГРУЗКА MS DOS

    1. При включении PC вначале выполняются программы BIOS.

    2. После тестирования и др.действий процедура POST(из модуля BIOS)

    осуществляет поиск и загрузку блока начальной загрузки :

    - вначале производится поиск на устройстве A:

    (если не найдено - поиск на устройстве C:,если не найдено,

    то вызывается встроенный в ПЗУ BASIC или производятся

    другие действия,”указанные” в ПЗУ)

    3. Блок начальной загрузки производит поиск в корневом каталоге

    системной дискеты(диска) файлов IO.sys и MSDOS.sys(эти файлы должны

    быть первыми и именно в таком порядке),

    4. Блок начальной загрузки производит загрузку файла IO.sys и передает

    ему управление,

    5. IO.sys :

    - загружает и настраивает MSDOS.sys,

    - определяет состояние подключенных устройств,

    - инициализирует подключенные устройства,

    - загружает необходимые драйверы устройств,

    - передает управление MSDOS.sys.

    6. MSDOS.sys :

    - инициализирует(настраивает) свои внутренние рабочие таблицы,

    - загружает драйверы, указанные в файле config.sys,

    - загружает командный процессор(файл COMMAND.com)

    7. Командный процессор “выполняет” команды, указанные в файле

    autoexec.bat

    8. Командный процессор выдает на экран Монитора системную подсказку

    MS DOS и ожидает команд Пользователя

    41. Реализация драйверов в MS-DOS
    Если бы все программы обращались для обмена данными непосредственно к портам периферийных устройств компьютера, программирование превратилось бы в чрезвычайно сложную задачу. В самом деле, во всем мире выпускаются десятки модификаций видеоконтроллеров, принтеров, контроллеров диска и другой аппаратуры, предназначенной для оснащения так называемых "компьютеров, совместимых с IBM PC".

    На деле ни о какой полной совместимости на уровне портов ввода/вывода и протоколов обмена данными говорить не приходится. Поэтому, например, вместе с текстовым процессором Microsoft Word for MS-DOS поставляются десятки принтерных драйверов, по одному для каждой модели принтера или семейства моделей принтеров.

    Может ли программист учесть все особенности существующей аппаратуры, а также той, что появится в будущем? Очевидно, не может, если, конечно, у него нет дара ясновидения, а также неограниченного запаса времени на тестирование своей программы для бесконечных конфигураций и моделей аппаратного обеспечения. Нам встречалось множество программ, которые могли работать только с той аппаратурой, что имелась в наличии у разработчика. Например, бухгалтерские программы, которые "умели" печатать документы только на принтере Epson FX-850, программы, которые устанавливались только с диска A: емкостью 360 Кбайт и т. д.

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

    Все современные операционные системы обращаются к периферийным устройствам через специальные программные модули - драйверы. В таких операционных системах, как Windows NT, OS/2 или UNIX , обычная программа не может вызывать команды ввода/вывода. Для обращения к периферийному устройству она прямо или косвенно (через операционную систему) должна вызвать драйвер.

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

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

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

    Использование BIOS как дополнительного интерфейса между драйверами стандартных устройств и аппаратурой резко повышает "живучесть" MS-DOS на персональных компьютерах, не вполне совместимых с IBM PC. И это действительно так - самая распространенная на сегодняшний день операционная система MS-DOS работает на всех компьютерах, хоть сколько-нибудь совместимых с IBM PC.

    Это возможно благодаря тому, что производители совместимых компьютеров учитывают в BIOS все аппаратные особенности, и MS-DOS "не видит" отличий. А прикладная программа, работающая с устройством через драйвер, - и подавно.

    Тем не менее, BIOS не используется в операционных системах Windows NT , UNIX или OS/2.

    Дело в том, что, к сожалению, BIOS не является реентерабельным. Это не имеет значения для однозадачной MS-DOS, но мультизадачные операционные системы вынуждены сами организовывать обслуживание аппаратуры реентерабельным способом. Существуют еще проблемы разделения ресурсов между параллельно работающими процессами, которые тоже не решаются в рамках BIOS.

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


    1. Структура загружаемого драйвера


    Драйвер - это еще одна разновидность программ (в дополнение к com- и exe-программам). Иногда говорят, что драйвер - это com-программа, но это не так. Скорее способ получения загрузочного модуля драйвера похож на способ получения com-программы. Есть еще одно сходство драйверов и com-программ (которое как раз и появляется из-за одинакового способа их получения): загрузочные модули этих программ являются точным отображением исходного текста на языке ассемблера без добавления каких-либо заголовков в начало файла на этапе редактирования.

    Но, оказывается, управляющий блок в самом начале модуля драйвера имеется. Это так называемый заголовок драйвера. Только в отличие от заголовка exe-программ, заголовок драйвера создается не редактором связи, а самим программистом и должен быть помещен в самое начало исходного текста программы-драйвера.

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

    Таким образом, можно говорить и о сходстве драйвера с exe-программами, так как в начале загрузочного модуля драйвера имеется заголовок. Только этот заголовок, в отличие от заголовка exe-файла, является принадлежностью самой программы и загружается вместе с ней в память. Заголовок exe-программы используется только при загрузке программы; после загрузки операционная система убирает его из памяти.

    Не стоит пытаться запускать драйвер как com-программу, так как управление будет передано в область памяти, содержащую заголовок драйвера, а там нет правильных машинных команд. Поэтому обычно файлы драйверов имеют расширения имени, отличные от com или exe. Чаще всего используются расширения sys, drv, иногда bin. На самом деле можно использовать любое расширение имени, так как при описании драйвера в файле config.sys указывается его полное имя.

    Для загруженного в память драйвера никогда не создается префикс программного сегмента PSP . В начале исходного текста программы-драйвера не ставится директива ORG 100h (как это делается для com-программы), так как не надо резервировать место для PSP.

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


    Смещение,

    байт

    Размер, байт

    Имя поля

    Описание

    0

    4

    next

    Указатель на заголовок следующего драйвера. Если смещение адреса следующего драйвера равно FFFFh, это последний драйвер в цепочке

    4

    2

    attrib

    Атрибуты драйвера

    6

    2

    strateg

    Смещение программы стратегии драйвера

    8

    2

    interrupt

    Смещение программы обработки прерывания для драйвера

    10

    8

    dev_name

    Имя устройства для символьных устройств или количество обслуживаемых устройств для блочных устройств
    1   ...   12   13   14   15   16   17   18   19   ...   29


    написать администратору сайта