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

НовосибирскийГосударственный Технический Университет

ОПЕРАЦИОННЫЕ СИСТЕМЫ

ЧАСТЬ 1. ОПЕРАЦИОННАЯСИСТЕМА MS-DOS

Методические указания

к лабораторным работам длястудентов 2 и 3 курса

Факультета АВТФ(специальность 2202)

дневного и заочногоотделения

Новосибирск

1997

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

Составили:     к.т.н.,доц. В.Г. Качальский

ст.преп. Е.Н.Павенко

Рецензенты:   к.т.н.,доц. В.А. Астапчук

Работа подготовлена кафедрой автоматизированныхсистем управления

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

Способы обращения к ОС 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

            {

                        structWORDREGS 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  <dos.h>

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

            union REGS inregs, outregs;

            .....

                        intdos(&inregs,&outregs);

                        if(outregs.x.cflags !=0) error();

            ......

            Код ошибки при этом записывается в переменную outregs.x.ax.

<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»;mso-ansi-language: EN-US;mso-fareast-language:RU;mso-bidi-language:AR-SA">

Лабораторная работа № 1

Исследование логическойструктуры диска вMS-DOS

Цель работы

Изучение логическойструктуры диска ОС MS-DOS

Общие положения

            ДискиОС MS-DOS организованы по довольно жесткой схеме. Каждый дисквключает в себя помимо области файлов еще несколько управляющих областейфиксированного размера. Первый сектор логического диска (сектор 1, дорожка 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.Этот блок содержитнекоторые характеристики логического диска.

Смещение

байт

Размер

байт

Имя поля

Описание

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 программам два прерывания — INT25h (чтениесектора по его логическому номеру) и INT 26h (запись сектора по егологическому номеру). Для вызова этих прерываний используется следующий формат:

INT25h — чтениесектора по его логическому адресу

            Навходе:

                        AL — АдресНГМД или НМД (0-A:, 1-B:, и т.д.

                        CX — количествосекторов, которые нужно прочитать

                        DX — логическийномер начального сектора

                        DS:BX — адресбуфера для чтения

            Навыходе:

                        AH — кодошибки при неуспешном завершении операции

                        CF       1, если произошла ошибка;

                                    0,если ошибки нет.

INT26h — записьсектора по его логическому номеру

            Навходе:

                        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. <span Times New Roman""> 

Изучить логическую структурудика MS-DOS.

2. <span Times New Roman""> 

Составить программу,читающую загрузочный сектор диска и выводящую на экран основные характеристикидиска из BPB.

Содержание отчета

1.<span Times New Roman"">   

Цель работы.

2.<span Times New Roman"">   

Описание логическойструктуры диска MS-DOS.

3.<span Times New Roman"">   

Характеристики логическогодиска, полученные в результате работы составленной в ходе выполнениялабораторной работы программы.

Контрольные вопросы

1.<span Times New Roman"">   

Принципы записи информациина дисковые накопители.

2.<span Times New Roman"">   

Методы разделения дисковогопространства между пользователями («справочник файлов»).

3.<span Times New Roman"">   

Методы распределениядискового пространства для файлов.

4.<span Times New Roman"">   

Логическая структура диска MS-DOS.

Литература

1.<span Times New Roman"">   

Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987.

2.<span Times New Roman"">   

А. В. Фролов, Г.В. Фролов MS-DOS для программиста. Библиотекасистемного программиста, Том 19, М: ДИАЛОГ-МИФИ, 1995.<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

Лабораторная работа №2

Исследование таблицыразмещения файлов (FAT — таблицы) ОС MS-DOS

Цель работы

Изучить структуру иназначение FAT-таблицы ОС MS-DOS

Общие положения

            Сразувслед за загрузочным сектором на логическом диске находятся секторы, содержащиетаблицу размещения файлов(FAT-  таблица). FAT-  таблица используется для хранения информациио распределении файлам секторов диска. Сектор диска — это часть диска, вкоторой обычно хранится 512 байт информации, относящейся к файлу. Весь дискразбивается операционной системой на участки одинакового размера, называемыекластерами. Кластер может одержать несколько смежных секторов. Для каждогокластера в FAT-  таблицеесть своя индивидуальная ячейка, в которой хранится информация об использованиикластера, т.е. FAT-  таблица — это массив, содержащий информацию о кластерах. Размер этого массива равенобщему количеству кластеров на логическом диске.

            В FAT-  таблице находятся списки кластеров,распределенных файлам… Таким образом, если файл занимает несколько кластеровна диске, то эти кластеры связаны в список. При этом элементы FAT-  таблицы содержат номера следующихиспользуемых данным файлом кластеров. Конец списка отмечен в таблицеспециальным значением. Номер первого кластера, распределенного файлу,  хранится в элементе каталога, описывающегоданный файл.Пример использования FAT-  таблицы приведен на рис.1.

Корневой каталог диска C:

Имя файла

...

Номер первого кластера, распределенного файлу

<img src="/cache/referats/1187/image001.gif" " v:shapes="_x0000_s1029"><img src="/cache/referats/1187/image002.gif" " v:shapes="_x0000_s1028">autoexec.bat

...

11

<img src="/cache/referats/1187/image003.gif" " v:shapes="_x0000_s1033"><img src="/cache/referats/1187/image004.gif" " v:shapes="_x0000_s1032">config.sys

...

12

...

...

...

<img src="/cache/referats/1187/image005.gif" v:shapes="_x0000_s1027"><img src="/cache/referats/1187/image006.gif" v:shapes="_x0000_s1026">

<img src="/cache/referats/1187/image007.gif" v:shapes="_x0000_s1031"><img src="/cache/referats/1187/image008.gif" v:shapes="_x0000_s1030">FAT-  таблица

...

17

13

FFFF

00

00

00

18

FFFF

00

.....

кластер

11

12

13

14

15

16

17

18

19

<img src="/cache/referats/1187/image009.gif" v:shapes="_x0000_s1044"><img src="/cache/referats/1187/image010.gif" v:shapes="_x0000_s1035"><img src="/cache/referats/1187/image011.gif" v:shapes="_x0000_s1043"><img src="/cache/referats/1187/image012.gif" v:shapes="_x0000_s1042"><img src="/cache/referats/1187/image013.gif" v:shapes="_x0000_s1034"><img src="/cache/referats/1187/image014.gif" v:shapes="_x0000_s1041"><img src="/cache/referats/1187/image015.gif" v:shapes="_x0000_s1040"><img src="/cache/referats/1187/image016.gif" v:shapes="_x0000_s1039"><img src="/cache/referats/1187/image017.gif" v:shapes="_x0000_s1038"><img src="/cache/referats/1187/image018.gif" v:shapes="_x0000_s1037"><img src="/cache/referats/1187/image019.gif" v:shapes="_x0000_s1036">

Рис 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

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

002h-FEFh

0002h-FFEFh

Номер следующего кластера в списке

            ОбычноFAT — таблица располагается после загрузочного сектора. Для точногоопределения начального сектора FAT — таблицы следует прочитать впамять загрузочный сектор и проанализировать содержимое блока параметров BIOS. Вполе ressect записано количество зарезервированных секторов,которые располагаются перед FAT.Поле fat_size содержитразмер FAT в секторах.Кроме того, следует учитывать, что на диске можетнаходиться несколько копий FAT. Операционная системаиспользует только первую копию FAT, но обновляет вторую.Вторая копия нужна для утилит восстановления содержимого диска. Количествокопий FAT находится в поле fat_cnt загрузочного сектора.

            Общаясхема использования FAT такова:

·<span Times New Roman"">     

Получаем номер первогокластера файла, для которого необходимо определить его расположение на диске.

·<span Times New Roman"">     

Используем номер первогокластера как индекс в FAT — таблице для извлеченияномера следующего кластера.

·<span Times New Roman"">     

Повторяем предыдущуюпроцедуру до тех пор, пока извлеченное из FAT- таблицызначение не будет соответствовать концу файла.

            Процедураизвлечения номера кластера из FAT — таблицы зависит от формата FAT — таблицы.

            16-битовуюFAT — таблицу можно представить как массив 16-битовых чисел. Для определенияномера следующего кластера надо просто извлечь 16-битовое значение из FAT — таблицы,использовав в качестве индекса номер предыдущего кластера.

            Для12-битовой FAT — таблицы процедура значительно сложнее. Необходимовыполнить следующие действия:

·<span Times New Roman"">     

умножить номер начальногокластера на 3;

·<span Times New Roman"">     

разделить результат на 2;

·<span Times New Roman"">     

прочитать 16-битовое словоиз FAT — таблицы, используя в качестве смещения значение, полученное последеления на 2;

·<span Times New Roman"">     

если номер начальногокластера четный, на выбранное из FAT слово нужно наложить маску0FFFh,оставив младшие 12 бит; если же номер начального кластера нечетный, выбранноеиз FAT значение необходимо сдвинуть вправо на 4 бита, оставив старшие 12 бит;

·<span Times New Roman"">     

полученный результат — этономер следующего кластера в цепочке.

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

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

            Корневойкаталог находится сразу за последней копией FAT. Перед корневым каталогомнаходится один загрузочный сектор и fat_cnt*fat_sizeсекторов FAT — таблицы.Размер корневого каталога можно определить исходя из значения поля root_size.При форматировании дика в это поле записывается максимальное количество файлови каталогов, которые могут быть в корневом каталоге. Для каждого элемента вкаталоге отводится 32 байта, поэтому корневой каталог имеет длину 32*root_size  байт.Корневой каталог занимаетнепрерывную область фиксированного размера.

            Любойкаталог одержит 32-байтовыу дескрипторы, описывающие файлы и другие каталоги.Дескриптор имеет следующий формат:

Смещение

байт

Размер

байт

Содержание

8

Имя файла или каталога, выровненное на левую границу и дополненное пробелами

8

3

Расширение имени файла, выровненное на левую границу и дополненное пробелами

11

1

Байт атрибутов файла

12

10

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

22

2

Время создания файла или время его последней модификации

24

2

Дата создания файла или дата его последней модификации

26

2

Номер первого кластера, распределенного файлу

28

4

Размер файла в байтах

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

«.        ». Этот дескриптор указывает наодержащий его каталог, т.е. каталог имеет ссылку на самого себя.

            Второйспециальный дескриптор содержит в поле имени строку «..       ». Это дескриптор указывает на каталогболее высокого уровня

            Еслив поле номера первого занимаемого кластера для дескриптора с именем «..       » находится нулевое значение, этоозначает, что данный каталог содержится в корневом каталоге.

Порядок выполнения работы

1.<span Times New Roman"">   

Изучить структуру FAT — таблицы и структуру корневого каталога логического дика ОС MS-DOS.

2.<span Times New Roman"">   

Расширить возможностипрограммы из лабораторной работы № 1 таким образом, чтобы она выводила на экранномера всех кластеров, распределенных файлу, указанному преподавателем.

Содержание отчета

1.<span Times New Roman"">   

Цель работы.

2.<span Times New Roman"">   

Структура FAT — таблицыи дескриптора файлов и каталогов.

3.<span Times New Roman"">   

Результаты выполнениялабораторной работы.

Контрольные вопросы

1.<span Times New Roman"">   

Распределение дисковогопространства с использованием цепочки блоков.

2.<span Times New Roman"">   

Распределение дисковогопространства  с использованием цепочкииндексных блоков.

3.<span Times New Roman"">   

Распределение дисковогопространства с использование таблиц отображения файлов.

4.<span Times New Roman"">   

Организация каталогов ОС MS-DOS.

Литература

1.<span Times New Roman"">   

Г. Дейтел. Введение в операционные системы. Том 1,2. М: Мир, 1987.

2.<span Times New Roman"">   

А. В. Фролов, Г.В. Фролов MS-DOS для программиста. Библиотекасистемного программиста, Том 19, М: ДИАЛОГ-МИФИ, 1995.<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-ansi-language:RU;mso-fareast-language: RU;mso-bidi-language:AR-SA">

Лабораторная работа № 3

Исследование векторнойтаблицы связи MS-DOS

Цель работы

Изучить назначение иструктуру векторной таблицы связиосновных управляющих блоковОС MS-DOS.

Общие положения

            Операционнаясистема MS-DOS содержит векторную таблицу связи основныхуправляющих блоков. Зная адрес этой таблицы, можно получить доступ к внутреннимструктурам данных операционной системы.

            Основныеструктуры данных ОС МS-DOSорганизованы в виде дерева.Корнем этого дерева является векторная таблица связи, которая содержит адресавсех остальных структур: список блоков управления памятью MCB,список блоков управления устройствамиMS-DOS, таблицу файлов, дисковыебуферы и т.д. Информация, содержащаяся в векторной таблице связи открываетдоступ практически ко всем внутренним структурам данных операционной системы.

Поля векторной таблицы связи

Смещение

байт

Размер

байт

Имя поля

Описание

-2

2

mcb_seg

Сегмент первого блока памяти

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. В этой таблице для каждогооткрытого файла хранится разнообразная информация, такая, как количествоназначенных  файлу идентификаторов( т.е.сколько раз файл был открыт), режим использования файла, номер первого кластерадиска, распределенного

еще рефераты
Еще работы по программному обеспечению