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

  • Смещение Длина Назначение

  • 42. Реализация потоков в MS-DOS

  • 43. Управление процессами в MS-DOS

  • Состояние процессов

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


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


    Приведем таблицу кодов ошибок:


    Код

    Описание

    0

    Нарушение защиты от записи. Была предпринята попытка записи информации на защищенное от записи устройство

    1

    Неизвестное устройство

    2

    Устройство не готово

    3

    Неизвестная команда. Данная команда не поддерживается драйвером

    4

    Ошибка CRC. При выполнении команды обнаружена ошибка в контрольной сумме

    5

    Неправильная длина запроса. Поле длины в заголовке запроса содержит неверное значение

    6

    Ошибка при поиске дорожки (дорожка не найдена)

    7

    Неизвестный носитель данных

    8

    Сектор не найден

    9

    В принтере нет бумаги

    0Ah

    Ошибка записи

    0Bh

    Ошибка чтения

    0Ch

    Общая ошибка

    0Dh

    Зарезервировано

    0Eh

    Зарезервировано

    0Fh

    Замена диска не разрешается


    Общая схема действий программы прерывания драйвера такова:


    • получив управление от операционной системы, программа прерывания сохраняет содержимое всех регистров процессора и считывает номер команды из заголовка запроса;

    • при необходимости программа считывает дополнительную информацию из области запроса;

    • затребованная команда выполняется (если она поддерживается драйвером);

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

    • программа прерывания устанавливает слово состояния устройства в соответствии с результатами выполнения команды (если драйвер не поддерживает затребованную команду, в слове состояния устройства устанавливаются биты 15 и в биты 0-7 записывается код ошибки 3 - неизвестная команда);

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




    1. Драйвер системных часов CLOCK$


    Операционная система содержит в своем составе драйвер системных часов. Это драйвер символьного устройства, имя устройства - CLOCK$.

    Символ "$" используется для того, чтобы это имя не конфликтовало с именем файла clock. Дело в том, что пользователь может создать файл с именем clock, но с именем clock$ - едва ли (разве лишь он пожелает закодировать в этом имени фразу "время - деньги").

    Характерный признак драйвера системных часов - бит 3 слова атрибутов устройства установлен в 1. Именно этот признак используется MS-DOS для обнаружения драйвера часов.

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



    Смещение

    Длина

    Назначение

    0

    2

    Количество дней, прошедших после 1 января 1980 года

    2

    1

    Счетчик минут

    3

    1

    Счетчик часов

    4

    1

    Счетчик сотых долей секунды

    5

    1

    Счетчик секунд




    1. Особенности отладки драйверов



    Драйверы достаточно сложны для отладки. На этапе инициализации драйвера (при выполнении команды инициализации) загрузка операционной системы еще не завершена, и воспользоваться обычным отладчиком невозможно. Отладчик Turbo Debugger позволяет вам отлаживать драйверы в режиме удаленной отладки, но для этого потребуется второй компьютер.

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

    Программа стратегии обычно очень проста и проблем не вызывает.

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

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

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

    42. Реализация потоков в MS-DOS
    Ввод/вывод в операционных системах (как MS-DOS, так и UNIX) может быть организован двумя принципиально разными способами. Первый способ - это прямое программирование устройств ввода/вывода (дисковода, экрана, модема, клавиатуры). Он может быть организован на различных уровнях (непосредственное программирование устройств, использование сервисных средств операционной системы, смешанный подход и т.д.), но суть его при этом не меняется. Каждая программа, написанная с использованием этого способа, может работать только с этим устройством и ни с каким другим. В настоящее время используется именно этот способ. Именно с помощью этого подхода (точнее, путем "косвенного" программирования периферийных устройств через драйверы этих устройств) и реализован классический WIMP - интерфейс, о котором уже было много сказано в предыдущей главе. Он позволяет создавать красивые и довольно содержательные средства общения с пользователем (меню, окна и тому подобное), а современные технологии позволяют программе при установке автоматически настраиваться на установленное на компьютере оборудование. Но у этих систем есть недостаток: они не могут принять данные с устройств и передать данные устройствам, для работы с которыми они не созданы. Например, нельзя данные вводить с модема, если программа работает только с клавиатурой. Чтобы осуществить это, используют другой способ: ввод/вывод с использованием потоков. В этом случае каждое устройство рассматривается операционной системой как файл, куда можно поместить и откуда можно взять информацию. Так же, как информация, записанная в файл, рассматривается операционной системой как единое целое, не зависимо от способа записи его на диске, так и физическая реализация процесса ввода/вывода информации устройством никак не отражается на работе пользователя.


    Ограничение потоков.

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

    Поток , скажем так, представляет собой некоторый буфер в памяти, куда поступает или откуда выбирается информация. Существуют следующие стандартные потоки:

    1. Стандартный поток ввода - это обычно клавиатура.

    2. Стандартный поток вывода - это обычно монитор.

    3. Стандартный поток вывода ошибок и диагностических сообщений (стандартный поток ошибок) - это обычно дисплей (монитор).
    Переназначение потоков.

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


    >

    переназначает стандартный поток вывода другому устройству (или файлу). Если этот файл существует, он очищается, и на его место записывается новая информация. Используется в DOS и UNIX. В UNIX те же действия может осуществлять конструкция 1>

    >>

    То же самое, но если файл существует, то новая информация записывается в конец этого файла. Используется в DOS и UNIX. Для UNIX также можно использовать конструкцию 1>>


    Переназначение стандартного потока ошибок (в UNIX).

    Обычными средствами DOS не может перенаправить стандартный поток ошибок. В UNIX для этого можно использовать команды 2> и 2>>, соответствующие вышеприведенным для стандартного потока вывода.

    Для перенаправления в UNIX стандартного потока ошибок в стандартный поток вывода используется конструкция >$ (по умолчанию в UNIX стандартному потоку ввода присваивается номер 0, стандартному потоку вывода - 1, а стандартному потоку ошибок - 2. Конструкция в UNIX 0 >$ 2 переназначает стандартный поток ввода в стандартный поток ошибок, то есть все символы, введенные в этом сеансе с клавиатуры, тут же отображаются на экране, и их нельзя перенаправить в файл).


    Перенаправление потока ввода.

    Переадресация стандартного ввода осуществляется конструкцией < для DOS и UNIX и 0> только для UNIX.

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

    program < indata.dat >> outdata.txt

    В данном примере входные данные программы program читаются из файла indata.dat и записываются в файл outdata.txt.

    В примере:

    sort < mylist > prn

    данные из файла mylist сортируются стандартной программой MS-DOS sort и результат выводится на принтер.


    Конвейерная обработка.

    Символы переадресации очень удобны, но иногда бывает необходимо организовать последовательность программ, выполняющих обработку информации, причем результат редыдущей программы является исходным для следующей . При этом промежуточные данные желательно никуда не записывать. Чтобы организовать такую обработку, используют знак '|' конвейера . Команды-"цепочки" такой обработки данных просто записываются в одну строку в порядке их вызова для обработки данных, и отделяются одна от другой знаком конвейера '|'. Пример:

    sort < mylist | more.

    В этом примере данные из файла mylist сортируются программой sort и постранично выводятся на экран программой more.

    В UNIX тоже возможна переадресация потока с одновременным выводом данных на экран, и даже переадресация на два разных устройства. Для переадресации стандартного вывода в файл с одновременной выдачей информации на экран используется команда tee. Например, команда cat в UNIX позволяет просматривать файл. Следующая конструкция:

    cat first | tee second

    копирует файл first в файл second, одновременно показывая его на экране.


    Перенаправление вывода на принтер.

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

    в DOS > prn в UNIX lpr

    Еще один пример: команда

    cat first | tee second | lpr

    копирует файл first в файл second, одновременно распечатывая его на принтере.

    Командой lpr можно также вывести несколько файлов на печать. Подробности смотри ниже.


    История возникновения потоков в MS-DOS.

    Исторически первая версия MS-DOS основывалась на многоплатформенной операционной системе для восьмиразрядных процессоров - CP/M. От нее она унаследовала и способ работы с файлами - через контрольные блоки файлов (File Control Block, FCB). Но уже во второй версии MS-DOS стала использоваться позаимствованная из операционной системы UNIX работа с файлами через дескрипторы файлов (File Handle). Одновременно с реализацией метода дескрипторов файла в MS-DOS из UNIX перешел поточный механизм организации файлов и возможность перенаправления потоков. с тех пор работа с файлами через FCB стала анахронизмом и поддерживается в операционных системах фирмы Microsoft (вплоть до Windows 98) лишь для совместимости со старыми версиями.

    Следует также отметить, что термины "FCB", "дескрипторы файлов", "потоки" употребляются применительно к интерфейсу операций ввода/вывода операционных систем, а не для файловых систем как таковых. Так, использование для работы с файлами метода дескрипторов может происходить и в операционной системе MS-DOS с файловой системой FAT, и в Windows 2000 с NTFS, и в Novell NetWare с NWFS, и в Linux с NFS!



    Устройство

    Обозначение в DOS.

    Консоль

    CON

    1-й параллельный порт

    LPT1

    2-й параллельный порт

    LPT2

    Принтер (синоним LPT1)

    PRN

    1-й последовательный порт

    COM1

    2-й последовательный порт

    COM2

    3-й последовательный порт

    COM3

    4-й последовательный порт

    COM4

    Модем (синоним COM1)

    AUX

    Пустое устройство

    NUL




    Символ

    Смысл перенаправления

    >

    Перенаправляет стандартный вывод на другое устройство или в файл. Содержимое файла при этом теряется.

    >>

    Перенаправляет стандартный вывод в файл. Содержимое файла не теряется. Запись идет в режиме добавления.

    <

    Осуществляет (перенаправляет) стандартный ввод с другого устройства или из файла.

    |

    Символ конвейерной обработки. Выходные данные работы программы, расположенной слева, передаются на вход программы, расположенной справа от знака конвейера.


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


    Состояние процессов
    В многозадачной (многопроцессной) системе процесс может находиться в одном из трех основных состояний:

    ВЫПОЛНЕНИЕ - активное состояние процесса, во время которого процесс обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;

    ОЖИДАНИЕ - пассивное состояние процесса, процесс заблокирован, он не может выполняться по своим внутренним причинам, он ждет осуществления некоторого события, например, завершения операции ввода-вывода, получения сообщения от другого процесса, освобождения какого-либо необходимого ему ресурса;

    ГОТОВНОСТЬ - также пассивное состояние процесса, но в этом случае процесс заблокирован в связи с внешними по отношению к нему обстоятельствами: процесс имеет все требуемые для него ресурсы, он готов выполняться, однако процессор занят выполнением другого процесса.

    В ходе жизненного цикла каждый процесс переходит из одного состояния в другое в соответствии с алгоритмом планирования процессов, реализуемым в данной операционной системе. Типичный граф состояний процесса показан на рисунке 2.1.

    В состоянии ВЫПОЛНЕНИЕ в однопроцессорной системе может находиться только один процесс, а в каждом из состояний ОЖИДАНИЕ и ГОТОВНОСТЬ - несколько процессов, эти процессы образуют очереди соответственно ожидающих и готовых процессов. Жизненный цикл процесса начинается с состояния ГОТОВНОСТЬ, когда процесс готов к выполнению и ждет своей очереди. При активизации процесс переходит в состояние ВЫПОЛНЕНИЕ и находится в нем до тех пор, пока либо он сам освободит процессор, перейдя в состояние ОЖИДАНИЯ какого-нибудь события, либо будет насильно "вытеснен" из процессора, например, вследствие исчерпания отведенного данному процессу кванта процессорного времени. В последнем случае процесс возвращается в состояние ГОТОВНОСТЬ. В это же состояние процесс переходит из состояния ОЖИДАНИЕ, после того, как ожидаемое событие произойдет.



    Рис. 2.1. Граф состояний процесса в многозадачной среде
    1   ...   14   15   16   17   18   19   20   21   ...   29


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