авторефераты диссертаций БЕСПЛАТНАЯ БИБЛИОТЕКА РОССИИ

КОНФЕРЕНЦИИ, КНИГИ, ПОСОБИЯ, НАУЧНЫЕ ИЗДАНИЯ

<< ГЛАВНАЯ
АГРОИНЖЕНЕРИЯ
АСТРОНОМИЯ
БЕЗОПАСНОСТЬ
БИОЛОГИЯ
ЗЕМЛЯ
ИНФОРМАТИКА
ИСКУССТВОВЕДЕНИЕ
ИСТОРИЯ
КУЛЬТУРОЛОГИЯ
МАШИНОСТРОЕНИЕ
МЕДИЦИНА
МЕТАЛЛУРГИЯ
МЕХАНИКА
ПЕДАГОГИКА
ПОЛИТИКА
ПРИБОРОСТРОЕНИЕ
ПРОДОВОЛЬСТВИЕ
ПСИХОЛОГИЯ
РАДИОТЕХНИКА
СЕЛЬСКОЕ ХОЗЯЙСТВО
СОЦИОЛОГИЯ
СТРОИТЕЛЬСТВО
ТЕХНИЧЕСКИЕ НАУКИ
ТРАНСПОРТ
ФАРМАЦЕВТИКА
ФИЗИКА
ФИЗИОЛОГИЯ
ФИЛОЛОГИЯ
ФИЛОСОФИЯ
ХИМИЯ
ЭКОНОМИКА
ЭЛЕКТРОТЕХНИКА
ЭНЕРГЕТИКА
ЮРИСПРУДЕНЦИЯ
ЯЗЫКОЗНАНИЕ
РАЗНОЕ
КОНТАКТЫ


Pages:     | 1 | 2 || 4 |

«УДК 004.45(075.8) ББК -018.2*32.973я73 МИНОБРНАУКИ РОССИИ ...»

-- [ Страница 3 ] --

Вариант Создать файл fil.f в текущем каталоге, открыть его, записать в него слово KATAL, после чего закрыть его. Затем, используя функцию system(), получить как оглавление текущего катало га, так и содержимое файла fil.f Вариант Пусть имеется подкаталог KATAL с единственным файлом fil.f в нём. Нужно, сделав этот подкаталог текущим, удалить в нём файл, выйти из этого подкаталога в родительский каталог и затем удалить подкаталог KATAL. При этом, используя функцию system(), получать оглавление соответствующих директорий.

Вариант Пусть в текущем каталоге имеется файл fil.f, содержащий единственное слово KATAL.

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

Пример Определить, является ли данный файл системным, и если нет,то сделать его архивным.

/* Текст программы и выходные результаты */ #include stdio.h #include dos.h main() { unsigned cx;

char s[]="PROBA";

/* Это имя файла */ _DS=FP_SEG(s);

_DX=FP_OFF(s);

_AX=0x4300;

geninterrupt(0x21);

cx=_CX;

if((cx&4)==0) /* Если не системный */ /* Скобки выше существенны для порядка операций */ { printf("Файл proba не был системным, сделали его архивным\n");

cx=cx|32;

_CX=cx;

/* Занести 1 в 5-й бит байта состояния */ При выполнении этих трех условий он заносит 1 в active и присваивает -1 значению ин декса i. Во всех случаях этот обработчик передаст управление соответствующему стандартному обработчику (прерывания 9). Дальше включается в дело обработчик new_int1c() он, собственно, включается в дело постоянно с интервалом в доли секунды, но, когда active=0, он ничего не де лает, а теперь, когда стало active0, он будет заносить в буфер клавиатуры с помощью уже зна комой нам функции 5 прерывания 16h из массива key_codes[] символы слова "printf", ведя им счет по индексу i и, занеся их все туда, сам установит active в 0. И этот обработчик также в конце передаст управление соответствующему стандартному обработчику (прерывания 1Ch). В про грамме для запоминания адресов стандартных (старых) обработчиков прерываний 9 и 1Ch на время ее работы используются специальные переменные, это соответственно old_int09 и old_int1c. Для таких действий служат функции setvect и getvect, они имеют прототипы в файле dos.h void setvect(int interruptno, void interrupt (*isr) ()) void interrupt (* getvect(int interruptno)) () Первая из них служит для того, чтобы в вектор прерывания с номером interruptno занести адрес isr нового обработчика этого прерывания, а вторая — возвращает адрес стандартного обработчи ка прерывания с номером interruptno. На время этих действий с помощью специальной функции disable() запрещаются прерывания, а потом они вновь разрешаются с помощью функции enable().

Прототипы функций disable(), enable() содержатся в файле dos.h и имеют вид void disable(void) и void enable(void). Новые обработчики соответствующих прерываний выполнены здесь в виде функций new_int09() и new_int1c(). В начале нашей программы в виде констант TAIL_PTR, HEAD_PTR, SOST_KLAV заданы адреса в буфере клавиатуры,по которым хранится смещение "хвоста" и "головы", а также задано смещение байта состояния переключающих клавиш. (Все смещения по отношению к адресу 0x40) В программе также используется целочисленная пере менная active и сразу после загрузки резидентной программы она устанавливается в 0. Неравен ство её нулю означает, что в данный момент идёт запись в буфер клавиатуры соответствующих символов слова. Обработчик new_int09() включается при нажатии и отпускании любой клавиши, сразу же он по адресу 0x40:SOST_KLAV считывает байт состояния переключающих клавиш и анализирует по нему прижата ли клавиша ScrollLock (ей отвечает единица в четвертом справа бите). Также анализирует пуст ли буфер клавиатуры (условия пустоты буфера клавиатуры — ра венство смещений "головы" и "хвоста") и анализирует по переменной active чтобы не шло в дан ный момент занесение слова в буфер клавиатуры, т.е. чтобы active=0. _AX=0x4301;

geninter rupt(0x21);

} else printf("Файл proba системный\n");

} Файл proba не был системным, сделали его архивным. Файл proba системный. Для реше ния задачи следует определить байт атрибутов заданного файла. В нашем случае — это файл PROBA текущего каталога. Наличие единицы в соответствующем бите байта атрибутов означает следующее: 0 бит — файл только для чтения, 1 — скрытый, 2 — системный, 3 — метка тома, — каталог, 5 — архивированный, 6,7 — не используются. Функция 67 (43h) прерывания 21h воз вращает атрибуты файла в регистр CX, если на входе, т.е. перед вызовом прерывания 21h в реги стре AL нуль, если же AL=1, то файлу назначаются атрибуты, заданные в CX. Кроме того, на входе в DS:DX устанавливается указатель на строку с именем файла. В Турбо-Си значения в ре гистрах устанавливаются с использованием соответствующих псевдопеременных. Так, в тексте программы оператор _AX=0x4300 означает, что в регистр AH заносится номер функции преры вания 43h, в AL — нуль. Левая часть оператора — имя соответствующей псевдопеременной. Да лее операторы _DS=FP_SEG(s) и _DX=FP_OFF(s) устанавливают соответственно значение сег мента и смещения указателя на строку с именем файла. Указанное макро описано в файле dos.h.

После необходимой установки регистров оператор geninterrupt(0x21) вызывает подфункцию 00h функции 43h прерывания 21h. Прототип функции geninterrupt() находится в dos.h. Дополнитель ные примеры решения задач с использованием функций прерывания 21h в среде Турбо-Си. Не которые функции прерывания 21h, используемые в вариантах лабораторных работ, указаны ни же, причем десятичный номер функции устанавливается в регистр AH. Некоторые функции тре буют установки дополнительных регистров на входе. Затем указываются значения регистров, со держащих требуемые результаты после вызова прерывания 21h.

1. AH=42. На выходе: CX — год после 1980, DH — номер месяца ( 1 — январь и т.д.), DL — день месяца.

2. AH=44. На выходе: CH — часы (от 0 до 23), CL — минуты (от 0 до 59),DH — секунды (от 0 до 59), DL — сотые доли секунд (от 0 до 99).

3. AH=51, AL=05. На выходе: DL — номер дисковода загрузки операционной системы ( — A:, и т.д.).

4. AH=51, AL=06. На выходе: BL — номер основной версии DOS, BH номер подверсии.

5. AH=1. На выходе: AL — символ, принятый со стандартного входа (с клавиатуры).

6. AH=6. Если на входе в регистр DL записан код ff, то символ вводится со стандартного входа и помещается на выходе в регистр AL. Если на входе в регистр DL записан другой код, то соответствующий ему символ выводится на экран..

7. AH=9. На входе: DS:DX — сегментный адрес и смещение для выводимой строки, кото рая должна заканчиваться символом $.

8. AH=67. На входе: DS:DX установлен на ASCIIZ строку имени файла. Если на входе AL=0, то атрибуты файла возвращаются на выходе в CX, если на входе AL=1, то на выходе фай лу назначаются атрибуты, заданные в CX. Причем, в случае удачного завершения операции флаг CF будет сброшен, а в случае ошибки — установлен и в регистр AX возвращается код ошибки.

Биты байта атрибутов при наличии в них единицы означают следующее: 0-й бит — файл только для чтения, 1 — скрытый файл, 2 — системный, 3 — метка тома, 4 — каталог, 5 — архивный файл, 6,7 биты не используются.

