Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB.DOC
Скачиваний:
16
Добавлен:
18.02.2017
Размер:
111.1 Кб
Скачать

Определение объема оперативной памяти.

Объем оперативной памяти, доступный операционной системе, можно определить, прочитав содержимое слова данных BIOS по адресу (0040:0013). Это слово можно получить с помощью функции int peek (unsigned int segment, unsigned int offset). Возвращаемое функцией peek значение будет соответствовать объему оперативной памяти в килобайтах.

Определение типа адаптера дисплея.

Программе пользователя может оказаться необходима информация о том, будет ли она работать в системе с монохромным адаптером, с цветной графической картой или с EGA, а также информация о наличии второго адаптера. Необходимые данные можно определить, прочитав содержимое ячейки данных BIOS по адресу (0040:0087) с помощью функции peek.

Она возвращает следующую информацию:

0 - адаптер EGA отсутствует, в противном случае:

бит 0 - если 1, то установлена символьно-цифровая эмуляция курсора;

бит 1 - если 1, то EGA присоединен к монохромному дисплею;

бит 2 - если 0, то можно записывать в видео RAM, 1 - ожидание доступа к дисплею;

бит 3 - если 1, то EGA не активен;

бит 5,6 - размер видеопамяти (число 64 Кб сегментов, уменьшенное на 1),

если 11, то EGA RAM 256K или более;

бит 7 - если 1, то сохраняется содержимое видеобуфера при смене видеорежима.

Битовое представление величины можно получить с помощью функции itoa, опреде-ленной в файле stdlib.h. Выделение отдельных битов можно произвести с помощью операции логического умножения.

Дополнительную информацию получим при ревизии периферийных устройств.

Ревизия периферийных устройств.

Информация о флагах оборудования хранится в ячейке BIOS с адресом (0040:0010). Содержимое ячейки:

бит 0 - если 1, то есть НГМД;

бит 1 - если 1, то есть математический сопроцессор;

биты 2,3 - если 11, то базовая память 640К (АТ не использует);

биты 4,5 - активный видеоадаптер:

11 - монохромный,

10 - цветной 80*25,

01 - цветной 40*25,

биты 6,7 - число НГМД уменьшенное на 1: 00 - 1 НГМД, 01 - 2 НГМД;

биты 9,10,11 - число последовательных портов;

бит 12 - если 1, то есть игровой порт;

биты 14,15 - число параллельных портов.

В языке Си есть стандартная функция функция, возвращающая слово, хранящееся по адресу 0040:0010. Это функция: int biosequip ( void ) .

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

Домашнее задание.

1. Повторить двоичную, восьмеричную и шестнадцатеричную системы счисления.

2. Составить краткий конспект лабораторной работы.

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

ПОРЯДОК ВЫПОЛНЕНИЯ ЛАБОРАТОРНОЙ РАБОТЫ.

1. Получить у преподователя допуск к лабораторной работе.

2. Отладить программу на ЭВМ.

3. Результаты выполнения программы занести в конспект и показать преподавателю.

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

5. Защитить лабораторную работу.

ЛАБОРАТОРНАЯ РАБОТА 2

Построение пользовательских оболочек

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

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

1. Подготовить место в памяти для размещения "дочерней" программы.

2. Обеспечить сохранение состояния "родительской программы".

3. Загрузить в память "дочернюю" программу и передать ей управление.

4. По завершении "дочерней" программы передать управление вызывающей программе.

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

Операционная система MS DOS воспринимает в качестве исполняемых программ файлы двух типов: .ЕХЕ и .СОМ. Программы типа СОМ являются односегментными - команды, данные и стек располагаются в единственном сегменте и не могут превышать 64 Кбайт. Они хранятся на диске в виде абсолютного образа памяти и в процессе загрузки практически не изменяются. Программы типа .ЕХЕ могут включать любое число сегментов и их суммарный размер ничем не ограничен. Однако, чтобы загрузить их в память необходимо проделать довольно большую работу. Исходные данные для загрузчика хранятся в специальной системной области - заголовке, который есть у всех ЕХЕ-программ.

Любая программа содержит системную таблицу - префикс программного сегмента (PSP), имеющую длину 256 байт. В СОМ-программах место под PSP надо резервировать, а к ЕХЕ-программам он “пристраивается ” в процессе загрузки. Содержимое PSP может использоваться как самой программой, так и DOS. Некоторые данные хранящиеся в PSP:

- вектора прерываний по завершению программы, по критической ошибке, по <Ctrl>/C;

- адрес блока памяти с окружением процесса;

- хвост команды;

- дисковая область передачи данных и др.

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

COMSPEC=C:\DOS\COMMAND.COM

PROMPT=

PATH=

TEMP=

и другие задаваемые командой SET.

С помощью хвоста командной строки запускаемой программе часто передаются ключи, имена входных и выходных файлов. Например в команде ARJ.EXE A DATA.TXT DAT1.ARJ в хвост будут включены данные выделенные жирным.

В языке Си имеется несколько операторов, позволяющих вызывать программы EXE и COM, а также использовать команды MS-DOS из программы. В приведенном ниже примере для вызова программ и команд DOS используется оператор system (name), который оставляет вызывающюю программу резидентной. Оператор perror печатает сообщение об ошибках при загрузке "дочерней" программы.

При использовании стандартных операторов Си вопросы 1-4 решаются автоматически.

Более подробно они будут рассмотрены на лекциях. Полезно также изучить соответству-ющие разделы книги Р.Джордейна.

Соседние файлы в предмете Операционные системы