Способы программного управления устройствами

Способы программного управления устройствами

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

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

Устройство управления в строгой последовательности в рамках тактовых и цикловых временных интервалов работы микропроцессора (такт — минимальный рабочий интервал, в течение которого совершается одно элементарное действие; цикл — интервал времени, в течение которого выполняется одна машинная операция) осуществляет: выборку команды; интерпретацию ее с целью анализа формата, служебных признаков и вычисления адреса операнда (операндов); установление номенклатуры и временной последовательности всех функциональных управляющих сигналов; генерацию управляющих импульсов и передачу их на управляющие шины функциональных частей микроЭВМ и вентили между ними; анализ результата операции и изменение своего состояния так, чтобы определить месторасположение (адрес) следующей команды.

Особенности программного и микропрограммного управления

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

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

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

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

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

Преобразование информации выполняется в универсальном арифметико-логическом блоке микропроцессора. Он обычно строится на основе комбинационных логических схем.

Читайте также:  Способы распространения сведений порочащих честь

Для ускорения выполнения определенных операций вводятся дополнительно специальные операционные узлы (например, циклические сдвигатели). Кроме того, в состав микропроцессорного комплекта (МПК) БИС вводятся специализированные оперативные блоки арифметических расширителей.

Операционные возможности микропроцессора можно расширить за счет увеличения числа регистров. Если в регистровом буфере закрепление функций регистров отсутствует, то их можно использовать как для хранения данных, так и для хранения адресов. Подобные регистры микропроцессора называются регистрами общего назначения (РОН). По мере развития технологии реально осуществлено изготовление в микропроцессоре 16, 32 и более регистров.

В целом же, принцип микропрограммного управления (ПМУ) включает следующие позиции:
1) любая операция, реализуемая устройством, является последовательностью элементарных действий — микроопераций;
2) для управления порядком следования микроопераций используются логические условия;
3) процесс выполнения операций в устройстве описывается в форме алгоритма, представляемого в терминах микроопераций и логических условий, называемого микропрограммой;
4) микропрограмма используется как форма представления функции устройства, на основе которой определяются структура и порядок функционирования устройства во времени.

ПМУ обеспечивает гибкость микропроцессорной системы и позволяет осуществлять проблемную ориентацию микро- и миниЭВМ.

Источник