9. AH=25. На выходе: AL — номер текущего диска.

10. AH=14. На входе: DL — номер диска, который должен стать текущим. На выходе: AL — число логических дисковых устройств.

11. AH=71. На входе : DL - номер диска (0 - текущий диск, 1 - A: и т.д.), DS:SI - указатель на область памяти длиной 64 байт. В эту область на выходе помещается строка, содержащая со ставное имя текущего каталога, которая начинается с первой буквы подкаталога в корневом ка талоге и заканчивается нулевым байтом.

12. AH=57. На входе : DS:DX - полная спецификация подкаталога в виде ASCIIZ-строки.

На выходе : создание подкаталога с указанным именем. Причем, флаг CF сброшен в случае удач ного завершения операции, в противном случае флаг CF установлен и в AX помещён код ошиб ки.

13. AH=59. Отличается от описания функции 57-й лишь тем, что на выходе указанный ка талог устанавливается текущим.

14. AH=60. На входе : DS:DX - имя файла в виде ASCIIZ-строки, CX - байт атрибутов (на значение его битов обьяснено при описании 67-й функции). На выходе : создание файла с ука занным именем. Причем, флаг CF сброшен, если операция завершена успешно, и установлен в противном случае с кодом ошибки в AX.

15. AH=61. На входе : DS:DX - имя файла в виде ASCIIZ-строки, AL - код доступа (0 - для чтения, 1 - для записи, 2 - для чтения и записи). На выходе : открыт существующий файл с задан ным именем, номер (дескриптор) которого помещён в AX. Флаг CF описывается так же, как и для 60-й функции.

16. AH=62. На входе : BX - номер (дескриптор) файла. На выходе : закрытие файла с ука занным номером. Флаг CF описывается так же, как и для 60-й функции.

17. AH=63. На входе : BX - номер (дескриптор) файла, CX - число байтов для чтения, DS:DX - адрес буфера для считанных данных. На выходе : AX - число фактически проочитанных байтов. Чтение осуществляется начиная с текущей позиции.

18. AH=64. Подобна функции 63, с той лишь разницей, что в CX - число байтов для записи в файл из буфера.

19. AH=65. На входе : имя файла в виде ASCIIZ-строки. На выходе : в случае успешного удаления файла флаг CF сброшен, в противном случае флаг CF установлен, а код ошибки поме щён в AX.

20. AH=58. На входе : Полная спецификация удаляемого каталога в виде ASCIIZ-строки, причем, каталог должен быть пустым. На выходе : Флаг CF описывается так же, как и для функ ции 65.

Контрольные вопросы 1. Определение грамматики. Форма Бэкуса-Наура.

2. Понятие о грамматике языка.

3. Принцип рекурсии в правилах грамматики.

4. Запись правил грамматик с использованием метасимволов.

5. Запись правил грамматик в графическом виде.

6. Классификация языков и грамматик.

7. Цепочки вывода. Сентенциальная форма.

8. Проблемы однозначности и эквивалентности грамматик.

Лабораторная работа №2 Системные ресурсы ПЭВМ Управление внутренними ресурсами ПЭВМ. Порты ввода-вывода. Системные ресурсы.

Цель работы: определение системных ресурсов ПЭВМ, прочитав значение переменной BIOS по соответствующему адресу или прочитав нужный регистр так называемой CMOS-памяти.

Задание. Выбрав вариант согласно предпоследней цифре, решить указанную в нём задачу.

После условий вариантов и примера для удобства приведена необходимая справочная инфор мация.

Вариант Определить тип используемой ПЭВМ, прочитав байт оперативной памяти по адресу FE00:1FFE. Затем, используя CMOS-память, указать текущее время в час и мин.

Вариант Определить и указать дату изготовления версии BIOS, записанную по адресу F000:FFF5.

Затем, используя CMOS-память, указать текущую дату. (число, месяц, год) Вариант Определить объём оперативной памяти, прочитав его по адресу 0:0413. Затем, ис пользуя CMOS-память, определить текущее столетие Вариант Определить монохромен ли активный видеоадаптер, используя переменную BIOS по ад ресу 0:0410. Затем, используя CMOS-память, определить тип накопителя на гибких магнитных дисках.

Вариант Используя переменную BIOS по адресу 0:0410, определить наличие НГМД. Затем, ис пользуя CMOS-память, указать наличие сопроцессора.

Вариант Используя переменную BIOS по адресу 0:0410, определить активный видеоадаптер. За тем, используя CMOS-память, определить наличие НГМД и их количество.

Вариант Используя переменную BIOS по адресу 0:0410, определить число дисководов. Затем, ис пользуя CMOS-память, определить тип дисплея.

Вариант Используя переменную BIOS по адресу 0:0410, определить число установленных прин теров. Затем, используя CMOS-память, определить объём памяти в килобайтах на системной плате.

Вариант Используя переменную BIOS по адресу 0:0410, определить наличие игрового адаптера.

Затем, используя CMOS-память, определить объём общей памяти в килобайтах.

Вариант Используя переменную BIOS по адресу 0:0410, определить число коммуникационных адаптеров. Затем, используя CMOS-память, определить объём памяти в килобайтах сверх 1 Мб.

Пример Определить наличие сопроцессора, используя переменную BIOS по адресу 0:0410. Затем, используя CMOS-память, определить тип накопителя на гибких магнитных дисках.

/* Текст программы и выходные результаты */ #include stdio.h #include dos.h main() { int h,i;

unsigned char c,cr[2];

char dsk[2]={'A','B'};

/* Определить наличие сопроцессора */ h=peek(0,0x410);

if(h&2) puts("Есть сопроцессор\n");

else puts("Нет сопроцессора\n");

/* Определить тип накопителя на гибких дисках */ /* Читаем нужную ячейку КМОП-памяти */ outportb(0x70,0x10);

c=inportb(0x71);

cr[0]=(c4);

cr[1]=(c&0x0f);

for(i=0;

i2;

i++) { switch(cr[i]) { case 0 : printf("Дисковод %c: не установлен\n", dsk[i]);

break;

case 1 : printf("Дисковод %c: на 360 Кб\n", dsk[i]);

break;

case 2 : printf("Дисковод %c: на 1.2 Мб\n", dsk[i]);

break;

case 3 : printf("Дисковод %c: на 720 Кб\n", dsk[i]);

break;

case 4 : printf("Дисковод %c: на 1.44 Мб\n", dsk[i]);

break;

} } } Нет сопроцессора Дисковод A: на 1.44 Мб Дисковод B: не установлен Для решения задачи следует определить бит 1 по адресу 0:0410. Наличие сопроцессора соответствует тому, что в этом бите установлена единица. Функция peek, прототип которой int peek(int segment, int offset), возвращает в переменную h слово, расположенное по адресу segment:offset. Далее, достаточно заметить, что выражение h&2 обнуляет все биты слова h, кроме первого.

Как известно, персональная ЭВМ типа AT хранит информацию о конфигурации в так на зываемой CMOS-памяти, включающей 64 регистра с номерами от 0 до 63. Для того, чтобы прочитать значение из регистра с номером N, необходимо сначала послать этот номер в порт 70h посредством функции outportb, прототип которой void outportb(int portid, unsigned char value), а затем прочитать значение из порта 71h, используя функцию inportb, прототип которой unsigned char inportb(int port).

В нашей задаче для того, чтобы определить тип НГМД, следует воспользоваться инфор мацией регистра 10h, в битах 7-4 для первого накопителя и в битах 3-0 для второго. Тогда значе ние 0 соответствует отсутствию накопителя, значение 1 - накопителю на 360 Кб, значение 2 - на 1.2 Мб, значение 3 - на 720 Кб, значение 4 - на 1.44 Мб.

В приведённом листинге байт из порта 71h заносится в переменную c. Выражения c4 и c&0x0f позволяют проанализировать значения этого байта в битах 7-4 и 3-0 соответственно, что и даёт возможность определить тип накопителя.

Ниже приводится справочная информация, используемая в лабораторной работе N 2.

1. Байт оперативной памяти по адресу FE00:1FFF интерпретируется следующим обра зом : FF - IBM PC;

FE - IBM PC/XT;

FD - PCjr;

FC - IBM PC/AT.

2. По адресу F000:FFF5 записывается номер версии BIOS.

3. Объём оперативной памяти читается по адресу 0:0413.

4. Установленное в ПЭВМ оборудование можно определить, прочитав значение пере менной BIOS по адресу 0:0410. Значения её битов следующие : если бит 0 в единице, то присут ствует НГМД;

если бит 1 в единице, то имеется сопроцессор (XT,AT);

биты 2,3 задают базовую память (в AT не используются);

биты 4,5 задают активный видеоадаптер (11 - монохромный, - цветной с разрешением 80 строк по 25 знаков, 01 - цветной с разрешением 40 строк по 25 зна ков);

биты 6,7 задают число дисководов (00 - 1, 01 - 2, 10 - 3, 11 - 4);

бит 8 не используется для PC,XT,AT;

биты 9...11 задают число коммуникационных адаптеров от 0(000) до 7(111);

если бит 12 в единице, то имеется игровой адаптер;

