- •Учебно-методический комплекс дисциплины «Системное программирование»
- •Алматы, 2016
- •Опись содержания учебно-методического комплекса дисциплины
- •1. Цели и задачи дисциплины.
- •2. Содержание дисциплины
- •2.1.Лекционный курс
- •2.3. Лабораторные занятия
- •2.4. Самостоятельная работа студентов под руководством преподавателя
- •2.5. Самостоятельная работа студентов
- •3. Учебно-методические материалы по дисциплине
- •3.1.Список рекомендуемой литературы
- •3.2. Вопросы для подготовки к экзамену
- •1. Информация о дисциплине
- •2. Краткое описание дисциплины
- •4. Литература для изучения
- •5. Критерии оценки
- •Карта учебно-методической обеспеченности
- •Тезисы лекций
- •Лекция 2. Базовые конструкции структурного программирования
- •Лекция 3. Указатели и массивы
- •Лекция 4. Типы данных, определяемые пользователем
- •Лекция 5. Модульное программирование
- •Лекция 6. Объектно-ориентированное программирование
- •Лекция 7. Операционные системы и их интерфейсы
- •Лекция 8. Управление потоками и процессами
- •Лекция 9. Синхронизация потоков и процессов
- •Лекция 10. Обмен данными между параллельными процессами
- •Лекция 11. Структурная обработка исключений
- •Лекция 12. Работа с виртуальной памятью
- •Лекция 13. Динамически подключаемые библиотеки
- •Планы семинарских, практических, лабораторных и студийных занятий
- •4.1. Индивидуальное задание:
- •4.2. Описание метода решения
- •4.3. Описание логической структуры
- •4.4. Данные для тестирования
- •4.5. Текст программы
- •5.1. Описание методов решения
- •5.1.1. Представление в памяти
- •5.1.2. Модульная структура программного изделия
- •5.2. Описание логической структуры
- •5.2.1. Общие переменные
- •5.3. Программа пользователя
- •5.4. Тексты программных модулей
- •5.5. Варианты.
- •5. Варианты индивидуальных заданий
- •6. Пример решения задачи
- •6.1. Индивидуальное задание:
- •6.2. Описание методов решения
- •6.3. Описание логической структуры
- •6.4. Текст программы
- •5.1. Структура данных программы
- •5.2. Структура программы
- •5.3. Описание переменных
- •5.4. Описание алгоритма программы
- •5.5. Текст программы
- •5.6. Результаты работы программы
- •5.1. Индивидуальное задание.
- •5.2. Разработка алгоритма
- •5.3. Текст программы
- •5.4. Результаты работы программы
- •4. Порядок выполнения
- •5. Индивидуальные задания
- •6. Пример решения задачи
- •6.3. Индивидуальное задание.
- •6.4. Разработка алгоритма решения
- •6.4.1. Структура программы
- •6.5. Текст программы
- •6.6. Результаты работы программы
- •4. Порядок выполнения
- •5. Пример решения задачи
- •5.1. Индивидуальное задание.
- •5.4. Разработка алгоритм решения
- •5.5. Текст программы
- •5.6. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.2. Текст программы
- •5.3. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.1.1. Структура программы
- •5.1.2. Описание переменных
- •5.1.3. Описание алгоритм программы
- •5.2. Текст программы
- •5.3. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.1.1. Структура программы
- •5.1.2. Описание переменных
- •5.1.3. Описание алгоритма программы
- •5.2. Текст программы
- •5.6. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.1.1. Структура программы
- •5.1.2. Описание переменных
- •5.1.3. Описание алгоритма программы
- •5.2. Текст программы
- •5.3. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.1.3. Описание алгоритма программы
- •5.2. Текст программы
- •5.3. Результаты работы программы
- •5.1. Разработка алгоритма решения
- •5.1.1. Структура программы
- •5.1.2. Описание переменных
- •5.1.3. Описание алгоритма программы
- •5.2 Текст программы
- •5.3. Результаты работы программы
- •Материалы для мониторинга и контроля образованности обучающихся (уровня сформированности предметных компетенций):
- •Методические разработки (рекомендации)
- •Официально изданные преподавателями учебные и учебно-методические пособия (при условии публикации)
- •Перечень:
- •Учебная литература и/или материалы на электронных носителях
5.6. Результаты работы программы
В процессе работы программы на экран была выведена следующая информация:
-----------------------------------------------------------------------------
-------------- Лабораторная работа N10 -------------
-------------- Управление программами -------------
Адрес PID = 0BA0
Команды:
--------
Завершение - int 20h: CD 20
Старый вызов DOS: 9A F0 FE 1D F0
Новый вызов DOS: CD 21 CB
Адреса:
-------
Конец памяти: 9FC0:0000
Обработчик завершения: 0AFA:02B1
Обработчик Ctrl+Break: 0AFA:014A
Обработчик критич.ошибки: 0AFA:0155
Стек: 0E04:0F94
Родитель: 0AFA
Таблица файлов: 0BA0:0018 (20) - в этом же PSP
1 1 1 0 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
Окружение DOS: 0A1E
CONFIG=STD
COMSPEC=C:\DOS\COMMAND.COM
PROMPT=$p$g
PATH=D:\WIN;C:\;C:\DOS;C:\ARH;C:\NC;C:\BAT;D:\TP;D:\TP7;D:\BC\BIN
TEMP=d:\~TMP
Число строк вызова: 1
D:\TC\TC_LAB10.EXE
Лабораторная работа № 11. Драйверы DOS
1. Цель работы
Просмотреть список драйверов, которые в данный момент загружены в конкретной ПЭВМ.
2. Темы для предварительной проработки
Системные управляющие блоки DOS.
Драйверы устройств.
3. Постановка задачи
Определить драйверы, резидентные в памяти компьютера на своем рабочем месте.
4. Порядок выполнения работы
Порядок выполнения работы и содержание отчета определены в общих указаниях.
5. Пример решения задачи
5.1. Разработка алгоритма решения
5.1.1. Структура программы
Программа состоит из основной программы main() и девяти вспомогательных функций.
Функции GetSym, GetAtr, PutSym, PutAtr описаны в лабораторной работе N7.
void clrbuf(void) - функция очищает буфер клавиатуры.
void MemW(x,y,xr,yr) - функция запоминает содержимое области экрана.
void RmmW(x,y,xr,yr) - функция восстанавливает сохраненную область экрана функцией MemW на экране.
void ClrW(x1,y1,x2,y2,s,a) - функция очищает прямоугольную область на экране заданным символом и атрибутом.
void FlDrv(void) - функция выводит в окно подробное описание атрибутов драйвера.
5.1.2. Описание переменных
Переменные глобальные для всей программы:
xk,yk - координаты курсора;
cc - переменная для хранения кода нажатой клавиши;
bm[rx][ry][2] - буфер для запоминания области на экране.
В программе описана следующая структура заголовка драйвера:
struct DR_HEAD {
struct dr_head *next; /* адрес следующего */
word attr; /* атрибуты */
word strat_off, intr_off; /* смещения секций */
char name[8]; /* имя */
};
5.1.3. Описание алгоритма программы
Основная программа main() осуществляет просмотор списка драйверов и выводит на экран информацию о них при помощи вспомогательных функций.
Функция clrbuf(void) читает символы из буфера клавиатуры, пока он не опустеет.
Функция MemW(x,y,xr,yr) использует для обращения к видеопамяти функции GetSym, GetAtr. x, y - координаты левого верхнего угла прямоугольной области экрана. 8xr, yr - размеры области по горизонтали и вертикали соответственно.
Функция RmmW(x,y,xr,yr) использует для обращения к видеопамяти функции PutSym, PutAtr. x, y - координаты левого верхнего угла прямоугольной области экрана. xr, yr - размеры области по горизонтали и вертикали соответственно.
Функция ClrW(x1,y1,x2,y2,s,a) - использует для обращения к видеопамяти функции PutSym, PutAtr. x1, y1, x2, y2 - координаты прямоугольной области. s, a - символ и атрибут соответственно для заполнения области экрана.
Функция FlDrv(void) рассматривает побитно байт атрибута драйвера и может выдавать информацию в соответствии со значением атрибута.
Слово атрибутов драйвера в старшем разряде содержит признак символьного (1) или блочного (0) устройства. Интерпретация остальных разрядов слова атрибутов существенно разная для символьных и блочных устройств. Для символьных устройств слово атрибутов имеет формат:
1 e b 0 p 0 0 0 0 l 0 0 c n o i,
а для блочных устройств:
0 e m 0 p 0 0 0 0 l 0 0 0 0 s 0,
где |
i - драйвер консоли ввода; |
|
o - драйвер консоли вывода; |
|
n - драйвер нулевого (пустого) устройства; |
|
c - драйвер часов; |
|
l - драйвер поддерживает функции, введенные в DOS 3.2; |
|
p - драйвер выполняет операции Open/Close; |
|
b - драйвер неIBM-овского блочного устройства; |
|
e - драйвер поддерживает функции IOCTL; |
|
s - драйвер поддерживает 32-битную адресацию сектора; |
|
m - драйвер определяет тип диска проверкой 1-го байта FAT. |
По правилам DOS кодовая часть драйвера состоит из двух секций, называемых секцией стратегии и секцией обработки прерываний. Поля strat_off и intr_off заголовка содержат смещения этих секций от начала драйвера. Поле name для символьного устройства содержит имя устройства (возможно, дополненное пробелами), а для блочного - первый байт этого поля содержит количество устройств, поддерживаемых драйвером.
При помощи поля next, заполняемого системой при загрузке драйвера, все драйверы (системные и устанавливаемые) связываются в список. Начало этого списка - заголовок драйвера NUL в CVT. Значение FFFFh в части смещения поля next является признаком конца списка (такой же признак конца используется и в списках, образуемых другими управляющими блоками). Главная программа примера отслеживает этот список.