ПРОГРА́ММНОЕ УПРАВЛЕ́НИЕ

  • В книжной версии

    Том 27. Москва, 2015, стр. 552-553

    Скопировать библиографическую ссылку:

    ПРОГРА́ММНОЕ УПРАВЛЕ́НИЕ, управ­ле­ние ра­бо­той сис­те­мы (объ­ек­та, уст­рой­ст­ва, ма­ши­ны) по за­дан­ной про­грам­ме. Осу­ще­ст­в­ля­ет­ся сис­те­мой ав­то­ма­ти­че­ско­го управ­ле­ния , ко­то­рая вы­ра­ба­ты­ва­ет сиг­на­лы (управ­ляю­щие воз­дей­ст­вия), воз­дей­ст­вую­щие на ис­пол­нит. ор­га­ны управ­ляе­мо­го объ­ек­та. На объ­ект управ­ле­ния, кро­ме управ­ляю­ще­го воз­дей­ст­вия, дей­ст­ву­ет так­же воз­му­щаю­щее воз­дей­ст­вие (внеш­няя сре­да). П. у. мо­жет осу­ще­ст­в­лять­ся как с ис­поль­зо­ва­ни­ем об­рат­ной свя­зи (сис­те­мы с замк­ну­той це­пью воз­дей­ст­вия), так и без неё (сис­те­мы с ра­зомк­ну­той це­пью воз­дей­ст­вия). П. у. наи­бо­лее эф­фек­тив­но для управ­ле­ния слож­ны­ми мно­го­ко­ор­ди­нат­ны­ми про­цес­са­ми (напр., П. у. ЛА, тех­но­ло­гич. про­цес­сом). Сис­те­мы П. у. с замк­ну­той цепью воз­дей­ст­вия мо­гут функ­цио­ни­ро­вать с оп­ти­ми­за­ци­ей и без оп­ти­ми­за­ции ре­жи­ма ра­бо­ты управ­ляе­мо­го объ­ек­та. Про­цесс П. у. с оп­ти­ми­за­ци­ей мож­но рас­смат­ри­вать как ми­ни­ми­за­цию не­ко­то­рого функ­цио­на­ла, ха­рак­те­ри­зую­ще­го «рас­стоя­ние» ме­ж­ду ис­ко­мым и дей­ст­ви­тель­ным (фак­ти­че­ским) со­стоя­ния­ми объ­ек­та. Тер­мин «П. у. с оп­ти­ми­за­ци­ей» воз­ник в тео­рии управ­ле­ния сис­те­ма­ми, под­вер­жен­ны­ми дей­ст­вию слу­чай­ных воз­му­ще­ний (сто­хас­ти­че­ски­ми). Сис­те­мы, ра­бо­таю­щие по ра­зомк­ну­то­му цик­лу, ис­поль­зу­ют толь­ко в ка­че­ст­ве со­став­ной час­ти бо­лее слож­ных сис­тем ав­то­ма­тич. управ­ле­ния (ре­гу­ли­ро­ва­ния).

    Источник

    Управление устройствами

    Подсистема ввода-вывода

    В компьютерных системах кроме процессора и оперативной памяти присутствует множество разнообразных устройств ( device ) – жесткие диски, приводы оптических дисков (CD, DVD , Blu-Ray Disk ), устройства флеш-памяти, принтеры, сканеры, звуковые и видеокарты, модемы, сетевые карты и т. п.

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

    Управление устройствами в Windows осуществляется подсистемой ввода вывода, включающей несколько компонентов (см. рис.4.1 в лекции 4 » Архитектура Windows «):

    • диспетчер ввода-вывода (I/O manager – Input/Output manager) – основной компонент; обеспечивает интерфейс между приложениями и устройствами;
    • диспетчер PnP (Plug and Play manager) – компонент, реализующий принцип Plug and Play («подключи и работай») – автоматическое распознавание и конфигурацию подключаемых к системе устройств;
    • диспетчер электропитания (power manager) – обеспечивает поддержку различных режимов энергопотребления системы и устройств;
    • драйверы устройств – программы, реализующие операции ввода-вывода для конкретного устройства; драйверы больше других компонентов системы «знают» о специфике своего устройства;
    • HAL (Hardware Abstraction Layer) – уровень абстрагирования от аппаратных средств; скрывает от других компонентов особенности реализации конкретных процессоров, системных плат и контроллеров прерываний;
    • реестр (registry) – используется как база данных для параметров устройств и драйверов.
    Читайте также:  Как решать примеры алгебраическим способом

    Далее будут рассмотрены общая схема ввода-вывода, функции и структуры данных диспетчера ввода-вывода, представленные в WRK, а также пример выполнения операции чтения.

    Принцип управления устройствами

    Рассмотрим схематично принцип управления внешними устройствами, а затем перейдем к изучению соответствующих структур и функций WRK.

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

    Файл (file) – совокупность данных, имеющих имя и допускающих операции чтения-записи. Типичная последовательность работы с файлом: открытие файла , выполнение команд чтения-записи, закрытие файла .

    При открытии файла создается файловый объект типа FILE_OBJECT , который связан с объектом, представляющим конкретное устройство ( DEVICE_OBJECT ). В объекте-устройстве содержится информация о драйвере, который управляет этим устройством. Драйвер в системе описывается объектом типа DRIVER_OBJECT . Объекты DRIVER_OBJECT создаются при загрузке в систему нового драйвера. Затем объект DRIVER_OBJECT может создать несколько объектов DEVICE_OBJECT – по количеству управляемых драйвером устройств (рис.15.1).

    Как видно из рис.15.1, в объекте DRIVER_OBJECT содержится указатель на список объектов-устройств, а в каждом из этих объектов хранится ссылка на управляющий драйвер . Таким образом, имея информацию об объекте DRIVER_OBJECT , можно найти все устройства, которыми он управляет и, наоборот, по объекту DEVICE_OBJECT легко определяется драйвер устройства.

    Приложение , которому необходимо произвести некоторую операцию с устройством (файлом), вызывает соответствующую WinAPI функцию (CreateFile, ReadFile, WriteFile и др.), которая, в свою очередь , обращается к функции диспетчера ввода-вывода.

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

    Структуры данных для ввода-вывода

    Драйвер в системе описывается объектом типа DRIVER_OBJECT ( файл base\ntos\inc\io.h, строка 1603), имеющим следующие основные поля:

    • Type – поле, определяющее тип структуры подсистемы ввода-вывода. Значения этого поля могут быть следующими – IO_TYPE_DRIVER, IO_TYPE_FILE, IO_TYPE_DEVICE, IO_TYPE_IRP и др. (см. файл base\ntos\inc\io.h, строка 25);
    • Size – размер объекта в байтах;
    • DeviceObject – ссылка на первый объект DEVICE_OBJECT в списке устройств, управляемых данным драйвером (см. рис.15.1). Следующие устройства в списке можно определять по полю NextDevice объекта DEVICE_OBJECT ;
    • Flags – флаги, определяющие тип драйвера (см. файл base\ntos\inc\io.h, строка 1530);
    • DriverName – имя драйвера в системе;
    • HardwareDatabase – путь в реестре к информации о драйвере;
    • DriverStart , DriverSize , DriverSection – информация о расположении драйвера в памяти;
    • DriverInit – адрес процедуры DriverEntry (точка входа в драйвер), отвечающей за инициализацию драйвера;
    • DriverUnload – адрес процедуры выгрузки драйвера;
    • MajorFunction – массив адресов процедур, каждая из которых отвечает за определенную операцию с устройством. Максимальное количество таких процедур равно константе IRP_MJ_MAXIMUM_FUNCTION+ 1 = 2 8 (файл base\ntos\inc\io.h, строка 80), которая определяет также количество кодов IRP (см. далее).

    Устройства представлены объектами типа DEVICE_OBJECT , который включает следующие главные поля ( файл base\ntos\inc\io.h, строка 1397):

    • Type , Size – совпадают по назначению с полями типа DRIVER_OBJECT ;
    • ReferenceCount – счетчик количества открытых дескрипторов для устройства. Позволяет отслеживать, используется кем-либо устройство или нет;
    • DriverObject – ссылка на драйвер, который управляет устройством;
    • NextDevice – указатель на следующее устройство в списке устройств для данного драйвера;
    • Flags , Characteristics – поля, уточняющие характеристики устройства;
    • DeviceType – тип устройства; возможные типы перечислены в файле public\sdk\inc\devioctl.h (строка 26);
    • SecurityDescriptor – дескриптор безопасности, сопоставленный с устройством (см. лекцию 9 «Безопасность в Windows»).
    Читайте также:  Есть только один способ сделать свою работу хорошо

    Пакеты запроса на ввод- вывод описываются типом IRP ( I/O Request Packet ), состоящим из двух частей – заголовка фиксированной длины (тело IRP ) и одного или нескольких блоков стека. В заголовке описывается информация , общая для запроса. Каждый блок стека содержит данные об одной операции ввода-вывода.

    Заголовок включает следующие основные поля:

    • Type , Size – поля, по назначению аналогичные соответствующим полям типов DRIVER_OBJECT и DEVICE_OBJECT ;
    • IoStatus – статус операции при завершении;
    • RequestorMode – режим, в котором работает поток, инициировавший операцию ввода-вывода, – пользовательский или режим ядра;
    • StackCount – количество блоков стека;
    • Tail.Overlay.Thread – указатель на структуру ETHREAD потока, запросившего операцию ввода-вывода;
    • Tail.Overlay.CurrentStackLocation – указатель на блок стека (IRP Stack Location), который описывается структурой IO_STACK_LOCATION .

    Структура блока стека IO_STACK_LOCATION описана в файле base\ntos\inc\io.h, строка 2303) и имеет следующие главные поля:

    • MajorFunction – номер основной функции, определяющий запрошенную операцию ввода-вывода и совпадающий с номером функции драйвера в массиве MajorFunction (структура DRIVER_OBJECT, см. выше), которую нужно вызвать для выполнения запрошенной операции. Как уже отмечалось, всего кодов 28 (IRP_MJ_MAXIMUM_FUNCTION + 1) , они описаны в файле base\ntos\inc\io.h (строки 51–79);
    • DeviceObject – указатель на структуру DEVICE_OBJECT , определяющую устройство для данной операции ввода-вывода;
    • FileObject – указатель на структуру FILE_OBJECT (файл base\ntos\inc\io.h, строка 1763), которая ассоциирована со структурой DEVICE_OBJECT .

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

    Пример ввода-вывода

    Для ввода-вывода используются следующие основные функции:

    • создание/открытие файла – IoCreateFile (файл base\ntos\io\iomgr\iosubs.c, строка 4795);
    • чтение из файла – NtReadFile (файл base\ntos\io\iomgr\read.c, строка 90);
    • запись в файл – NtWriteFile (файл base\ntos\io\iomgr\write.c, строка 87);
    • закрытие файла – IopDeleteFile файл base\ntos\io\iomgr\objsup.c, строка 465).

    Рассмотрим пример чтения с устройства, используя изученные структуры данных и функцию NtReadFile (рис.15.2).

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

    Для чтения из файла приложение вызывает WinAPI-функцию ReadFile , которая обращается к функции диспетчера ввода-вывода NtReadFile и передает ей дескриптор объекта FILE_OBJECT .

    Функция NtReadFile определена в файле base\ntos\io\iomgr\read.c (строка 90) и выполняет две основные задачи – создает объект IRP (строка 517) и вызывает функцию IopSynchronousServiceTail (строка 725). При создании объекта IRP в блок стека заносится номер основной функции (Major Function ), в случае операции чтения этот код равен константе IRP_MJ_READ (строка 558) и указывает на функцию чтения в массиве MajorFunction структуры DRIVER_OBJECT .

    Функция IopSynchronousServiceTail определена в файле base\ntos\io\iomgr\internal.c (строка 7458). Эта функция помещает переданный ей объект IRP в очередь потока ( функция IopQueueThreadIrp , строка 7468). Указатель на очередь IRP потока хранится в поле IrpList структуры ETHREAD ( файл base\ntos\inc\ps.h, строка 623). Кроме этого, функция IopQueueThreadIrp вызывает соответствующий драйвер ( функция IoCallDriver, строка 7494).

    Драйвер выполняет определенную кодом IRP функцию и возвращает статус операции .

    Резюме

    В лекции представлены компоненты подсистемы ввода вывода в Windows , рассмотрен принцип управления устройствами, а также реализация этого принципа на основе структур данных и функций Windows Research Kernel . Разобран пример ввода вывода для операции чтения из файла.

    В следующей лекции подробно рассматривается структура основной файловой системы Windows – NTFS .

    Источник

    Оцените статью
    Разные способы