бит 13 не используется для PC,XT,AT;

биты 14, задают число установленных принтеров от 0(00) до 3(11).

5. Ниже указываются десятичные номера некоторых регистров CMOS-памяти и данные, которые в них записаны : 0 - секунды;

2 - минуты;

4 - часы;

6 - день недели;

7 - день месяца;

8 месяц;

9 - год;

18 тип фиксированного диска (биты 7...4 - первый диск, 3...0 - второй);

20 - уста новленное оборудование (биты 7...6 : 00 один НГМД, 01 - два НГМД;

биты 5...4 : 01 - цветной дисплей с разрешением 40x25, 10 - цветной дисплей с разрешением 80x25, 11 - монохромный дисплей;

биты 3,2 не используются;

бит 1 : 1 - имеется сопроцессор, 0 - отсутствует;

бит 0 : 1 имеется НГМД, 0 - отсутствует);

21 - объём памяти в килобайтах на системной плате (младший байт);

22 - объём памяти в килобайтах на системной плате (старший байт);

23 - объём общей па мяти в килобайтах (младший байт);

24 - объём общей памяти в килобайтах (старший байт);

48 память сверх 1 Мб (младший байт);

49 - память сверх 1 Мб (старший байт);

50 - текущее столе тие.

Контрольные вопросы 1. Понятие прохода. Многопроходные и однопроходные компиляторы.

2. Трансляторы с языка ассемблера («ассемблеры»). Макроопределения и макроко манды.

3. Лексические анализаторы (сканеры). Принципы построения сканеров 4. Назначение лексического анализатора. Принципы построения лексических анали заторов.

5. Автоматизация построения лексических анализаторов (программа LEX).

6. Синтаксические анализаторы.

7. Синтаксически управляемый перевод.

8. Основные принципы работы синтаксического анализатора. Дерево разбора. Пре образование дерева разбора в дерево операций.

9. Машинно-зависимые методы оптимизации.

10.

Лабораторная работа №3 Средства BIOS для работы с клавиатурой Управление вводом с клавиатуры средствами BIOS.

Цель работы: использование средств BIOS для работы с клавиатурой. В частности, осуществлена проверка буфера клавиатуры на наличие в нём символов, а также получение состояния переключающих клавиш.

Задание. Выбрав вариант согласно младшей цифре суммы последней и предпоследней цифр шифра, решить указанную в нём задачу.

Вариант Составить программу на языке Си, выводящую на экран в цикле какой-либо символ.

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

Вариант Отличается от варианта 0 тем, что программа завершается при включённом состоянии CapsLock.

Вариант То же, что и в варианте 1, но при выключенном состоянии клавиши ScrollLock.

Вариант То же, что и в варианте 1, но при включённом состоянии клавиши ScrollLock.

Вариант То же, что и в варианте 1, но при выключенном состоянии клавиши Ins.

Вариант То же, что и в варианте 1, но при включённом состоянии клавиши Ins.

Вариант То же, что и в варианте 1, но при выключенном состоянии клавиши NumLock.

Вариант То же, что и в варианте 1, но при включённом состоянии клавиши NumLock.

Вариант То же, что и в варианте 1, но если не нажат правый Shift.

Вариант То же, что и в варианте 1, но если нажат правый Shift.

Пример Составить программу на языке Си, выводящую на экран в цикле символ '*'. Нужно, чтобы работа программы завершалась при нажатии клавиши Esc, если левый Shift не нажат.

/* Текст программы */ #include stdio.h #include dos.h void main(void) { union REGS rg;

int i,zflag;

for(;

;

) { /* Выводим в цикле символ '*' */ putchar('*');

/* Небольшая задеpжка во вpемени */ for(i=0;

i1000;

i++) ;

/* Вызываем пpеpывание INT 16h для пpовеpки буфеpа клавиатуpы */ /* Устанавливаем флаг, котоpый будет сбpошен пpи нажатии на любую клавишу */ zflag=1;

rg.x.ax=0x0100;

/* 01x - номеp функции (пpовеpка буфеpа клавиатуpы) для пpеpывания INT 16h */ int86(0x16,&rg,&rg);

zflag=rg.x.flags&0x40;

/* Получаем в zflag значение pазpяда ZF из pегистpа флагов микpопpоцессоpа */ if(zflag==0) { /* Если флаг сбpошен т.е. нажали к.л. клавишу, то читаем код нажатой клавиши из буфеpа пpи помощи функции 00h пpеpывания INT 16h */ rg.h.ah=0;

int86(0x16,&rg,&rg);

/* Если была нажата клавиша ESC, то завеpшаем pаботу пpогpаммы пpи условии, что пеpеключатель Shift (левый) не нажат */ if(rg.h.ah==1) { /* Дополнительно пpовеpяем состояние клавиши Shift (левый), этой клавише отвечает бит 0x в слове состояния */ rg.h.ah=2;

int86(0x16,&rg,&rg);

if((rg.h.al&0x02)==0) /* Если Shift (левый) не нажат */ break;

else printf("\nДля завеpшения нажмите ESC " "пpи неприжатой клавише Shift (левый)\n");

} else printf("\nДля завеpшения нажмите ESC " "пpи неприжатой клавише Shift (левый)\n");

} } } В задаче в бесконечном цикле for(;

;

) выводится символ '*'. Нужно остановить этот вывод, нажав на клавишу Esc, причем, должно быть учтено состояние переключающей клавиши (ле вый Shift). Для проверки того, есть ли в буфере клавиатуры коды нажатых клавиш, использу ется функция 01h прерывания 16h. Для этого на входе в регистр AH заносится 01h. Тогда на выходе регистр AL содержит ASCIIZ-код символа или 0, если AH содержит расширенный ASCIIZ-код символа;

а регистр AH - скэн-код или расширенный ASCIIZ-код символа.

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

Вызывается прерывание 16h посредством функции int86, прототип которой int int86(int intno, union REGS inregs, union REGS outregs) описан в заголовочном файле dos.h. Эта функция загружает внутренние регистры микропроцессора значениями, запи санными в объединении по шаблону union REGS, на начало которого указывает inregs, и выпол няет прерывание с номером intno.

Значения внутренних регистров на выходе из прерывания записываются в объединение по шаблону union REGS, на начало которого указывает outregs.

Шаблон union REGS описан в заголовочном файле dos.h и представляет собой объедине ние двух структур : union REGS { struct WORDREGS x;

struct BYTEREGS h;

} struct WORDREGS { unsigned int ax,bx,cx,dx,si,di,cflag,flags;

} struct BYTEREGS { unsigned char al,ah,bl,bh,cl,ch,dl,dh;

} Так как флаг ZF - это 6-й бит регистра флагов микропроцессора, то он выделяется посред ством выражения rg.x.flags&0x40.

Скэн-код клавиши Esc равен 1, функция 02h прерывания 16h позволяет получить состоя ние переключающих клавиш. Для этого на входе в регистр AH заносится 02h, а на выходе AL содержит байт состояния переключающих клавиш.

Состояние переключающей клавиши левый Shift определяется выражением rg.h.al&0x02.

Это следует из того, что формат байта состояния соответствует формату байта, находящгося в области данных BIOS по адресу 0000h:0417h. Ниже приведена информация при установке соот ветствующего бита этого байта в 1.

Бит 0 - нажата и не отпущена клавиша правый Shift, 1 - нажата и не отпущена клавиша левый Shift, 2.- нажата и не отпущена клавиша Ctrl, 3 - нажата и не отпущена клавиша левый Alt, 4 - включён ScrollLock, 5 - включён NumLock, 6 - включён CapsLock, 7 - включён режим вставки Ins.

Контрольные вопросы 1. Режимы управления вводом/выводом.

2. Закрепление устройств, общие устройства ввода/вывода.

3. Синхронный и асинхронный ввод/вывод.

4. Функции файловой системы ОС и иерархия данных.

5. Файловая система FAT. Файловые системы VFAT и FAT32.

6. Файловая система HPFS.

Лабораторная работа №4 Работа с видеоадаптерами. Видеоадаптеры и их характеристика Цель работы: использование средств BIOS для работы с видеоадаптерами.

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

Номер вариан- Исходные ASCII-коды Шрифт Новые та символы Символы % 37 8x14 A & 38 L ? 63 M 1 8x @ 64 Y ^ 94 T 2 8x - 95 H % 37 О 3 8x & 38 П ? 63 I 4 8x @ 64 V ^ 94 И 5 8x - 95 E % 37 Ф 6 8x & 38 Ш ? 63 К 7 8x @ 64 Ч ^ 94 Г 8 8x - 95 N % 37 Z 9 8x & 38 X Пример Изменить начертания двух символов X(ASCII-код 88) и Y(ASCII-код 89) соответственно на символы типа прямой и перевернутой буквы Т. Показать изображения символов до и после изменения.

/* Текст программы */ #include stdio.h #include dos.h void main() { int i;

unsigned char *d;

/* d - Указатель на новую таблицу */ /* новая таблица для замены символов X c кодом ASCII и Y с кодом ASCII 89 на другие символы */ d="\xff\xff\x18\x18\x18\x18\x18\x18" "\x18\x18\x18\x18\x18\x18\x18\x18" "\x18\x18\x18\x18\x18\x18\x18\x18" "\x18\x18\x18\x18\x18\x18\xff\xff";

