Реферат: Операционная система MS-DOS - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Операционная система MS-DOS

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 37 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

18 Новосибирский Государственный Технический Ун иверситет ОПЕРАЦИОННЫЕ СИСТЕМЫ ЧАСТЬ 1. ОПЕРАЦИОННАЯ СИСТЕМА MS - DOS Методические указания к лабораторным работам для студентов 2 и 3 курса Факультета АВТФ (специальность 2202) дневного и заочного отделения Новосибирск 1997 Сос тавили : к.т.н ., доц . В.Г . Качальский ст.преп . Е.Н . Павенко Рецензенты : к.т.н ., доц . В.А . Астапчук Работа подготовлена кафедрой автоматизирован ных систем управления Способы обращения к ОС MS - DOS Программы , составленные на яз ыке С , об ращаются к прерываниям MS - DOS с помощью таких функций как intdos , int 86, intdosx и т.д. Для передачи параметров используются ст руктуры REGS , WORDREGS , BYTEREGS , SREGS , описанные в файле dos . h . Программа записывает параметры в поля структуры , соот ветствующие регистрам про цессора , а затем вызывает одну из перечисл енных выше функций , передавая ей адрес стр уктуры . После выполнения прерывания результат записывается в эту же или другую структур у . Например : union REGS inregs, outregs; struct SREGS se gregs; ...... inregs.h.ah. = 0x3a; segregs.ds = FP_SEG(dir_name); inregs.x.dx = FP_OFF(dir_name); intdosx (& inregs , & outregs , & segregs ); ..... В этом фрагменте кода выз ывается функция 3 Ah прерывания INT 21 h , для чего используется функция intdosx , кот орая вход ит в стандартную библиотеку системы разработк и С ++. Номер функции записывается в поле h . ah объединения inregs , параметры функции (передаваемые через регистры DS : DX ) - соответственно поле ds структуры segregs и в пол е x . dx объединения inregs . Функц ия intdosx записывает содержимое регистров процессора поле выполнени я программного прерывания в объединение outregs . Объединение REGS определено в файле dos . h следующим образом : UNION REGS struct WORDREGS x; struct BYTEREGS h ; ; В нем имеется д ве структуры - WORDREGS и BYTEREGS . Первая из этих структур п редназначена для работы с 16-зфззядными регистр ами . Она определена так : struct WORDREGS unsigned int ax , bx , cx , dx , si . di , cflag , flags ; ; В этой структуре поля ax , bx , cx , dx , si , di соответствуют одноименным регистрам централь ного процессора . Значение флага переноса запи сывается в переменную cflag , поле flags предназначено для остальных флагов процессора. С помощью структуры BYTEREGS можн о задавать и определять содержимое 8-разрядны х регистров процессора : struct BYTEREGS unsigned char al, ah, bl, bh, cl, ch, dl, dh; ; Для работы с сегментными регистрами предназначена структура SREGS , определенная следующим образом : struct SREGS unsigned int es; unsigned int cs; unsi gned int ss, unsigned int ds ; ; Для использования перечисленных выше структур программа должна одержать следующую строку : # include < dos . h > Поле вызова программного пре рывания программа должна проверить флаг перен оса , который сохраняется в поле cflag . Проверка поля cflag может быт ь выполнена , например , следующим образом : union REGS inregs , outregs ; ..... intdos(&inregs,&outregs); if(outregs.x.cflags != 0) error (); ...... Код ошибки при этом запис ывается в переменную outregs . x . ax . Лаборат орная работа № 1 Исследование логической структуры диска в MS - DOS Цель работы Изучение логической структуры диска ОС MS - DOS Общие положения Диски ОС MS - DOS организованы по довольно жесткой схеме . Каждый диск включает в себя помимо обл асти файлов еще нес колько управляющих областей фиксированного размера . Первый сектор логического диска (сектор 1, дорожка 0, головка 0) содержит загрузочную запись - программу началь ной загрузки ОС . Кроме программы начальной загрузки в загрузочной записи находятся па раметр ы , описывающие характеристики данн ого логического диска . Эти параметры располаг аются в самом начале сектора. Формат загрузочн ой записи Смещение байт Размер байт Содержание 0 3 Команда JMP xxxxx - ближний переход на программу начальной загрузки 3 8 Назв ани е фирмы-изготовителя ОС и версия. 11 25 Расширенный блок параметров BIOS 36 1 Физический номер устройства (0 - НГМД , 80 h - НМД ) 37 1 Зарезервирова но 38 1 Симв ол “ (“ - признак расширенной загрузочной з аписи 39 4 Серийный н омер диска , создается во врем я формат ирования 43 11 Метка дис ка 54 8 Содержит запись ‘ FAT 12 ‘ или ‘ FAT 16 ‘ , которая идентифицирует формат таблицы размещения файлов ( FAT ) Со смещением 11 располагается расширенный блок параметров BIOS . Этот блок содержит некоторые характеристик и логического диска. Смещен ие байт Размер байт Имя поля Описание 0 2 set_siz Количество байт в одн ом секторе диска 2 1 clustsiz Количество сектор ов в одном кластере 3 2 res_sect Количество зарезе рвированных секторов 5 1 fat_cnt Количество FAT 6 2 root_siz Максимальное количество дескрипторов файлов в корневом каталоге диска 8 2 tot_sect Общее количество секторов на носителе данных 10 1 media Байт-описатель сре ды носителя данных 11 2 fat_size Количество сектор ов , занимаемых одной копией FAT 13 2 sectors Количество сектор ов на дорожке 15 2 heads Количество магнит ных головок 17 2 hidden_1 Количество скрыты х секторов , для носителя размером < 32 Мб 19 2 hidden_2 Количество скрытых секторов , для носителя размером > 32 Мб 21 4 tot_sect Общее количе ство секторов на логическом диске , превышающим по размеру 32 Мб Байт описания среды - media может служит для идентификации носителя данных , например , он содержит значение F 8 h для жесткого дис ка любой емкости или значение F 0 h для диска размером 3,5 дюй ма и емкостью 1440 Кб. Прерывания для работы с логическим диском Для работы с логическим диском (или дискетой ) на уров не логических номеров секторов MS - DOS програ ммам два прерывания - INT 25 h ( чтение сектора по его логическому номеру ) и INT 26 h (запись с ектора по его логическ ому номеру ). Для вызова этих прерываний ис пользуется следующий формат : INT 25 h - чтение сектора по его логическому адресу На входе : AL - Адрес НГМД или НМД (0- A :, 1- B :, и т.д. CX - количество секторов , которые ну жно прочитать D X - логический номер начально го сектора DS : BX - адрес буфера для чтения На выходе : AH - код ошибки при неуспешном завершении операции CF 1 , если произошла ошибка ; 0, если ошибки нет. INT 26 h - запись сектора по его логическому номеру На входе : AL - Адрес НГМД или НМД (0- A :, 1- B :, и т.д. CX - количество секторов , которые ну жно записать DX - логический номер начального се ктора DS : BX - адрес буфера , содержащего данные На выходе : AH - код ошибки при неуспешном завершении операции CF 1 , если произошла ошибка ; 0, если ошибки нет. В программах на языке С для рабо ты с указанными прерываниями может быть и спользован следующий фрагмент программы : ... union REGS reg; struct SREGS segreg; reg.x.ax. = drive; reg.x.bx = FP_OFF (buff); segreg.ds = FP_SEG (buff); reg.x.x. = 1; reg.x.dx. = 0; int86x(0x25, ®, ®, &segreg); ... где buff - адрес буфе ра , в который считывается (записывается ) логиче ский сектор. Замечание : после вызова прерывания должн а обязательно следовать ко манда : asm POP AX Порядок выполнен ия лабораторной работы 1. Изучить логическую струк туру дика MS - DOS . 2. Составить программу , чит ающую загрузочный сектор диска и выводящую на экран основные характеристики диска из BPB . Содержание отчет а 1. Цел ь работы. 2. Описание логической стр уктуры диска MS - DOS . 3. Характеристики логического диска , полученные в результате работы сос тавленной в ходе выполнения лабораторной рабо ты программы. Контрольные воп росы 1. Принципы записи информа ции на дисковые нак опители. 2. Методы разделения диско вого пространства между пользователями (“справочн ик файлов” ). 3. Методы распределения ди скового пространства для файлов. 4. Логическая структура ди ска MS - DOS . Литература 1. Г . Дейтел . Введение в операционные системы . Том 1,2. М : Мир , 1987. 2. А . В . Фролов , Г.В . Фролов MS - DOS для программиста . Библиотека системного программиста , Том 19, М :ДИАЛОГ-МИФИ , 1995. Лабораторная ра бота № 2 Исследование таблицы размещения файлов ( FAT - таблицы ) ОС MS - DOS Цель работы Изучит ь структуру и на значение FAT - таблицы ОС MS - DOS Общие положения Сразу вслед за загрузочным сектором на логическом диске находятся секторы , содержащие таблицу размещ ения файлов ( FAT - таблица ). FAT - таблица используется для хранения инф ормации о распр еделении файлам секторов диска . Сектор диска - это часть диска , в которой обычно хранится 512 байт информации , относящейся к файлу . Весь диск разбивается операционной системой на участки одинакового размера , называемые кластерами . Кластер может одержать н е сколько смежных секто ров . Для каждого кластера в FAT - таблице есть своя индивидуальная ячейка , в которой хра нится информация об использовании кластера , т. е . FAT - таб лица - это массив , содержащий информацию о кластерах . Размер этого массива равен общему количеству кластеров на логическом дис ке. В FAT - таблице находятся списки кластеров , ра спределенных файлам .. Таким образом , если файл занимает несколько кластеров на диске , то эти кластеры связаны в список . При эт ом элементы FAT - таблицы содержат ном ера следующих используемых данным файлом кластеров . Конец списка отмечен в таблице специальным зна чением . Номер первого кластера , распределенного файлу , хранится в элементе каталога , описыв ающего данный файл. Пример использования FAT - таблицы приведен н а рис .1. Корневой каталог диска C : Имя файла ... Но мер первого кластера , распределенного файлу autoexec.bat ... 11 config.sys ... 12 ... ... ... FAT - таблица ... 17 13 FFFF 00 00 00 18 FFFF 00 ..... кластер 11 12 13 14 15 16 17 18 19 Рис 1. Пример р аспределения кластеров для файлов autoexec.bat b config.sys FAT - таблица может иметь 12- или 16-битовый формат . При этом в таблиц е для хранения информации об одном класте ре диска используется соответственно 12 или 16 би т . 12- битовый формат удобен для дискет с небольшим количеством секторов - вся FAT - таблица поме щается в одном секторе. Первый байт FAT - таблицы называется описателем сре ды . Он имеет такое же значение , как и байт - описатель среды , находящийся в загр узочном секторе дика. Следующие 5 байт для 12-битового формата или 7 байт для 16-битового формата всегда содержат значение 0FFh. Остальная часть FAT - таблицы сост оит из 12- или 16-битовых ячеек . Каждая ячейка соответствует одному кластеру диска . Эти ячейки м огут содержать следующие значения : FAT12 FAT16 Тип кластера 000h 0000h Свободный кластер FF0h-FF6h FFF0h-FFF6h Зарезервированный кластер FF7h FFF7h Плохой кластер FF8h-FFFh FFF8h-FFFFh Последний кластер в списке 00 2h - FEFh 0002h-FFEFh Номер следующег о кластер а в списке Обычно FAT - таблица располагается после загрузочног о сектора . Для точного определения начального сектора FAT - таблицы следует прочитать в память за грузочный сектор и проанализировать содержимое блока параметров BIOS. В поле ressec t записано количество зарез ервированных секторов , которые располагаются пере д FAT. Поле fat_size содерж ит размер FAT в секторах. Кроме того , следует учитывать , что на диске может находиться несколько копий FAT. Операци онная система использует только первую копию FAT , но обновляет вторую . Вторая копия нужна дл я утилит восстановления содержимого диска . Ко личество копий FAT находится в поле fat_cnt загрузочного сектора. Общая схема использования FAT такова : · Получаем номер первого кластера файла , для которо го необходи мо определить его расположение на диске. · Используем номер первог о кластера как индекс в FAT - таблице для извлечения номера следующего кластера. · Повторяем предыдущую пр оцедуру до тех пор , пока извлеченное из FAT - таблицы значение не будет соответствовать концу файла. Процедур а извлечения номера кластера из FAT - таблицы зависит от формата FAT - таблицы. 16-битовую FAT - таблицу можно представить как масси в 16-битовых чисел . Для определения номера с ледующего кластера надо просто извлечь 1 6-битовое значение из FAT - таблицы , использовав в качестве индекса номер предыдущего кластера. Для 12-битовой FAT - таблицы процедура значительно сло жнее . Необходимо выполнить следующие действия : · умножить номер начально го кластера на 3; · разделить р езультат на 2; · прочитать 16-битовое слов о из FAT - таблицы , используя в качестве смещения значение , полученное после деления на 2; · если номер начального кластера четный , на выбранное из FAT слово нужно наложить маску 0FFFh , оставив младшие 12 бит ; ес ли же номер начального кластера нечетный , выбр анное из FAT значение необходимо сдвинуть вправо на 4 бита , оставив старшие 12 бит ; · полученный результат - э то номер следующего кластера в цепочке. Используя описа нную выше процедуру можно определить для ка ждого файла цепочку занимаемых им к ластеров. Для нахождения первого кластера , распред еленного файлу необходимо прочитать информацию из каталога ., в котором содержится данный файл . Для этого необходимо сначала прочитат ь корневой каталог , а затем все подкат алоги из пути каталогов к данному файлу . Корневой каталог находится сразу за последней копией FAT . Перед корневым каталогом находится один загрузочный сектор и fat_cnt*fat_size секторов FAT - таблицы . Размер корневого каталога можно определить исходя из значения поля root_size . При форматировании ди ка в это поле записывается максимальное к оличество файлов и каталогов , которые могут быть в корневом каталоге . Для каждого э лемента в каталоге отводится 32 байта , поэтому корневой каталог имеет длину 32* root_si ze байт. Корневой каталог занимает непрерывную область фиксирова нного размера. Любой каталог одержит 32-байтовыу дескрипт оры , описывающие файлы и другие каталоги . Дескриптор имеет следующий формат : Смещение байт Размер байт Содержание 0 8 Имя файла или каталога , выровненно е на левую границу и дополненное пробелам и 8 3 Расширение имени файла , выровненное на левую границу и дополненное пробелами 11 1 Байт атрибутов файла 12 10 Зарезервировано 22 2 Время создания файла или время его последней модификаци и 24 2 Дата создания файла или дата его последней модификации 26 2 Номер первого кластера , распределенн ого файлу 28 4 Размер файла в байтах В любом каталоге , кроме корневого , два первых дескриптора имеют специальное назначение . Первый дескриптор содер жит в поле имени строку “ . ” . Этот дескриптор указывает на одержащий его каталог , т.е . каталог имеет ссылку на сам ого себя. Второй специальный дескриптор содержит в поле имени строку “ .. ” . Это дескрип тор указывает на каталог более высокого у ровня Если в поле номера первого занимаемо го кластера для дескриптора с именем “ .. ” находится нулевое значение , это означае т , что данный каталог содержится в корнево м каталоге. Порядок выполнен ия работы 1. Изучить структуру FAT - таблицы и структ уру корневого каталога логического дика ОС MS-DOS. 2. Расширить возможности п рограммы из лабораторной работы № 1 таким образом , чтобы она выводила на экран номер а всех кластеров , распределенных файлу , указан ному преподавателем. Содержание отчет а 1. Цель работы. 2. Структура FAT - таблицы и д ескриптора файлов и каталогов. 3. Результаты выполнения л абораторной работы. Контрольные вопр осы 1. Распределение дискового пространства с использованием цепочки блоков. 2. Распределение дискового пространства с использованием цепочки ин дексных блоков. 3. Распределение дискового пространства с использование таблиц отображени я файлов. 4. Организация каталогов О С MS-DOS . Литература 1. Г . Дейтел . Введение в операционные системы . Том 1,2. М : Мир , 1987. 2. А . В . Фролов , Г.В . Фролов MS-DOS для программиста . Библиотека системного п рограммиста , Том 19, М :ДИАЛОГ-МИФИ , 1995. Лабораторная работа № 3 Исследование векторной таблицы связи MS-DOS Цель работы Изучить назначение и структуру векторной таблицы связи основ ных управляющих блоков ОС MS-DOS. Общие положения Операционная си стема MS-DOS с одержит векторную таблицу связи основных упра вляющих блоков . Зная адрес этой таблицы , м ожно получить доступ к внутренним структурам данных операционной системы. Основные стру ктуры данных ОС М S-DOS организ ованы в виде дерева . Корнем этого дерева является векторная таблица связи , которая содержит адреса всех остальных структур : сп исок блоков управления памятью MCB , список блоков управления устройствами MS-DOS , таблицу файлов , ди сковые буферы и т.д . Информация , содержащаяся в векторной таблице связи открывает доступ п рактически ко всем внутренним структурам данн ых операционной системы. Поля векторной таблицы связи Смещ ение байт Размер байт Имя поля Описание -2 2 mcb_seg Сег мент первого блока памяти 0 4 dev_cb Указ атель на первый блок управления устройствами 4 4 file_tab Указатель на таблицу файлов MS-DOS 8 4 clocr_dr Указатель на драйвер CLOCK$ 12 4 con _ dr Указатель на драйвер CON 16 2 max_btbl Максимальный размер блока (в байтах ) для устройств , выполняющих передачу данных отдельными блоками 18 4 disk_buf Указатель на структуру , описывающую дисковые буферы 22 4 drv_info Указатель на массив информации об устройствах 26 4 fcb_tabl Указатель на таблицу FCB 30 2 fcb_size Ра змер таблицы FCB 32 1 num_bdev Ч исло устройств , выполняющих передачу отдельными блоками 33 1 lastdriv Значение LASTDRIVE в файле config.sys 34 ? null_dr Начало драйвера NUL . Этот драйвер всегда первый в списке драйверов MS-DOS Функция 52 h возвращает адрес поля dev_cb . Для того чтобы получить адр ес слова , содержащего сегмент первого блока памяти MCB , необходимо уменьшить значение смещения , полученного от функции на 2. Поле mcb_seg содержит сегментную компоненту адреса пер вого блока MCB . Зная это зна чение можно просле дить и изменить структуру блоков памяти. В поле dev_cb векторной таблицы связи хранится ук азатель на список блоков управления дисковыми устройствами MS-DOS . Каждый такой блок содержит описание характеристик устройства , а также указатель на драйвер , обслуживающий устройство . Прог рамма может использовать блок управления диск овыми устройствами для доступа к диску на низком уровне или для получения справочн ой информации об устройстве. Поле file_tab содержит адрес таблицы файлов MS-DOS . В эт ой таблице для каждого открытого файла хр анится разнообразная информация , такая , как ко личество назначенных файлу идентификаторов ( т.е . сколько раз файл был открыт ), режим испо льзования файла , номер первого кластера диска , распределенного файлу и т.д . Эт а информация может потребоваться для орг анизации доступа к файлам на уровне класт еров , например в системах защиты файлов о т несанкционированного доступа. С помощью полей clock_dr и con_dr программа может получить доступ соответственно к драйверу CLOCK$ и драйвер у консоли CON . Это может понадобиться для организации вызова драйвера непосредственно из программы . Поле max_btbl содержит размер блока устройств , которые выполняют обмен данными отдельными блоками (для MS-DOS размер блока равен 512 байтам. Поле drv_info содержит указатель на массив , в которо м хранится информация о дисковых устройствах . В этом массиве можно найти текущий п уть доступа для каждого диска , номер перво го кластера диска , распределенного каталогу , и адрес соответствующего блока управлени я дискового устройства. В поле fcb_tabl находится указатель на таблицу FCB . Размер это й таблицы записан в поле fcb_size и определяет ся параметром fcbs=xx , расположенном в файле cjnfig.sys. Поле lastdriv содержит значение параметра lastdrive , расположе нн ого в файле config.sys. Его можно использовать для определения максимального количества дисковых устройств в системе. В поле num_bdev хранится количество действительно испол ьзуемых дисковых устройств. Поле nul_dr само по себе не содержит никакой полезной информации . Имеет значение лишь его адрес - в этом месте расположен самы й первый в цепочке драйвер MS-DOS . Для получени я адреса векторной таблицы связи можно во спользоваться следующей программой на языке С : #include #include #include typedef struct unsigned mcb_seg; void far *dev_cb; void far *file_tab; void far *clock_dr; void far *con_dr; unsigned max_btbl; void far *disk_buf; void far *drv_info; void far *fcb_tabl; unsigned fcb_size; unsigntd char num_bdev; unsigned char lastdriv; CVT; typedef CVT far* LPCVT; void main(void) union REGS regs; struct SREGS sregs; LPCVT lpCVT; // Получаем адрес векторной таблицы связи resgs.h.ah = 0x52h; indosx(®s, ®s, &sregs); // Передвиг аем указатель на поле mb_seg lpCVT = (LPCVT)VK_FP(sregs.es, resg.x.bx - 2); // Выводим адрес векторной таблицы связи printf(“\ n А дрес CVT: % Fp” (LPCVT)lpCVT); getch(); Макрокоманды MR_FP, FP_SEG, FP_OFF описаны и файле dos.h. С п омощью макрокоманды M K_FP можно конструировать дальний указатель из значения сегмента и смещения . Макрокоманды FP_SEG и FP_OFF можно выделить из дальнего указателя соответственно сегмент и смещение. Формат блока MCB Внутри блока MCB хранится длина описываемого данным МСВ ф рагмента памяти . Следующий фрагмен т начинается сразу за предыдущим . Все блок и управления памятью связаны в список. Блоки MCB бывают двух типов M и Z. M - блоки - это промежуточные блоки . Бл ок типа Z является последним в списке блоков и может быть только о дин . Блок MCB имеет следую щий формат : Смещен ие байт Размер байт Имя поля Описание 0 1 type Тип блока MCB (M или Z) 1 2 owner Сегментная компонента адре са владельца блока 3 2 size Число параграфов в этом блоке 5 11 reserve Зарезервировано Параграф им еет размер 16 байт. Для удобства работы с блоком MCB определим тип MCB: typedef struct unsigned char type; unsigned owner; unsigned size; char reserve[11]; MCB; Порядок выполне ния работы Получить и вывести на экран адрес векторной таблицы связи и значения по лей в векторной таблице связи. Получить список всех MCB - блоков с указанием их типов , р азмеров и владельцев. Содержание отчет а 1. Цель работы. 2. Описание полей векторно й таблицы связи . 3. Результаты выполнения л абораторной р аботы. Контрольные вопр осы 1. Распределение памяти в ОС MS-DOS . 2. Назначение и варианты использования векторной таблицы связи ОС MS-DOS. 3. Назначение и способы использования MCB - блоков Литература 1. Г . Дейтел . Введение в операционные системы . То м 1,2. М : Мир , 1987. 2. А . В . Фролов , Г.В . Фролов MS-DOS для программиста . Библиотека системного программи ста , Том 19, М :ДИАЛОГ-МИФИ , 1995. Лабораторная работа № 4 Исследование системы обработки прерываний ОС MS-DOS Цель работы Изучение системы обра ботки прерываний ОС MS-DOS Общие положения Для обработки событий , происходящих асинх ронно по отношению к выполнению программы , лучше всего подходит механизм прерываний . П рерывание можно рассматривать как некоторое с обытие в системе , требующее моментально й реакции . С прерыванием связывают число - н омер прерывания. Этот номер однозначно соответствует том у или иному событию . Система умеет распозн авать прерывания и при их возникновении з апускает процедуру , соответствующую номеру прерыв ания. Прерывания могу т быть синхронными или асинхронными . Синхронные прерывания (програ ммные ) вызываются самой программой с использо ванием команды INT. Программные прерывания удобно исполь зовать для организации доступа к функциям операционной системы и другим разделяемым прогр аммам и данным . Аппаратные прерывани я вызываются физическими устройствами . Эти пр ерывания информируют систему о событиях , связ анных с работой устройств , например , завершени е ввода , нажатие клавиши на клавиатуре или мыши и т.д. Для того , чтобы связать адре с обработчика прерываний с номером прерывания , используется таблица векторов прерываний , занимающая первый килобайт оперативной памяти . Эта таблица нахо дится в диапазоне адресов от 0000:0000 до 0000:03 FFh и состоит из 256 элементов - дальних адресов обрабо тч иков прерываний. Элементы таблицы векторов прерываний на зываются векторами прерываний. В первом слове вектора прер ываний записывается компонента смещения обработч ика прерывания , а во втором - сегментная ко мпонента. Для программиста , использующего язык СИ , таблицу векторов прерываний можно описать следующим образом : void (far* interrupt _ table[256])(); Для изменения обработки неко торых прерываний программа должна установить векторы нужных прерываний на свой обработчик . Это можно сделать , изменив содержи мо е соответствующего элемента таблицы векторов прерываний . Перед завершением работы необходимо восстановить содержимое измененных векторов. Если нужно добавить какие-либо действия к тем , что выполняет стандартный обработч ик прерываний , то можно организова ть ц епочку обработчиков прерываний . В библиотеке СИ имеется функция для организации цепочки прерывания с именем _ chain _ intr . Для описания функции , выполня ющей обработку прерывания , следует использовать ключевое слово interrupt . Такая функция завершается к омандой возврата из прерывания IRET . Для нее а втоматически генерируются команды сохранения рег истров на входе и их восстановления при выходе из обработчика прерывания . void interrupt far int_funct(...) // Тело обработчика прерывания Ключевое с лово interrupt используется также для описания пер еменных , предназначенных для хранения векторов прерываний : void interrupt (far *oldvect)(...); Для установки своего обработ чика прерываний используется функция _ dos_setvect. Эта функция имеет два парамет ра - номер прерывания и указатель на новую функцию обработки пр ерывания : _ dos_setvect(0x16, my_key_intr); В этом при мере для прерывания номер 16 h устанавливается новый обр аботчик прерывания my_key_intr . Для того чтобы узнать адр ес старого обработчика пр ерывания по его номеру используется функция _dos_getvect , которая пр инимает в качестве параметра номер прерывания и возвращает указатель на соответствующий номеру обработчик : old_vector = _dos_getvector(0x16); Следующая про грамма иллюстрирует применение перечисленных выше функций для создания цепочки обработч иков прерываний . Эта программа встраивает соб ственный обработчик прерываний от таймера , ко торый будет вызываться 18,2 раза в секунду . В страиваемый обработчик прерываний подсчитывает п рерывания от тай м ера , и , если з начение соответствующего счетчика кратно 20, громко говоритель компьютера издает звуковой сигнал. В конце работы новый обработчик прер ываний вызывает старый обработчик прерываний. После установки нового обработчика прер ывания таймера основна я программа ждет , когда пользователь нажмет любую клавишу , за тем она восстанавливает старое содержимое век тора прерывания. #include #include #include void main(void); void interrupt far timer(...); void interrupt (far *oldvect )(...); // Переменная для подсчета пре рываний таймера volatile long ticks; void main(void); // Сбрасываем счетчик ticks = 0; // Запоминаем адрес старого обработчика прерываний oldvect = dos _ getvect (0 x 1 c ): // Устанавливаем новый обработчик прерывани й dos _ setvect (0 x 1 c , timer ); printf ( "\ n Таймер установ лен . Нажмите любую клавишу...\ n "); getch (); // Восстанавливаем старый обработчик прерываний dos _ setvect (0 x 1 c , oldvect ); void interrapt far timer (...) // Увеличиваем счетчик прерывани й таймер а ticks ++; // Если значение счетчика кратно 20, выдаем сигнал на громко говоритель // компь ютера if (ticks % 20) == 0 ) asm mov bx,0 asm mov ax,0E07h asm int 10h // Вызываем старый обработчик прерываний _ chain _ intr ( oldvect ); Порядок вып олнения работы 1. Отладить про грамму , приведенную выше в описании лаборатор ной работы. 2. Составить и отладить программу , подсч итывающую число обращений к услугам операцион ной системы через прерывание INT 21 h . Число обращений подсчитать для программы , составленной на лабораторной работе № 1, № 2 или № 3. Содержание отчета 1. Цель работы. 2. Список наиболее часто используемых векторов прерываний 3. Результаты работы прогр аммы. Контрольные вопр осы 1. Принципы обработки прер ываний в современных ОС. 2. Особенности обработки п рограммных прерываний. 3. Особенности обработки а ппаратных прерываний 4. Общая схема создания и подключения собственного обработчика прерыва ний. Литература 1. Г . Дейтел . Введение в операционные системы . Том 1,2. М : Мир , 1987. 2. А . В . Фролов , Г.В . Фролов MS - DOS для программиста . Библиотека системного программиста , Том 19, М :ДИАЛОГ-МИФИ , 1995.
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Каждый с похмелья желает знать, где стоит кефир.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru