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

Реферат

Операционные системы

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

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

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

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

Операционные системы ОПЕРАЦИОННАЯ СИСТЕМА MS-DOS Методические указания к лабораторным работам для студентов 2 и 3 курса Способы обращения к ОС MS-DOS Программы, составленные на языке С, обращаются к прерываниям MS-DOS с помощью таких функций как intdos, int86, intdosx и т.д. Для передачи параметров используются структуры REGS, WORDREGS, BYTEREGS, SREGS, описанные в ф айле dos. h. Программа записывает параметры в поля структуры, соответствующ ие регистрам процессора, а затем вызывает одну из перечисленных выше фун кций, передавая ей адрес структуры. После выполнения прерывания результ ат записывается в эту же или другую структуру. Например : union REGS inregs, outregs; struct SREGS segregs;...... inregs. h. ah. = 0x3a; segregs. ds = FP_SEG(dir_name) ; inregs. x. dx = FP_OFF(dir_name) ; intdosx(&inregs, &outregs, &segregs) ;..... В этом фрагменте кода вызывается функция 3Ah прерывания INT 21h, для чего используется функция 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; unsigned int ss, unsigned int ds; ; Для использования перечисленных выше структур пр ограмма должна одержать следующую строку: #include Поле вызова программног о прерывания программа должна проверить флаг переноса, который сохраня ется в поле 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 - НГМД, 80h - НМД) 37 1 Зарезервировано 38 1 Символ “(“- признак расширенной загрузочной записи 39 4 Серийный номер диска, создается во время форматирования 43 11 Метка диска 54 8 Содержит запись ‘ FAT12 ‘ или ‘ FAT16 ‘ , которая идентифицирует формат т аблицы размещения файлов (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 может служит для идентификации носител я данных, например, он содержит значение F8h для жесткого диска любой емкос ти или значение F0h для диска размером 3,5 дюйма и емкостью 1440 Кб. Прерывания для работы с логическим диском Для работы с логическим диско м (или дискетой) на уровне логических номеров секторов MS-DOS программам два п рерывания - INT 25h (чтение сектора по его логическому номеру) и INT 26h (запись секто ра по его логическому номеру) . Для вызова этих прерываний используется с ледующий формат: INT 25h - чтение сектора по его логическому адресу На входе: AL - А дрес НГМД или НМД (0-A:, 1-B:, и т.д. CX - количество секторов, которые нужно прочитать DX - логический номер начал ьного сектора DS: BX - адрес буфера для чтения На выходе: AH - код ошибки при неусп ешном завершении операции CF 1, если произошла ошибка; 0, если ошибки нет. INT 26h - запись сектора по его логическому номеру На входе: 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 Порядок выполнения лабораторной работы Изучить логическую структуру дика MS-DOS. Составить программу, читающую загрузочный сектор диска и выводящую на э кран основные характеристики диска из BPB. Содержание отчета Цель работы. Описание логической структуры диска MS-DOS. Характеристики лог ического диска, полученные в результате работы составленной в ходе выпо лнения лабораторной работы программы. Контрольные вопросы Принципы записи информации на дисковые накопители. Методы разделения д искового пространства между пользователями (“справочник файлов” ) . Мето ды распределения дискового пространства для файлов. Логическая структ ура диска MS-DOS. Литература Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987. А. В. Фролов, Г. В. Фролов 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 Пример распределения кластеров для файлов 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 Последний кластер в списке 002h - FEFh 0002h-FFEFh Номер следующего кластера в списке Обычно FAT - таблица располагается после загрузочного секто ра. Для точного определения начального сектора FAT - таблицы следует прочит ать в память загрузочный сектор и проанализировать содержимое блока па раметров BIOS. В поле ressect записано количество зарезервированных секторов, ко торые располагаются перед FAT. Поле fat_size содержит размер FAT в секторах. Кроме т ого, следует учитывать, что на диске может находиться несколько копий FAT. О перационная система использует только первую копию FAT, но обновляет втор ую. Вторая копия нужна для утилит восстановления содержимого диска. Коли чество копий FAT находится в поле fat_cnt загрузочного сектора. Общая схема использования FAT такова: Получаем номер первого кластера файла, для которого необходимо определ ить его расположение на диске. Используем номер первого кластера как индекс в FAT - таблице для извлечения номера следующего кластера. Повторяем предыдущую процедуру до тех пор, пока извлеченное из FAT - таблиц ы значение не будет соответствовать концу файла. Процедура извлечения номера кластера из FAT - таблицы зависит от формата FAT - таблицы. 16-битовую FAT - таблицу можно представить как массив 16-битовых чисел. Для опре деления номера следующего кластера надо просто извлечь 16-битовое значен ие из 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_size байт. Корневой каталог занимает непрерывную область фиксированн ого размера. Любой каталог одержит 32-байтовыу дескрипторы, описывающие файлы и други е каталоги. Дескриптор имеет следующий формат: Смещение байт Размер байт Содер жание 0 8 Имя файла или каталога, выровненное на левую границ у и дополненное пробелами 8 3 Расширение имени файла, выровненное на левую границу и дополненно е пробелами 11 1 Байт атрибутов файла 12 10 Зарезервировано 22 2 Время создания файла или время его последней модификации 24 2 Дата создания файла или дата его последней модифик ации 26 2 Номер первого кластера, распределенного файлу 28 4 Размер файла в байтах В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение. Первый дескриптор содержит в поле имени с троку “.” . Этот дескриптор указывает на одержащий его каталог, т.е. катало г имеет ссылку на самого себя. Второй специальный дескриптор содержит в поле имени строку “..” . Это деск риптор указывает на каталог более высокого уровня Если в поле номера пер вого занимаемого кластера для дескриптора с именем “..” находится нулево е значение, это означает, что данный каталог содержится в корневом катал оге. Порядок выполнения работы Изучить структуру FAT таблицы и структуру корневого каталога логического дика ОС MS-DOS. Расширить возможности программы из лабораторной работы № 1 та ким образом, чтобы она выводила на экран номера всех кластеров, распреде ленных файлу, указанному преподавателем. Содержание отчета Цель работы. Структура FAT - таблицы и дескриптора файлов и каталогов. Резул ьтаты выполнения лабораторной работы. Контрольные вопросы Распределение дискового пространства с использованием цепочки блоков . Распределение дискового пространства с использованием цепочки индек сных блоков. Распределение дискового пространства с использование таб лиц отображения файлов. Организация каталогов ОС MS-DOS. Литература Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987. А. В. Фролов, Г. В. Фролов 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 Функция 52h возвращает адрес поля 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. С помощью макрокоманды MK_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 - блоков с указанием и х типов, размеров и владельцев. Содержание отчета Цель работы. Описание полей векторной таблицы связи. Результаты выполне ния лабораторной работы. Контрольные вопросы Распределение памяти в ОС MS-DOS. Назначение и варианты использования векто рной таблицы связи ОС MS-DOS. Назначение и способы использования MCB - блоков Литература Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987. А. В. Фролов, Г. В. Фролов MS-DOS для программиста. Библиотека системного програм миста, Том 19, М: ДИАЛОГ-МИФИ, 1995. Лабораторная работа № 4 Исследование системы обработки прерываний ОС MS-DOS Цель работы Изучение системы обработки прерываний ОС MS-DOS Общие положения Для обработки событий, происходящих асинхронно по отношению к выполнен ию программы, лучше всего подходит механизм прерываний. Прерывание можн о рассматривать как некоторое событие в системе, требующее моментально й реакции. С прерыванием связывают число - номер прерывания. Этот номер однозначно соответствует тому или иному событию. Система уме ет распознавать прерывания и при их возникновении запускает процедуру, соответствующую номеру прерывания. Прерывания могут быть синхронными или асинхронными. Синхронные прерыв ания (программные) вызываются самой программой с использованием команд ы INT. Программные прерывания удобно использовать для организации доступ а к функциям операционной системы и другим разделяемым программам и дан ным. Аппаратные прерывания вызываются физическими устройствами. Эти пр ерывания информируют систему о событиях, связанных с работой устройств, например, завершение ввода, нажатие клавиши на клавиатуре или мыши и т.д. Для того, чтобы связать адрес обработчика прерываний с номером прерыван ия, используется таблица векторов прерываний , занимающая первый килобайт оперативной памяти. Эта таблица наход ится в диапазоне адресов от 0000: 0000 до 0000: 03FFh и состоит из 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) ; В этом примере для прерывания номер 16h устанавливается новый обраб отчик прерывания 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 m ain(void) ; // Сбрасываем счетчик ticks = 0; // Запоминаем адрес старого обработчика прерываний oldvect = dos_getvect (0x1c) : // Устанавливаем новый обработчик прерыва ний dos_setvect (0x1c, timer) ; printf ("\nТаймер установлен. Нажмите любую клавишу ... \n") ; getch() ; // Восстанавливаем старый обработчик прерываний dos_setvect (0x1c, 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 21h. Число обращений подсчита ть для программы, составленной на лабораторной работе №1, №2 или №3. Содержание отчета Цель работы. Список наиболее часто используемых векторов прерываний Ре зультаты работы программы. Контрольные вопросы Принципы обработки прерываний в современных ОС. Особенности обработки программных прерываний. Особенности обработки аппаратных прерываний О бщая схема создания и подключения собственного обработчика прерываний . Литература Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987. А. В. Фролов, Г. В. Фролов 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