clrscr();

/* Очистка экрана */ puts("Old symbols XXXXX and YYYYY ");

printf("Для продолжения нажмите любую клавишу\n");

getch();

clrscr();

/* Очистка экрана. */ _ES=_DS;

/* ES устанавливается на область данных */ _BL=0;

/* Нулевой блок для загрузки */ _AH=0x11;

/* номер функции 11 */ _AL=0;

/* номер подфункции 0, означает загрузить шрифт пол-ля, а при _AL=1, например, была бы загрузка монохромного шрифта из ПЗУ */ _BH=16;

/* 16 байт на символ (если б шрифт исходный был не обычный Font 8X16, а, скажем, Font 8X14, то писали бы _BH=14;

но по умолчанию машина делает Font 8X16 ) */ _CX=2;

/* заменяются только 2 символа */ _DX=88;

/* заменяются символы - % и &, с кодами 88, 88+1 */ _BP=(unsigned)d;

/* ES:BP должен указывать на заданную таблицу с именем block */ geninterrupt(0x10);

/* Вызов прерывания 0x10 */ puts("New symbols XXXXX and YYYYY");

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

8x8,8x14, 8x16, 9x14,9x16 точек. Функция 11h прерывания 10h имеет различные подфунк ции, позволяющие устанавливать те или иные режимы работы со шрифтами.

Например, для загрузки шрифта 8x14 перед вызовом прерывания 10h в регистр AH зано сим 11h (номер функции), в AL - 1 (номер подфункции), в BL - 0 (нулевой блок знакогенерато ра). Загрузка шрифтов 8x16 и 8x8 производится аналогично, лишь с той разницей, что здесь в регистр AL помещаются функции 14h и 12h соответственно.

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

Например, 8x16 матрица соответствует знаку "крест" (типа +). При этом светящимся пикселам соответствуют еди ницы, а темным - нули. Приведенная матрица может быть записана в виде символьной строки "\x18\x18\x18\x18\x18\x18\x18\xff\xff\x18\x18\x18\x18\x18\x18\x18" Далее, в регистры ES:BP заносится адрес символьной строки, задающей указанным выше образом новые начертания для нескольких подряд идущих ASCII-кодов, а в регистр BH заносится число строк пиксельной матрицы (8, 14 или 16).

Число подряд идущих символов, подлежащих перекодировке, заносится в регистр CX, а в регистр DX - код первого из этих символов.

Итак, в рассматриваемом примере перед вызовом прерывания 10h имеем в регистре BH 16, BL - 0, CX - 2, DX - 88, AL - 0, AH - 11.

После вызова рассматриваемого прерывания символы указанных кодов изменяют своё начертание в соответствии с указанным в битовых матрицах.

Контрольные вопросы 1. Внешние и внутренние прерывания.

2. Дисциплины обслуживания прерываний.

3. Управление задачами и памятью в операционных системах.

4. Планирование и диспетчеризация процессов и задач.

5. Стратегии планирования.

6. Дисциплины диспетчеризации.

7. Вытесняющие и невытесняющие алгоритмы диспетчеризации.

8. Качество диспетчеризации и гарантии обслуживания.

Лабораторная работа №5 Visual C++ и библиотека MFC Цель работы: ознакомление с основными компонентами Visual C++ и набором инструмен тов, интегрированной среды программирования – Developer Studio (студии разработчика), а так жеприобретение навыков их использования при создании простейшего приложения для Windows.

Visual C++ объединяет в себе две законченные системы разработки Windows приложений:

1. программирование на C с использованием функций Win32 API и инструментальных средствстудии разработчика: текстового процессора, графического редактора и др.;

2. программирование на C++ с использованием каркаса приложений, обеспечиваемого библиотекой классов MFC, которая является важнейшей компонентой Visual C++.

Компилятор Visual C++ способен обрабатывать исходный код и на С, и на С++, при этом расширение с указывает на С код, а срр или схх - на С++. В компилятор включена новая библиотека для С++ - Standard Template Library (STL).

Компилятор ресурсов считывает текстовый файл описания ресурсов *.RC, созданный графическим редактором, и переводит его в двоичный файл *.RES для компоновщика.

Компоновщик считывает файлы *.OBJ и *.RES, сгенерированные компилятором С/C++ и компилятором ресурсов, а также обращается за MFC-кодом, хранящемся в файлах *.LIB, за кодом библиотек периода выполнения и за кодом Windows. После этого он формирует исполняемый код в виде файла *.EXE или файла *.DLL. Необходимые библиотеки компоновщик находит по информации в директивах #pragma, включенных в заголовочные файлы библиотеки MFC.

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

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

Visual C++ имеет встроенную справочную систему InfoView, которая включает более 6000 страниц текста, и предоставляет следующие способы поиска информации, по книге, по те ме, по контексту программы или справки и по запросу с использованием логических связок.

Отладчик работает в тесной взаимосвязи со студией разработчика, позволяет расстав лять и убирать точки прерывания, а также контролировать пошаговое исполнение программ и отображать в окнах Variables и Watch указатели объектов до полного описания всех элементов данных производного и базовых классов.

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

В Visual C++ включен ряд диагностических утилит: Spy++ для просмотра дерева про цессов, потоков и окон, открытых в системе, а также получаемых сообщений;

PView и PView для закрытия сбойных процессов, не видимых из Windows;

OLE-утилиты для тестирования эле ментов ActiveX, просмотра и редактирования двоичных файлов;

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

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

Хранилище компонент Components Gallery обеспечивает использование одних и тех же компонент в нескольких проектах и оперирует с тремя типами модулей: элементами ОСХ, классами и мастерами.

Библиотека MFC является главной компонентой Visual C++, определяет программный интерфейс для Windows на языке С++ и новую технологию разработки программного обеспече ния на базе каркаса приложений.

Каркас приложений – это подмножество библиотеки MFC, из которого программист берет классы, служащие строительными блоками приложения на самом верхнем уровне. Он предлагает структуру приложения, отработанную на многих проектах и опробованную во многих программных средах.

Элементами исходного кода для приложения, построенного на базе каркаса MFC, яв ляются следующие классы и методы:

1. Заголовочный файл приложения MyApp.h 1.1. Класс нового приложения class CMyApp:public CWinApp { public:

virtual BOOL InitInstance();

};

1.2. Класс рамки окна class CMyFrame:public CFrameWnd { public:

CMyFrame();

protected:

afx_msg void OnLButtonDown(UINT nFlags,CPoint point);

afx_msg void OnPaint();

DECLARE_MESSAGE_MAP() };

//-спецификатор af_x_msg означает, что функция является частью системы распреде ления сообщений библиотеки MFC;

2. Файл реализации приложения MyApp.срр#include afxwin.h //-заголовочный файл базовых классов MFC;

#include "MyApp.h" //-собственный заголовочный файл;

CMyApp theApp;

//-уникальный в программе объект приложения;

2.1.Реализация метода инициализации объекта приложенияCMyApp::InitInstance(){ m_pMainWn = new CMyFrame();

m_pMainWnd - ShowWindow(m_nCmdShow);

m_pMainWnd - UpdateWindow();

return TRUE;

} 2.2. Вызов макросов карты сообщений BEGIN_MESSAGE_MAP(CMyFrame,CFrameWnd) ON_WM_LBUTTONDOWN() ON_WM_PAINT() END_MESSAGE_MAP() 2.3. Реализация конструктора CMyFrame CMyFrame::CMyFrame() { Create(NULL,"MYAPP Application");

} 2.4. Обработчик сообщения о щелчке левой кнопки мыши void CMyFrame:: OnLButtonDown(UINT nFlags,CPoint point) { TRACE("Entering CMyFrame::OnLButtonDown - %lx,%d,%d\n", (long)nFlags,point.x,point.y);

} 2.5. Обработчик сообщения WM_PAINT void CMyFrame::OnPaint() { CPaintDC dc(this);

dc.TextOut(0,0," Простое приложение ");

} Пояснения к программе:

1. Функция WinMain скрыта внутри каркаса приложения.

2. Объект класса CMyApp представляет программу. В программе определяется един ственный глобальный объект класса СМуАрр - theApp. Базовый класс CWinApp определяет ос новные характеристики объекта theApp.

3. При запуске приложения вызывается функция WinMain каркаса, которая использует объект theApp.

4. В первую очередь функция WinMain вызывает метод theApp. InitInstance, который обеспечивает создание и отображение на экране основного окна – рамки приложения.

5. Затем вызывается метод СWinApp::Run базового класса, который принимает сооб щения, поступающие к приложению, и распределяет между рабочими окнами.

6. Конструктор CMyFrame вызывает функцию Create базового класса CFrameWnd для создания оконной структуры и связывает ее с оконным указателем того же класса. Функции ShowWindows и UpdateWindows базового класса вызываются для вывода окна на экран.

7. Обработчик OnLButtonDown увязан с событием от нажатия левой клавиши мыши с помощью карты сообщений, определяемой макросом DECLARE_MESSAGE_MAP() в классе CMyFrame, при этом элементу карты ОN_WM_LBUTTONDOWN() ставиться в соответствие прототип функции afx_msg void OnLButtonDown(UINT nFlags,CPoint point). Обработчик с помо щью макроса TRACE выводит сообщение в отладочное окно.

