Назад
49
производятся системные установки и подготовка к загрузке в ОЗУ командного
процессора COMMAND.COM, находящегося пока на системном диске. После
этого управление возвращается в модуль расширения BIOS IO.SYS, который
производит загрузку командного процессора (файл COMMAND.COM ) с диска
в ОЗУ и передаёт ему управление дальнейшей работой устройств ПК.
Командный процессор COMMAND.COM при загрузке исполняет
командный файл AUTOEXEC.BAT и в отличие от своих требовательных
собратьев Boot Record, IO.SYS и MSDOS.SYS может располагаться на
системном диске в любом месте. При этом он рассматривается как обычная
программа. Это он печатает строку-приглашение на экране дисплея и
выполняет все пожелания пользователя, задаваемые в виде команд DOS. Его
основные функции заключаются в следующем:
анализировать разнообразные команды, которые вводятся
пользователями с клавиатуры или из командного файла с расширением .BAT;
загружать в ОЗУ и выполнять внешние программы DOS и
разнообразные прикладные программы (файлы с расширеннем .COM и .EXE)
(рис. 2.9).
Образно выражаясь, компьютер можно представить существом, которое
общается с внешним миром с помощью своих периферийных (внешних)
устройств. Его органы чувств это клавиатура, мышь и сканер (рис.2.9), а
средства обратной связи принтеры, дисплеи, диски и другие периферийные
устройства, посредством которых осуществляется контакт компьютера с
внешним миром конкретных объектов и пользователем.
Все эти устройства, по сути, являются буферами для приёма, накопления,
переработки и передачи потоков информации, циркулирующих между всеми
устройствами компьютера. Кстати, многие из них при этом имеют
существенно различные скорости обработки, передачи и отображения данных
(к примеру, скорость обработки команд микропроцессором3,2 ГГц, а принтер
может выводить десяток или более строчек в секунду и т.д.) (рис.2.10).
Устройства ввода получают из внешнего мира команды и связанные с
ними данные, которые поступают в память для оброботки. Устройства вывода
Клавиатура
Команды
COPY
TYPE
MD
CD
DIR
DELETE
. . .
COMMAND.COM
Интерпретация и
исполнение
команд MS-DOS
с помощью
драйверов, а
также
прерываний
MS-DOS и BIOS
для управления
работой
внешних
устройств
Принтер
Монитор
Флоппи-
диск
Жёсткий
диск
Рис. 2.9. Путь команд от их ввода с клавиатуры до выполнения их
ОС MS DOS
50
Рис. 2.11. Коннекторы
портов ввода-
вывода ПК и
сам порт (внизу)
получают вычисленные результаты и передают их пользователю или другому
устройству для вывода или сохранения. Точки контакта между устройствами
ввода - вывода и микропроцессором называются портами ввода-вывода
(рис.
2.11).
В соответствии с общепринятыми соглашениями портом ввода называется
любой источник данных, а портом вывода приёмник данных. Шины это
информационные каналы, которые соединяют устройства внутри компьютера.
По управляющим шинам подаются
команды на выполнение разнообразных
действий. Адресные шины служат для выбора
необходимых портов и размещения в памяти
информации, которая передаётся. Понятно, что
по шине данных передаются потоки данных.
Порты ввода-вывода имеют свои адреса в
памяти (ОЗУ), так что к одному
микропроцессору может быть подключено
несколько устройств ввода-вывода. По этому
адресу в памяти находится поле ячеек, через
которые и проводится обмен информацией
между устройствами и пользователем.
Процессор черпает информацию из одного
места (например, с клавиатуры) и передаёт её в
другое место (например, на дисплей).
Таким образом, мы приходим к
осмыслению того факта, что мозг компьютера
Рис. 2.10. Организация взаимодействия между устройствами компьютера
Микропроцессор
Запоминающее
устройство
Клавиатура
Дисплей
Принтер
Порт
ввода-
вывода 1
Порт
ввода-
вывода 2
Порт
ввода-
вывода 3
Управляющая шина
Шина данных
Адресная шина
Данные
Данные
Данные
і т.д.
51
это процессор, сердце таймер, который задаёт ритм работы всего его
организма, кровеносные сосуды, которые несут информацию это шины
адресов и данных, а органы чуств это порты, которые принимают
информацию (управляющие сигналы и данные) от внешних устройств и
отсылают её назад.
Каждый раз, когда мы нажимаем или отпускаем
одну из клавиш клавиатуры ПК, схемы клавиатуры
генерируют однобайтное число, которое называется
скэн-кодом, который показывает только одно нажата
клавиша или отпущена, поскольку скэн-коды нажатия и
отпускания клавиши разные. При этом, ни один из скэн-
кодов ещё не связан с определённым символом
конкретного языка, а лишь отмечает местонахождение
клавиши на клавиатуре. Ведь за клавиатурой может
работать и англичанин, и китаец (рис. 2.12), и финн, и,
конечно же украинец. Кроме того, известно, что
население Земли говорит сегодня более чем на 3 000
разных языков, а пишет только на 100 из них. На
английском языке говорят 1 млрд. 400 млн. жителей
планеты, из которых только 400 млн. считают его своим
родным.
Присваивание клавише символа того или иного
языка это работа подпрограмм (прерываний) ROM BIOS с помощью
соответствующих портов, а отображение родного для пользователя языка
выполняются дополнительными драйверами клавиатуры (PROKEY, KEYRUS и
др.).
Подводя итоги выщесказанному, можно сказать, что конечным этапом
процесса включения компьютера является полная и окончательная загрузка
операционной системы DOS (или любой другой) в его оперативную память.
Этот процесс называется начальной загрузкой системы (или перезагрузкой).
В ходе этого процесса:
проверяется правильность работы устройств компьютера;
в оперативную память компьютера загружается ОС DOS или
компоненты другой операционной системы;
происходит настройка DOS на выбранные параметры конфигурации и
те устройства, которые подключены к компьютеру в этот текущий момент;
выполняются команды и программы, которые указаны пользователем в
файле autoexec.bat;
на экран выводится приглашение DOS, которое указывает, на то, что
DOS готова к приёму команд пользователя (рис.2.13), либо на экране
отображается интерфейс соответствующей графической ОС.
2.3. Как операционная система управляет процессом ввода-
вывода
Рис. 2.12.
Представление
имён папок
(каталогов) на
китайском языке
52
Рис. 2.13. Приглашение ОС DOS для
ввода очередной команды работы с
диском С:
BIOS это термин, который используется для описания базовой системы
ввода-вывода. По сути, BIOS представляет собой "промежуточный слой" между
программной и аппаратной частями системы, которая состоит из комбинации
всех типов BIOS, а также драйверами устройств, которые загружаются для
данной конфигурации ПК.
Часть BIOS, которая размещена
в микросхеме на системной плате
или платах адаптеров, зовётся
firmware
12
. Стандартная РС-
совместимая система складывается
из нескольких слоёв, которые
связаны между собой (рис. 2.14).
На этом рисунке показаны два
разных компьютера, у которых используется уникальная BIOS в роли
интерфейса между разным аппаратным обеспечением, операционной системой
и её приложением (программой пользователя). То есть BIOS в каждом сеансе
работы настраивается на взаимодействие с каждой конкретной конфигурацией
аппаратных средств любого ПК. Таким образом, на этих компьютерах может
быть установлено самое разное оборудование: процессоры разных
производителей, жёсткие либо гибкие диски, мониторы и другие устройства,
используя которые можно запускать одинаковое программное обеспечение.
12
firmware программно-аппаратное обеспечение, программно-аппаратные средства, аппаратно-программное
обеспечение, т.е. комплекс совместно взаимодействующих при работе програмно-аппаратных компонент.
Рис. 2.14. Условное деление ПК на несколько слоёв
Стандартный
интерфейс
(API)
операционной
системы
Нестандартный
интерфейс
Приложение
(программа пользователя)
Аппаратное обеспечение
системы "А"
Стандартный
интерфейс
между ОС
и BIOS
Аппаратное обеспечение
системи "Б"
Система "А" ROM BIOS
и драйверы устройств
Система "Б" ROM BIOS
и драйверы устройств
Операционная
система (ОС-1)
Операционная
система (ОС-2)
Приложение
(программа пользователя)
53
Связь между приложениями и операционной системой осуществляется с
помощью соответствующего стандартного для всех приложений API
(Application Programming Interface). Этот Интерфейс Прикладного
Программирования определяет, например, как выполняется запись или
считывание данных на диск, их печать и другие функции.
Поскольку приложение не зависит от присоединённого аппаратного
обеспечения .е. имеющихся внешних и электронных устройств), то и все его
вызовы требуемых функций обрабатывает операционная система, которая уже
располагает информацией об установленном оборудовании и через BIOS
обращается непосредственно к его компонентам. Эта связь поддерживается
драйверами соответствующих компонентов оборудования. Причём каждой
операционной системе DOS, Windows9x, Windows NT, Windows 2000, OS/2,
Linux или другой для одного и того же устройства необходимы свои
драйверы. Как видно из рисунка 2.14, приложения и операционная система
идентичны у большинства компьютеров, а BIOS «подстраивается» под
конкретную конфигурацию аппаратного обеспечения и, независимо от
установленного оборудования, обеспечивает стандартный интерфейс для
работы с ними операционной системы. Таким образом, BIOS представляет
собой интерфейс между аппаратурой конкретного ПК и установленной на нём
операционной системой.
Как правило, прикладная программа не работает напрямую с аппаратурой,
а пользуется услугами операционной системы. Исключение составляют случаи,
когда пользователь самостоятельно реализует доступ к устройствам или их
компонентам из своей программы. Для IBM совместимых ПК, как правило,
используется механизм драйверов. Однако драйверы ОС не всегда обращаются
прямо к аппаратуре. Обычно они вызывают функции BIOS, и уже BIOS
выполняет все действия по вводу-выводу на уровне своих прерываний.
Естественно, что BIOS содержит программы обслуживания только стандартных
устройств ввода-вывода, а нестандартные обслуживаются собственными
драйверами.
Использование BIOS как дополнительного интерфейса между драйверами
стандартных устройств и аппаратурой резко повышает "живучесть"
используемой ОС на "не совсем совместимых" с IBM РС компьютерах других
производителей. Это возможно в связи с тем, что производители совместимых
компьютеров учитывают в программах BIOS особенности постоянно
появляющихся образцов нового оборудования. В этом случае и ОС, и
программа пользователя, тем более, не видят никаких отличий новых
компонентов от старых.
С другой стороны, пользователь может легко дополнять ОС своими
собственными драйверами, которые составлены для нестандартных устройств,
либо заменять стандартные драйверы и функции BIOS. При этом нужно особо
отметить, что поскольку драйвер должен учитывать все детали конструкции
каждого нового устройства и работать в режиме реального времени, хотя бы
часть его должна быть написана на машинно-ориентированном языке
программирования.
54
2.4 Управление устройствами с помощью драйверов
Управление внешними устройствами это одна из важнейших функций
любой операционной системы. Система должна обеспечивать эффективный и
удобный доступ к периферийным устройствам, а также возможность
унифицированной, независимой от вновь создавемых устройств разработки
программного обеспечения. Все новые устройства требуют некоторой
дополнительной программной поддержки, обеспечиваемой т.н. драйверами
устройств, связывающими их с операционной системой и с программами,
работающими под её управлением. Для выполнения специфических операций
по обмену данными ПК с новым устройством соответствующий драйвер
следует стандартному набору правил взаимодейстия с ОС. Он считывается с
диска и присоединяется к операционной системе в процессе её начального
вызова. Часть драйверов, необходимых для работы ПК после загрузки ОС,
последняя, в соответствии с указанными в специальных областях жёсткого
диска данными, загружает в ОЗУ позднее. Информация о том, что должен быть
загружен драйвер конкретного устройства, к примеру, в ОС DOS
предоставляется ей в файле CONFIG.SYS.
Номенклатура вновь
создаваемых внешних устройств
чрезвычайно велика. К ним
можно отнести и новые типы
внешней памяти (Zip, Jazz,
стриммеры, магнитные диски
повышенной ёмкости и др.),
беспроводные клавиатуры и
манипуляторы типа мышь (рис.
2.15), тьюнеры, видео приставки,
цифровые фотокамеры,
микрофоны и многое другое.
Большинство из них
обмениваются данными с
процессором асинхронно, то есть
через неровные отрезки времени.
Несмотря на это, технологии
создания соответствующих драйверов решают практически любые задачи.
Рассмотрим процесс взаимодействия комплекса устройств, которые
поддерживаются соответствующими драйверами.
Итак, любое внешнее устройство характеризируется уникальным
унифицированным интерфейсом обмена данными с компьютером, а также
набором внутренних команд. В их состав, как правило, входят следующие:
инициализации, которые приводят устройства в готовность к работе;
Рис. 2.15. Разные устройства
компьютера
55
управления компонентами (механическими, электрическими,
электронными и др.) данного устройства;
управления обменом данных (т.е. пересылкой) от компьютера к
устройству и назад;
завершения процесса совместной работы (очистка регистров, буферов,
сброса флагов, отключения питания элементов, которые завершили работу и
т.д.).
Каждая версия операционной системы концептуально разрабатывается
один раз, а внешние устройства каждый год во всём мире появляются
десятками тысяч. Поэтому представляется важным со стороны ОС
рассматривать внешнее устройство как некоторый абстрактно обобщённый
объект, который имеет неизменный интерфейс, то есть унифицированные
средства доступа к нему и обмена данными с ним. А все тонкости, которые
относятся к специфике конструкции и функционирования реального
устройства, разработчики стремятся «упрятать» в тело драйвера, который
программируется.
При реализации указанной концепции для доступа к внешнему устройству
в DOS и в многих других ОС используется универсальная абстракция файла.
Важно отметить, что, как правило, файл практически в большинстве
операционных систем представляет собой комплексную структуру, которая
включает (рис. 2.16):
имя, с расширением из трёх символов, которое содержится в каталоге
соответствующей дисковой системы (к примеру, FAT, FNTS и др.);
байт атрибутов файла (файл только для чтения, системный и т.д.);
время и дату создания файла или его модификации;
размер файла в байтах;
ссылка на первый кластер
13
магнитного диска, с которого начинается
размещение всего файла;
в таблице размещения файлов размещаются номера кластеров, в
которых файл размещается целиком (!) и т.д.
Кроме обычных файлов или каталогов, которые реально занимают память
(место) на магнитных дисках, файловая система содержит так называемые
специальные файлы, для которых, как и для настоящих файлов, отводятся
отдельные (логические) имена, но которым на самом деле соответствуют
внешние устройства. Такое решение позволяет естественным образом работать
в одном и том же интерфейсе с любым файлом или внешним устройством. (На
самом деле, в некоторых случаях использование нестандартных внешних
устройств нередко может выходить за границы стандартного интерфейса).
Понятно, что простое объявление внешнего устройства специальным файлом
не даёт возможности работать с этим устройством, если не создан и
13
Кластер группа блоков (секторов) диска, которые объединяются в единое целое и затем рассматриваются
системой как комплексная единица записи. В MS DOS и некоторых других операционных системах
минимальная единица деления дискового пространства. Состоит из одного или нескольких соседних секторов.
Размер сектора, как правило, кратен степени числа 2. Может иметь значения: 124, 256, 512 или больше
килобайт.
56
соответствующим образом не подключён к системе специальный программный
код, который отвечает специфике взаимодействия с данным устройством.
Как и у большинства современных операционных систем, такого рода
программный код в любой ОС DOS зовётся драйвером устройства (в этом
контексте слово драйвер лучше всего понимать в значении "управляющая
программа"). Так же, как и в любой другой системе, драйвер устройства это
многовходовый программный модуль (со своими статическими данными),
который должен и умеет инициировать работу с устройствами. То есть
выполнять обмены данными (т.н. двунаправленные их пересылки между
пользователем и устройством), которые заказывает пользователь,
терминировать работу с устройством и обрабатывать прерывания,
поступающие от него.
Файл с драйвером устройства имеет почти стандартный формат
исполняемой программы с добавлением некоторой идентифицирующей
информации, характерной именно для драйвера. В большинстве своём,
существует два типа драйверов устройств: драйверы символьных устройств,
которые подобно клавиатуре, экрану дисплея, принтеру или
коммуникационному порту работают с последовательным потоком символов и
драйверы блочных устройств, которые подобно дисководу читаю и пишут
произвольные блоки данных, для ссылки на которые используются некоторые
разновидности адреса блока. Для идентификации символьных устройств
используются логические имена (например, LPT1:, COM1:, PRN). Поэтому
такие устройства системой могут рассматриваться как файлы. Для
идентификации блочных устройств используются буквы, присваиваемые
Три кластера содержания
файла, расположенные
один за другим
Один кластер,
который расположен
отдельно
Рис. 2.16. Комплексные характеристики, которые описывают файл,
хранящийся на магнитном диске
Подробные данные о размере, времени
создания, атрибутах записи и другие
характеристики файла
Имя файла и номер первого кластера его
расположения, которые находятся отдельно
в таблице имён (например, в FAT)
57
Дорожки
Рис. 2.17. Размещение секторов и дорожек на поверхности
пластины магнитного диска
Сектор 1
Дорожка 0
Сектор 1,
дорожки 0
операционной системой и аналогичные идентификаторам дисководов A, B, C,
D, E и т.д.
Как пример использования имён файлов и устройств, можно рассмотреть
команду ОС DOS «COPY», предназначенную для копирования данных из одной
области их хранения в другую. В зависимости от операндов, указываемых в её
адресной части может меняться и смысл её работы (к примеру, разные
варианты адресных имён областей источников данных, имён устройств
приёмников данных, изменение их последовательности и т.д.) (рис. 2.17, 2.18).
пп
Имя команды
Первый объект переписи
(источник данных)
Второй объект переписи
(приёмник данных)
1
COPY
Источник данных
Приёмник данных
2
COPY
Имя файла
Адрес, куда его необходимо
записать
3
COPY
Путь к файлу, который
переписывается
Адрес конечной записи
4
COPY
Имя каталога
Адрес назначения
5
COPY
Имя устройства, которое
передаёт данные
Имя файла, который получает
данные
6
COPY
Имя файла, из которого
извлекаются данные
Имя устройства, куда данные
выводятся/размещаются
7
F5
Выделенный объект или
группа объектов
Каталог либо имя устройства
8
COPY
(из контекстного меню
объектов рабочего
стола Windows)
Выделенный объект или
группа объектов
Место назначения: папка,
пиктограмма устройства
(диска, принтера и др.), и
даже (!!!) документ
приложений MS Office
Рис. 2.18. Некоторые трактовки использования команды копирования данных
COPY в разном контексте
Обычно, команда COPY обеспечивает перепись объектов с одного
места диска (источника данных) на другое (приёмник данных). Объектами
58
переписи, как правило, выступают файлы или целые каталоги ни же
директории или папки).
Но в указанном пользователем порядке следования операндов в
адресной части команды, источниками и приёмниками данных могут быть
также и конкретные устройства, которым присваиваются логические имена
CON, PRN и др. либо меняется контекст операции переписи (табл. 2.2).
Таблица 2.2
Использование устройств, как источников или
приёмников объектов файлового типа
Теку
щий
диск
Команда и её адресные
части
Результат выполненного действия
С:\>
COPY A:\ PROG C:\ FRAG
Каталог PROG с диска А: перепишется в каталог
FRAG на диске C:
С:\>
COPY СON FILE1.txt
Данные, которые вводятся с клавиатуры,
вводятся в файл с именем FILE1.txt.
(СONфайл-источник данных).
После окончания ввода текстовых данных в файл
FILE1.txt необходимо нажать сочетание клавиш
Ctrl+Z, что приведёт к его закрытию с
добавлением в его конце признака конца файла.
С:\>
COPY FILE1.txt СON
TYPE FILE1.txt
Текстовые данные, которые содержатся в файле
с именем FILE1.txt, выводятся на экран дисплея
компьютера
(СONфайл приёмник данных)
С:\>
COPY FILE1.txt PRN
Копирование текстовых данных из файла
FILE1.txt на любой принтер, подключённый к ПК
Таким образом, если логическое имя СON располагается на первом
месте в команде COPY, то оно трактуется как логическое имя системного
устройства ввода, то есть клавиатуры. После завершения ввода текстовых
данных в открытый командой COPY файл с заданным именем и последующего
закрытия этого файла сочетанием клавиш [Ctrl+Z], что является командой
прекращения приёма данных при записи на диск, можно просмотреть
содержание этого файла на экране дисплея. В этом последнем случае, СON
логическое имя устройства вывода, то есть в данном случае дисплея, хотя по
сути, действие, которое декларируется обозначает вывод (перепись) одного
файла (FILE1.txt) в другой (СON). При необходимости вывода текстового
файла на печатающее устройство (принтер), достаточно указать логическое
имя PRN. Концепция абстрактного файла в этом случае выдерживается
полностью, так как указывая для вывода данных стандартное логическое имя
СON (или любое другое) мы абсолютно не задумываемся о призводителе
реально используемого физического устройства (к примеру, принтера фирм
XEROX, Hewlett-Packard, Canon и др.), его быстродействии (10, 15, 20 строк и
выше в минуту), его конструкции (матричный, струйный, лазерный чёрно-
белый, лазерный цветной и др.).