8. Обработчик OnPaint увязывается той же картой с сообщением о перерисовке окна главной рамки, которое возникает в начале работы программы, при изменении размеров окна и при обновлении всего окна или его части. На экран с координатами (0,0) выдается текст с помо щью функции TextOut графического интерфейса GDI библиотеки MFC.

9. Приложение завершает работу при закрытии его основного окна, что вызывает раз рушение объекта класса CMyFrame, выход из рабочего цикла Run, выход из главной функции WinMain и разрушение объекта класса CMyApp.

_Создание исполняемого файла *.ЕХЕ или динамически загружаемой библиотеки *.DLL требует построения проекта как системы взаимосвязанных исходных файлов для компи лятора программного кода, компилятора ресурсов, компоновщика или редактора связей, а также для построителя справочной системы. Для этих целей часто используют сборочные файлы *.МАК, которые отражают все взаимосвязи между исхоными, промежуточными и выходными файлами. Программа Мake program, управляющая сборкой проекта, считывает файл *.МАК, а затем так настраивает компилятор С/С++, ассемблер, компоновщик и компилятор ресурсов, что бы получить на выходе исполняемый файл *.ЕХЕ или *.DLL.

Студия разработчика при открытии файла *.МАК создает двоичный файл, который дублирует содержание текстового файла, а также сохраняет параметры среды программирова ния. Этот файл имеет расширение *.MDP.

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

а) служебные файлы проекта:

App.dsw - файл рабочей области для объединения сведений о нескольких проектах;

App.opt - файл опций пользователя для рабочей области;

App.dsp - файл проекта;

App.clw - файл с информацией о классах проекта;

App.odl - файл с описанием типов объектов;

App.ncb – файл синтаксического анализа;

Readme.txt - файл с описанием файлов проекта;

б) программные файлы *.h и *.cpp с именами Арр, AppDlg, AppDoc, AppView, AppCtl, AppPpg, AppSet, MainFrm, ChildFrm и др.;

в) предкомпилированные файлы: StdAfx.h, StdAfx.cpp, StdAfx.obj, App.pch;

г) файлы ресурсов проекта:

Арр.rc - файл всех ресурсов проекта;

Resource.h - заголовочный файл для ресурсов;

…Res\App.rc2 - дополнительный файл для ресурсов, используемых в нескольких проектах;

App.def - файл определения модуля;

…Res\App.ico - файл с иконкой проекта;

…Res\oolBar.bmp - файл для кнопок инструментальной панели;

д) справочные файлы для проекта:

MakeHelp.bat - файл для создания справочного файла App.hlp;

App.hpj - проектный файл для компилятора справочного файла;

App.rtf - справочный файл в формате RTF;

App.cnt - файл с содержанием для справочного файла;

е) другие файлы:

App.plg, Vc50.idb, Vc50.pdb, Print.rtf, Bullet.bmp, App.lic, App.red (для OLE), IToolbar.bmp и др.

Задание №1.

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

1. Открыть новый файл под именем МуАрр.h с помощью команды File/ New/ File/ C/C++ Header Files.

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

3. Открыть новый файл под именем МуАрр.срр с помощью команды File/ New/ File/ C++ Source Files.

4. Набрать для него исходный код и сохранить в том же рабочем каталоге.

5. Создать новый проект с помощью команды File/ New/ Project/ Win32 Application/ Finish или ОК, задав ему имя МуАрр.

6. Включить в проект файлы MyApp.h и MyApp.cpp с помощью команды Project/ Add to Project/ Files, отметив их в открывшемся диалоговом окне и нажав кнопку ОК.

7. Просмотреть в окне проекта включенные файлы, производные классы и ресурсы проекта.

8. С помощью команды Project/ Settings/ Вкладка General установить тип используе мых библиотек Uses MFC in a Shared DLL.

9. Создать исполняемый файл проекта с помощью команды Build/ Build MyApp.exe.

10. Запустить полученное приложение на работу командой Build/ Execute MyApp.exe и проверить его функциональное поведение.

11. Объяснить, почему не обрабатывается сообщение при нажатии левой клавиши мыши.

Задание №2.

Исполнить полученный исполняемый файл в отладочном режиме, выполнив следую щие действия:

1. Запустить программу в отладочном режиме Build/ Start Debug/ Go.

2. Проанализировать содержимое окна вывода.

3. На окне приложения щелкнуть левой клавишей мыши и найти выдаваемое при этом приложением сообщение в окне вывода Output.

4. Перемещая курсор по окну приложения, щелкать левой клавишей мыши и наблю дать выдачу очередных сообщений в окне вывода.

5. Включить в исходный текст МуАрр.срр несколько точек прерывания и исполнить команду Build/ Debug/ Go.

6. Убедиться, что элемент меню Build заменен пунктом Debug.

7. Используя клавишу F10 или элемент меню Debug/ Step Over, выполнить пошаговую отладку приложения.

8. Исполнить команду Debug/ Stop Debugging и убедиться, что элемент Debug заменен пунктом Build.

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

Задание №3.

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

Задание №4.

Ознакомиться с командами главного меню, панели инструментов и окнами студии разработчика Visual C++, уяснив при этом следующие свойства и возможности:

1. Изменение элементов главного меню в процессе работы над проектом приложения.

2. Наличие следующих окон документов:

a) окно проекта Project Workspace для просмотра классов проекта, его ресурсов и файлов;

b) окно вывода Output, в которое направляются сообщения от инструментальных средств: компилятора, отладчика и др.;

c) окно просмотра информации Info Viewer Topic при работе с электронной доку ментацией;

d) окна, используемые при отладке: Watch, Variables, Register, Memory, Call Stack и Disassembly.

3. Два состояния многих окон: плавающее состояние, когда они легко переносятся в любое место окна студии разработчика;

стыковочное состояние, когда окно присоединяется к какой-либо стороне окна студии.

1. Наличие устанавливаемых и удаляемых пользователем панелей инструментов:

Standard, Project, Resource, Edit, Debug, Browse, InfoViewer, InfoViewer Contents, File, Insert, Build, Tools, Layout, Windows, H_elp и др.

Задание №5.Найти в каталогах программу на Си под Windows и создайте исполняемый файл в среде Visual C++.

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

1. Перечислите все компоненты Visual C++ и выясните, какие из них установлены в сту дии разработчика данного компьютера. Охарактеризуйте две системы программирования, под держиваемые Visual C++. Назовите основные классы и методы приложения, построенного на ба зе каркаса приложений. Опишите работу такого приложения.

2. Напишите строки исходного кода для обработки сообщения ОN_WM_LBUTTONDOWN.

3. Найдите описание указателя m_pMainWnd.

4. Перечислите основные методы класса CWinApp и укажите, какие из них являются вир туальными.

5. Перечислите основные методы класса CFrameWnd и укажите, какие из них являются виртуальными.

6. Найдите в исходных кодах Visual C++ определения макросов DE CLARE_MESSAGE_MAP(), BEGIN_MESSAGE_MAP(…,…), END_MESSAGE_MAP().

7. Объясните, почему в библиотеке MFC обработчики сообщений о событиях не являются виртуальными, вспомнив, что число производных от CWin классов около 20, что число обраба тываемых сообщений в Windows более 140 и что в таблице диспетчеризации виртуальных функ ций требуется включать на каждую такую функцию 4 байта.

8. Объясните назначение карты сообщений MessageMap.

9. Объясните как имя сообщения Windows, например WM_LBUTTONDOWN, связано с именем соответствующего элемента в карте сообщений и с именем функции-обработчика этого сообщения.

10. Какие 4 фрагмента кода надо написать и куда их включить для создания собственного обработчика сообщения нового класса–потомка CWnd?

11. Назовите 3 способа включения трассировки программы.

12. Назовите 2 способа изменения состояния окон из стыковочного в плавающее и обрат но.

Лабораторная работа №6 DLL библиотеки в Windows. Создание DLL Цель работы: изучение структуры остова приложения, создаваемого автоматически на ба зебиблиотеки классов MFC, и овладение приемами его построения, просмотра и отладки.

Остов приложения создается в диалоге с пользователем инструментальным средством AppWizard визуальной среды проектирования Visual C++, называемом мастером приложений.

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

Задание №1. Создать остов приложения основанного на диалоге, выполнив следующие действия:

1. Создать новый проект с помощью команды File/ New/ Project, в появившемся диало говом окне New выбрать тип проекта MFC AppWizard(exe), после чего в работу включается AppWizard. Заметим, что библиотеку MFC используют также следующие другие типы проектов:

MFC AppWizard(dll), MFC ActiveX ControlWizard, New Database Wizard,ISAPI Extension Wizard, Custom AppWizard и другие.

2. В поле Project names задать имя проекта - DBI (Dialog Based Interfase).

3. В поле просмотра каталогов Location выбрать корневой каталог для проекта, в кото ром AppWizard автоматически создаст каталог проекта с именем DBI, так что это имя одновре менно будет и именем проекта, и именем каталога.

4. Установить переключатель Create new workspace, чтобы инициализировать создание новой рабочей области.

5. Проверить в окне Platforms, что указана платформа по умолчанию Win32, так как другие значения требуют установки Visual C++ для соответствующей кросс платформы.

6. Щелкнуть по кнопке OK.

7. Мастер AppWizard делает первый шаг, предлагая выбрать тип интерфейса приложе ния:

• Single document - одно-документный интерфейс;

• Multiple documents - многодокументный интерфейс;

• Dialog ba3sed - интерфейс, основанный на диалоговом окне.

Выбрать тип интерфейса приложения Dialog based и щелкнуть по кнопке Next.

8. Мастер AppWizard делает второй шаг, предлагая выбрать следующие свойства:

• About box - включает окно About с информацией о версии приложения;

• Context-sensitive Help - добавляет кнопку помощи Help и создает три файла:

DBI.rtf - для справочной информации;

DBI.hpj - файл проекта справочной системы;

DBI.bat - командный файл для построения файла DBI.hlp;

• 3D controls - добавляет трехмерное оформление элементов управления;

• Automation - делает приложение OLE сервером (программируемым);

• ActiveX controls - делает приложение контроллером автоматизации;

• Windows sockets - создает сетевое приложение;

• Please enter a title for your dialog - позволяет ввести заголовок диалогового окна, от личный от имени проекта.

Выбрать свойство 3D, задать имя окна DBI Dialog и щелкнуть по кнопке Next.

9. Мастер AppWizard делает третий шаг, предлагая установить следующие опции:

• Would you like to generate source file comments? - определяет добавлять или нет, ком ментарии todo для указания точек вставки собственного исходного кода и создавать ли файл Readme.txt, где дается кратная информация по всем файлам проекта;

• How would you like to use the MFC library? - определяет способ подключения MFC библиотеки: статический или динамический.

Включит опцию генерации комментариев, и выбрать динамический способ подклю чения MFC-библиотеки, как наиболее перспективный. Щелкнуть по кнопке Next.

10. Мастер AppWizard переходит к последнему, четвертому шагу, где он выдает диа логовую панель с информацией об создаваемых классах, предках данных классов и расположе ние их в проекте. Щелкнуть по кнопке Finish и в каталоге DBI познакомиться со всеми автомати чески созданными каталогами и файлами, а также оцените размеры файлов.

Задание №2. Создать остов приложения с одно-документным интерфейсом, выполнив следующие действия:

1. Исполнить команду File/ New и выбрать тип проекта MFC AppWizard(exe).

2. В поле Project names задать имя проекта - SDI (Single Document Interfase).

3. В поле просмотра каталогов Location с помощью окна Browse задать каталог разме щения проекта SDI.

4. Установить переключатель Create new workspace.

5. Щелкнуть по кнопке OK.

6. Выбрать интерфейс приложения Single document и завершить первый шаг работы мастера AppWizard, щелкнув по кнопке Next.

• Н0 втором шаге можно задать поддержку работы с базами данных: нет поддержи вать, только главные файлы, вид базы данный без поддержки файла или вид базы данный с под держкой файла. На третьем шаге для приложения можно задать поддержку работы с OLE объектами: не поддерживать, контейнер, мини-сервер, сервер, одновременно контейнер и сервер.

На четвертом шаге можно задать следующие опции создаваемого остова приложения: Dockig toolbar добавляет панель инструментов с минимальным набором функциональных кнопок;

• Initial status bar – добавляет строку состояния с индикаторами специальных клавиш;


• Printing and print preview - добавляет элементы меню для просмотра, установки пара метров и печати документов;

• Context-sensitive help - добавляет элементы меню помощи Help и создает три файла для создания контекстно–зависимой помощи: SDI.rtf, SDI.hpj,SDI.bat;

• 3D controls - задает трехмерное оформление элементов управления;

• Windows sockets - обеспечивает создание сетевого приложения;

• MAPI - позволяет написать приложение для получения, передачи и управления со общениями, приходящими по электронной почте;

• …Recent File List – устанавливает число файлов, сохраняемых в списке самых по следних использованных файлов;

• Advanced/ Document Template Strings - позволяет модифицировать имена файлов и расширений, связанных с приложением, а также задавать заголовок главного окна;

• Advanced/Windows Styles-позволяет установить параметры окон: разделение окон (Use Split Window), включение системного меню (System menu), толщину рамки (Thick frame) и размеры окна (Minimize box, Minimized, Maximize box, Maximized).

10. Шаги 5 и 6 аналогичны шагам 3 и 4 при создании проекта приложения, основанно го на диалоге.

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

Задание №3. Создать остов приложения с многодокументным интерфейсом, выполнив действия 2-го задания со следующими изменениями:

1. На первом шаге в поле Project name задать имя проекта - MDI (Multiple Document Interfase)(см. пункт 2).

2. В пункте 6 выбрать интерфейс приложения Multiple Documents.

3. Оценить изменения в составе файлов проекта.

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

1. Закрыть текущую рабочую область с помощью команды File/ Close Workspace.

2. Открыть требуемый проект при помощи команды File/ Open Workspace с после дующей установкой пути доступа к файлу DBI.dsw, затем SDI.dsw и MDI.dsw.

3. На экране появляется окно рабочей области проекта Workspace, в котором находит ся папка требуемого проекта. Если окно не видимо, следует выполнить команду View/ Workspace.

4. Под окном проекта по очереди выбирайте кнопки и познакомьтесь со структурами классов, ресурсов и исходных файлов проекта, а также с электронной документацией по Visual C++.

5. Откройте папку с классами проекта и в полученном дереве классов проекта позна комьтесь с методами и переменными классов, а также с глобальными переменными, раскрывая соответствующие узлы с помощью щелчка на знаке “+”. Обратите внимание на значки у методов и переменных, которые определяют спецификаторы доступа: private, protected и public.

6. Выбрать класс на дереве классов и дважды щелкнуть по имени класса, что обеспе чит открытие окна документа с заголовочным файлом данного класса.

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

8. Повторить пункт 7 для переменной класса и для глобальной переменной.

9. Выбрать метод или переменную класса и щелкнуть правой клавишей, после чего сделать переход на определение метода или на список ссылок соответственно для метода и для переменной. Установить и убрать точку прерывания для метода. Для построения списков ссылок Visual C++ создает файл ссылок с расширением *.bsc (browse file).

10. Выбрать имя класса и щелкнуть правой клавишей, что вызывает появление кон текстного меню с командами Add Member Variable (добавить переменную) и Add Member Function (доба вить метод).

Используя эти команды, добавить переменные и функции для выбранного класса, посмот реть их в файлах *.h и *.cpp, а затем удалить их из класса.

11. Сделать добавление этих переменных и функций непосредственно в файлах *.h и *.cpp и убедиться, что появляются в дереве классов проекта.

Задание №5. Просмотреть ресурсы проекта, выполнив следующие действия:

1. Открыть в окне проекта папку с ресурсами.

2. Открыть папку ресурсов.

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

4. Произвести некоторые изменения в ресурсе, а затем восстановить ресурс в исход ное состояние.

5. С помощью команды Insert в главном или контекстном меню добавить, а затем уда лить какой-либо ресурс. Контекстное меню вызывается щелчком правой кнопки мыши по имени ресурса.

Задание №6. Просмотреть все файлы проекта, выполнив следующие действия:

1. Открыть в окне проекта папку с файлами.

2. Открыть папку файлов.

3. Выбрать требуемый файл, дважды щелкнуть левой клавишей и выполнить редакти рование, а затем его отменить.

4. Выбрать новый файл и нажать правую клавишу, что открывает контекстное меню со следующими командами:

• Open - открывает любой другой файл;

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

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

Задание №7. Познакомиться с электронной документацией среды Visual C++, выпол нив следующие действия:

1. Открыть перечень книг документов Visual C+_+.Открывая поочередно все книги, построить полное дерево документации, в котором не раскрываемыми узлами являются те мы.Выбрать тему и дважды щелкнуть по ней, что приводит к выводу темы в окно просмот ра.Найти тему с описанием интерфейсов приложений и познакомиться с ней.Внимательно изу чить структуру электронной документации и убедиться в её наличии.Синхронизировать окно просмотра темы с окном просмотра структуры документации, нажав клавиши Ctrl+S или щелк нув по левой кнопки панели инструментов категории Help. Синхронизация пзволяет узнать, к ка кой книге относится просматриваемая тема.

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

3. Найти информацию по индексу ключевому термину, выполнив команду Search в меню Help или контекстном меню (Ctrl+F) и задав ключевой термин. При удачном поиске выда ется список тем и книг, в которые входит этот термин, при неудачном - ближайший контекст, ко торый позволит уточнить термин.

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

5. Получить контекстную справку по выбранному термину темы, выделив этот термин и нажав клавишу F1.

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

7. Распечатать необходимые темы, используя команду Print Topic контекстного меню или команду Print меню File.

8. Сделать закладки в электронной документации для изучаемых тем, используя кноп ки категории Help.

9. Найти необходимые сведения по запросу, выполнив команду Search/ Guery и задав запрос в виде одной строки или нескольких строк в апострофах, соединенных логическими связ ками And и Or.

10. Используя кнопки категории Help, познакомиться со списком открывавшихся при работе тем, которые сохраняются в History List, а также с результатом последнего запроса в Guery Results.

11. Уменьшить область поиска, установив подмножество книг поиска с помощью ко манды Help/ Define Subset.

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

Задание №8. Скомпилировать и запустить на исполнение полученные основы прило жений, выполнив следующие действия:

1. Открыть требуемый проект: DBI.dsw, SDI.dsw или MDI.dsw.

2. На панели инструментов справа установить вид сборки проекта - Win32 Release (коммерческий или производственный режим). Установить вид сборки можно либо командой Project/ Settings окно Settings For или командой Build/ Set Active Configuration.

3. Создать исполняемый файл проекта, выполнив команду Build/ Build DBI (exe) и проследив за процессом создания файла, состоящим из нескольких этапов.

4. Оценить размеры исполняемого файла DBI.exe и выяснить, какие файлы получены в результате сборки проекта.

5. Запустить остов приложения DBI.exe на исполнение с помощью команды Build/ Execute DBI.exe.

6. Изучить функциональное поведение остова приложения DBI.

7. Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI.

Отметить разницу в их поведении.

Задание №9. Скомпилировать все полученные остовы приложений для отладочного режима и произвести их трассировку, выполнив следующие действия:

1. Открыть требуемый проект: DBI.dsw, SDI.dsw и MDI.dsw.

2. Установить вид сборки проекта-Win32 Debug(отладочный режим).

3. Создать исполняемый файл для отладочного режима, выполнив команду Build/ Build DBI(exe).

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

5. Оценить влияние переключателя Settings/ Generate Browse Info на размеры созда ваемых при компоновке файлов.

6. Перейти в отладочный режим с помощью команды Build/ Debug, которая заменяет элемент Build главного меню на элемент Debug.

7. Произвести отладку остова приложения DBI, используя следующие отладочные ко манды:

• Go(F5) - запуск или продолжение выполнения программы;

• Restart - перезапуск программы;

• Stop Debugging (Shift+F5) - останов отладки;

• Insert/Remove Breakpoint - вставка или удаление точки прерывания;


• Enable Breakpoint - включает или выключает точку прерывания;

• Step Info (F11) - пошаговая отладка с пошаговым выполнением функций;

• Step Over (F10) - пошаговая отладка с пошаговым выполнением функций за один шаг;

• Step Out (Shift+F11) - выход из функции за один шаг;

• Run to Cursor (Ctrl+F10) - выполнение до точки заданной курсором;

• Guick Watch (Shift+F9) - непосредственное вычисление значений переменных и вы ражений;

8. Для отладочного и для рабочего режимов, сравните значения следующих парамет ров: Sourse code debugging, MFS diagnostic macros, Library linkage и Compiler opzimization.

9. Убедиться, что в основе приложения DBI находится диагностические макросы TRACE, ASSERT и VERIFY и включить трассировку программы, вставив в ее текст оператор afxtrace=TRUE или включить оператор Trace Enabled=1 в раздел [Diagnostics] файла AFX.INI, расположенного в подкаталоге Windows.

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

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

11. Повторить все выше перечисленные действия для остова SDI, а затем и для остова MDI.

12. Выяснить назначения в программах файлов StdAfx.h и StdAfx.cpp, а также ключей компилятора /Yx,/Yu,/Yc и /Yp. Обеспечить для трех остовов приложений использование одного предкомпилированного заголовочного файла ALL.pch.

13. В конце занятий необходимо файлы *.pch удалять из-за их огромных размеров (по рядка 4 Мб).

14. Оценить скорость компиляции при наличии файла *.pch и при его отсутствии.

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

1. Перечислите все типы проектов и укажите, какие из них ориентированы на исполь зование библиотеки MFC.

2. Укажите путь для каталога, в котором AppWizard по умолчанию создает каталоги проектов.

3. Перечислите подкаталоги, которые автоматически создает AppWizard в каталоге проекта.

4. Назовите платформу, используемую AppWizard по умолчанию.

5. Перечислите все типы интерфейсов приложений и укажите области их применения.

6. Какую опцию следует задать для включения диалогового окна с информацией о вер сии приложения? Как изменить или дополнить это окно?

7. Как задать управляющим элементам приложения трехмерную форму?

8. Как для приложения создать и включить справочный файл?

4. Учебно-методическое обеспечение 4.1. Рекомендуемая литература:

Основная 1. Побегайло А.П.;

Системное программирование в Windows[Текст] Учебник для вузов БХВ-Петербург, 2008 г.

2. Рихтер Д. CLR via C# [Текст] Учебник Microsoft Press, 2009 г.

3. Русинович М., Соломон Д. Внутреннее устройство Microsoft Winows[Текст] Учебник С Пб:Питер, 2008 г.

4. Харт Джонсон М. Системное программирование в среде Windows [Текст]: Учебник для вузов Вильямс, 2008 г.

5. Арт Фридман, Ларс Кландер, Марк Михаэлис, Херб Шильдт С/С++ Алгоритмы и приемы программирования», под ред. В. Тимофеева [Текст]: Учебник М.: БИНОМ, 2008 г.

Дополнительная 6. А. В. Гордеев, А. Ю. Молчанов Системное программное обеспечение [Текст]: Учебник для ВУЗов, СПб.: Питер, 2003г.

7. Касаткин А.И. Профессиональное программирование на языке С. Системное программи рование [Текст]: Учебник, Минск, Высшая школа, 1993г.

8. С. А. Гладков, Г. В. Фролов Программирование в Microsoft Windows [Текст]: Учебник М., Диалог-МИФИ, 1992г. в 2 томах.

9. Л. М. Романовская, Т. В. Русс, С. Г. Свитковский Программирование в среде Си для ПЭВМ ЕС [Текст]: Учебник, М., ФиС, 1991г.

10. Р. Джордейн “Справочник программиста персональных компьютеров типа IBM PC [Текст]: Учебник М., ФиС, 1991г.

11. Р. Хантер Проектирование и конструирование компиляторов. [Текст]: Учебник М., Мир.

12. Т. Пратт “Языки программирования. Разработка и реализация. [Текст]: Учебник М., Мир, 1979.

13. И. В. К.Софт. Язык Си для профессионалов. [Текст]: Учебник М.: 1991.

4.2. Методические рекомендации (материалы) для преподавателя В процессе обучения студентов значительная часть материала изучается студентами само стоятельно. Поэтому на лекциях рассматриваются в основном следующие вопросы:

- основные понятия и определения;

- принципы, методы и подходы, их преимущества и недостатки;

- разновидности устройств, интерфейсов (частично).

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

4.3. Методические указания для студентов 4.3.1. Рекомендации по самостоятельному чтению литературы Часы, отведенные на самостоятельную работу студента, представляют собой вид занятий, которые каждый студент организует и планирует сам. Однако, желательно следовать проверен ным временем рекомендациям, перечисленным ниже.

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

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

Необходимо сначала повторить материал по конспекту, отмечая непонятные или пропу щенные места. Это поможет восполнить такие пробелы по учебникам.

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

После пособия следует продолжить изучение с наиболее доступного из предложенных учебников [1,2,6]. При отсутствии в нем материала по разделу или неясностях восполняйте не достаток информации по другой доступной литературе или электронным источникам. Много та кой информации содержится в интернете.

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

Самостоятельное углубленное изучение отдельных вопросов курса является необходимым элементом подготовки магистров. Оно позволяет собрать материал для обязательной публика ции. Направления исследований для публикации определяется совместно с ведущим преподава телем.

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

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

4.4. Методические указания по выполнению контрольных работ Контрольная работа предусматривает письменные ответы на 8 вопросов - по одному во просу на каждый из 8 разделов дисциплины.

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

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

Ответ на вопрос должен занимать, как правило, не менее страницы и не более 5 стра ниц.

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

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

- из раздела 1 – вопрос № 4;

- из раздела 2 – вопрос № 5;

-… - из раздела 8 – вопрос № 1.

Таблица.

Номера вопросов контрольной работы Номер последней цифры шифра Глава 0 1 2 4 5 6 7 8 1 1 2 3 5 6 7 8 9 2 2 3 4 6 7 8 9 10 3 3 4 5 7 8 9 10 1 4 4 5 6 8 9 10 1 2 5 5 6 7 9 10 1 2 3 6 6 7 8 10 1 2 3 4 7 7 8 9 1 2 3 4 5 8 8 9 10 2 3 4 5 6 ВОПРОСЫ к контрольной работе по дисциплине «Операционные системы»

1. Основные понятия операционных систем 1. Объясните, в чём заключается различие между такими понятиями, как процесс и задача.

2. Изобразите диаграмму состояний процесса, поясните все возможные переходы из одного со стояния в другое.

3. Объясните значения следующих терминов: task (задача), process (процесс), hread (поток, нить). Как они между собой соотносятся?

4. Для чего каждая задача получает соответствующий дескриптор? Какие поля, как правило, со держатся в дескрипторе процесса (задачи)? Что такое «контекст задачи»?

5. Объясните понятие ресурса. Почему понятие ресурса является одним из фундаменталь ных при рассмотрении ОС? Какие виды и типы ресурсов вы знаете?

6. Как вы считаете: сколько и каких списков дескрипторов задач может быть в системе? От че го должно зависеть это число?

7. Перечислите дисциплины обслуживания прерываний;

объясните, как можно реализовать ка ждую из этих дисциплин.

8. С какой целью в ОС вводится специальный системный модуль, иногда называемый суперви зором прерываний?

9. В чём заключается различие между повторно-входимыми (re-entrance) и повторно прерываемыми (re-enterable) программными модулями? Как они реализуются?

10. Что такое привилегированный программный модуль? Почему нельзя создать мультипро граммную ОС, в которой бы не было привилегированных программных модулей?

2. Управление задачами и памятью в операционных системах 1. Какие дисциплины диспетчеризации задач вы знаете? Опишите их.

2. Что такое «гарантия обслуживания»? Как её можно реализовать?

3. Сравните механизмы диспетчеризации задач в ОС Windows NT и OS/2. В чём заключаются основные различия?

4. Опишите механизм динамической диспетчеризации, реализованный в UNIX- системах.

5. Что такое «виртуальный адрес», «виртуальное адресное пространство»? Чем (в общем слу чае) определяется максимально возможный объём виртуального адресного пространства про граммы?

6. Что такое «фрагментация памяти»? Какой метод распределения памяти позволяет добиться минимальной фрагментации?

7. Что такое «уплотнение памяти»? Когда оно применяется?

8. Объясните сегментный способ организации виртуальной памяти. Что представляет собой (в общем случае) дескриптор сегмента?

9. Сравните сегментный и страничный способы организации виртуальной памяти. Перечислите достоинства и недостатки каждого.

10. Какие дисциплины применяются для решения задачи замещения страниц? Какие из них яв ляются наиболее эффективными и как они реализуются?

3. Особенности архитектуры микропроцессоров i80x86 для организации муль типрограммных операционных систем 1. Как в реальном режиме работы микропроцессоров i80x86 осуществляется преобразование виртуального адреса в физический?

2. Какие механизмы виртуальной памяти используются в защищённом режиме работы микро процессоров i80x86?

3. Для чего в микропроцессоры i80x86 введен регистр-указатель задачи TR? Какой он разрядно сти?

4. Как в микропроцессорах i80x86 реализована поддержка сегментного способа организации виртуальной памяти?

5. Что такое «уровень привилегий»? Сколько уровней привилегий имеется в микропроцессорах i80x86? Для каких целей введено такое количество уровней привилегий?

6. Объясните правила работы с уровнями привилегий для различных типов сегментов.

7. Поясните механизм шлюзования: для чего он предназначен, как осуществляется передача управления на сегменты кода с другими уровнями привилегий.

8. В чём заключаются основные принципиальные отличия работы системы прерываний микро процессоров i80x86 в защищённом режиме по сравнению с реальным режимом?

9. Как осуществляется переход на программу обработки прерываний, если дескриптор прерыва ний является коммутатором прерываний?

10. Как осуществляется переход на программу обработки прерываний, если дескриптор прерыва ний является коммутатором перехвата?

4. Управление вводом/выводом и файловые системы 1. Почему создание подсистемы ввода/вывода считается одной из самых сложных областей проектирования операционных систем?

2. Почему операции ввода/вывода в ОС объявляются привилегированными?

3. Перечислите основные задачи, возлагаемые на супервизор ввода/вывода.

4. Опишите режимы управления вводом/выводом.

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

6. Что такое синхронный и асинхронный ввод/вывод?

7. Опишите кэширование операций ввода/вывода при работе с накопителями на магнитных дисках.

8. Что такое «файловая система»? Что обеспечивает использование той или иной файловой сис темы? Какие файловые системы, используемые в ОС и ПК, вы знаете?

9. Что означает «журналирование» файловых операций? Что это даёт?

10. Опишите правила, которые определяют состояние прав доступа при перемещении или копи ровании объектов, если используется NTFS.

5. Архитектура операционных систем и интерфейсы прикладного программи рования 1. Перечислите и поясните основные принципы построения операционных систем.

2. Опишите принцип совместимости ОС.

3. Опишите понятие мобильности ОС.

4. Опишите особенности микроядерных ОС. Какие основные функции должно выполнять мик роядро ОС?

5. Перечислите основные требования, предъявляемые к операционным системам реального времени.

6. Опишите особенности монолитных ОС.

7. Какие задачи возлагаются на интерфейс прикладного программирования (API)?

8. Какими могут быть варианты реализации API? В чем заключаются достоинства и недостатки каждого варианта?

9. Что такое библиотека времени выполнения (RTL)?

10. Что такое POSIX? Какими преимуществами обладают программы, созданные с использова нием только стандартных функций, предусмотренных POSIX?

6. Проектирование параллельных взаимодействующих вычислительных про цессов 1. Какие последовательные вычислительные процессы называют параллельными и почему? Ка кие параллельные процессы называют независимыми, а какие – взаимодействующими?

2. Опишите алгоритм Деккера, позволяющий разрешить проблему взаимного исключения пу тём использования одной только блокировки памяти.

3. Опишите работу семафоров Дейкстры. Чем обеспечивается взаимное исключение при выпол нении Р- и V-примитивов?

4. Опишите, как могут быть реализованы семафорные примитивы для мультипроцессорной сис темы.

5. Что такое мьютекс (mutex)?

6. Опишите алгоритм решения задачи «поставщик – потребитель» при использовании семафо ров Дейкстры.

7. Опишите алгоритм решения задачи «читатели – писатели» при использовании семафоров Дейкстры.

8. Что такое «монитор Хоара»? Приведите пример такого монитора.

9. Что представляют собой «конвейеры» (программные каналы)?

10. Что представляют собой «очереди сообщений»? Чем отличаются очереди сообщений от поч товых ящиков?

7. Проблема тупиков и методы борьбы с ними 1. Что такое тупиковое состояние? Перечислите условия, при которых возникает тупик.

2. Что является причиной возникновения тупиков на SR–pecypcax?

3. Приведите пример графа повторно используемых ресурсов.

4. Что такое маркировка сети Петри? Что представляет собой пространство возможных состоя ний сети Петри?

5. Приведите пример графического представления сети Петри.

6. Что представляет собой «предотвращение тупика»? Как его можно реализовать?

7. Что представляет собой «обход тупика»? Приведите алгоритм банкира Дейкстры.

8. Что такое «опасное состояние»? Приведите пример опасного состояния на модели состояний системы.

9. Опишите метод обнаружения тупика посредством редукции графа повторно-используемых ресурсов.

10. Опишите алгоритм обнаружения тупика по наличию замкнутой цепочки запросов.

8. Особенности отдельных операционных систем 1. Опишите основные архитектурные особенности ОС UNIX.

2. Перечислите и поясните основные понятия системы UNIX.

3. Каким образом осуществляется в UNIX запуск новой задачи?

4. Опишите основные моменты, связанные с защитой файлов в UNIX.

5. Опишите особенности семафоров в UNIX. Зачем в семафорных операциях действия осущест вляются сразу над множеством семафоров?

6. Что представляет собой вызов удаленной процедуры (RPC)?

7. Какие механизмы использует OS/2, чтобы уменьшить потребности в оперативной памяти и увеличить производительность системы?

8. Почему про QNX говорят «сетевая» ОС? Что такое сетевой протокол FLEET?

9. Какие функции реализует ядро QNX?

10. Опишите основные механизмы, которые имеются в QNX для организации распределённых вычислений 5. Материально-техническое обеспечение дисциплины 5.1. Учебно-лабораторное оборудование Для проведения лабораторного практикума предназначены персональные компьютеры, объеди ненные в локальную сеть и подключенные к Internet. Для проведения лабораторного практикума предназначены персональные компьютеры, объединенные в локальную сеть и подключенные к Internet. Практикум проводится в специализированной аудитории. Ресурсы компьютера, требуе мые для работы:

Celeron 1,2 ГГц и выше, оперативная память 1 Гб, жесткий диск 80 Гб, оснащение системного блока DWD-ROM, USB – портом.

5.2. Программные средства, используемые в лабораторных работах Выполнение лабораторных работ предусматривает использование следующих программ ных средств:

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

• Операционная система Windows;

• Microsoft Office 2003;

• С/С++;

• диагностико-тестирующие средства: SiSoftSandra, Check-It, Fix-It, Norton Utility, MemDefrag, MemTurbo, Twik-Me.

6. Программное обеспечение использования современных информационно коммуникационных технологий Программное обеспечение, применяемое в лабораторном практикуме, указано в п. 5.2.

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

Поволжский государственный университет сервиса Технологическая карта дисциплины Системное программное обеспечение кафедра «Информационный и электронный сервис», преподаватель Воловач В.И., группа СВ-401, семестр 8 2012 – 2013 уч.года К Срок прохождения контрольных точек Количест Кол- сентябрь октябрь ноябрь декабрь Зачетно во баллов во экзамена Виды контрольных точек за 1 кон кон- Итого ционная трольную троль 9 сессия точку ных 1 2 3 4 5 6 7 8 9 10 11 12 13 14 точек 1. Обязательные:



Pages:     | 1 | 2 || 4 |
 





 
© 2013 www.libed.ru - «Бесплатная библиотека научно-практических конференций»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.