Рабочая программа специальность 351500 математическое обеспечение и администрирование информационных систем статус дисциплины

Вид материалаРабочая программа

Содержание


Системное программирование
1.2. Задачи изучения дисциплины
1.3. Перечень дисциплин, усвоение которых необходимо для изучения курса
2. Содержание дисциплины
2. Общее описание архитектуры процессоров семейства INTEL X86.
3. Среда выполнения программ в реальном режиме
4. Объектные и запускаемые модули. Операционная система.
6. Устройство плавающей арифметики (FPU)
7. Технология программирования MMX.
8. Видео подсистема
10. Дисковая подсистема
11. Подсистема таймера
13. Подсистема часов реального времени RTC/CMOS
14. Последовательный и параллельный порты
16. Управление памятью в защищенном режиме
17. Управление процессором
19. Обработка прерываний и исключений
20. Управление задачами
21. Смешивание 16-ти и 32-х битового кода
2.2. Практические и семинарские занятия
...
Полное содержание
Подобный материал:
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ


ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

УТВЕРЖДАЮ

Декан факультета информатики

_________________ С.П. Сущенко

« » 2010 г.


СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

РАБОЧАЯ ПРОГРАММА


Специальность 351500 – МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И АДМИНИСТРИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ


Статус дисциплины:

региональный компонент специальности

Томск - 2010 г.

ОДОБРЕНО кафедрой теоретических основ информатики


Протокол №05/10 от 01.09.2010


Зав. кафедрой, профессор _________________Ю.Л.Костюк


РЕКОМЕНДОВАНО методической комиссией факультета информатики


Председатель комиссии, профессор _____________________ Б.А.Гладких


“___”_____________2010 г.


Рабочая программа по курсу “ Системное программирование” составлена на основе требований Государственного образовательного стандарта высшего профессионального образования по специальности 351500 – МАТЕМАТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ И АДМИНИСТРИРОВАНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ, утвержденного 10 марта 2000 г. Общий объем курса 154 часа. Из них: лекции – 48 часов, лабораторные занятия – 48 часов, самостоятельная работа студентов – 58 часов. Зачет в первом, втором, третьем семестре. Общая трудоемкость курса 4.5 зач. ед.


СОСТАВИТЕЛЬ:

Гусев Игорь Сергеевич – кандидат технических наук, старший преподаватель кафедры теоретических основ информатики


Цели и задачи дисциплины, ее место в учебном процессе

1.1. Цель преподавания дисциплины

Целью курса является принципов и методов системного программирования.


1.2. Задачи изучения дисциплины

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

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

Для изучения курса необходимо знание следующих курсов: программирование, организация ЭВМ.

2. Содержание дисциплины
2.1. Теоретическая часть
1. Основные принципы построения ЭВМ. Стандарт IBM PC.
1.1. Способы представления информации. Аналоговые и цифровые ЭВМ.
1.2. Фон. Неймановская архитектура компьютеров.
1.3. Целочисленная арифметика – основа компьютеров.
1.4. Основной набор регистров и команд процессора.
1.5. Взаимодействие с внешними устройствами.
1.6. Прерывания.
1.7. Первая программа, которую выполняет компьютер.
1.8. Операционная система и программы пользователя.
2. Общее описание архитектуры процессоров семейства INTEL X86.
2.1. Стандарт IBM PC – колыбель современных PC на базе процессоров INTEL X86.
2.2. История развития процессоров INTEL.
2.3. Режимы работы процессора..
2.4. Адресное пространство в системах на базе процессоров X86.
2.5. Работа с внешними устройствами.
2.6. Регистроры процессора.
2.7. Способы адресации.
2.8. Система команд.
3. Среда выполнения программ в реальном режиме
3.1. Управление памятью.
3.2. Прерывания и исключения процессора.
3.3. Взаимодействие с базовой системой ввода/вывода.
4. Объектные и запускаемые модули. Операционная система.
4.1. Создание запускаемых модулей.
4.2. Операционная система и ее назначение.
5. Ассемблер INTEL 80X86
5.1. Назначение языка Ассемблера.
5.2. Основные языковые конструкции идирективы.
5.3. Синтаксис записи команд процессора.
6. Устройство плавающей арифметики (FPU)
6.1. Совместимость и простота использования FPU. Архитектура INTEL.
6.2. Вещественные числа и их форматы с плавающей точкой.
6.3. Архитектура FPU.
6.4. Типы и форматы данных с плавающей точкой.
6.5. Множество инструкций FPU.
6.6. Обработка исключений вещественной арифметики.
7. Технология программирования MMX.
7.1. Обзор среды программирования технологии ММХ.
7.2. Регистры ММХ.
7.3. Множество инструкций ММХ.
7.4. Обзор множества инструкций ММХ.
7.5. Совместимость с FPU.
8. Видео подсистема
8.1. История развития видеоадаптеров.
8.2. Стандарт VGA.
8.3. Современные видеоадаптеры. VESA.
9. Клавиатура
9.1. История развития клавиатуры IBM.
9.2. Взаимодействие с клавиатурой.
9.3. Программирование клавиатуры.
10. Дисковая подсистема
10.1. Цилиндр, дорожка, головка, сектор.
10.2. Гибкие диски. История развития.
10.3. Жесткие диски. История развития.
10.4. Работа с дисками через BIOS.
10.5. Работа с дисками через порты ввода/вывода.
10.6. Хранение информации на диске.
10.7. Примеры работы с дисковыми накопителями через BIOS.
11. Подсистема таймера
11.1. Программирование таймера.
11.2. Генерация звука.
12. Контроллер прерываний
12.1. Подсистема контроллера прерываний (8259А).
12.2. Источники прерываний, их приоритеты и коды векторов.
12.3. Программирование контроллера прерываний.
13. Подсистема часов реального времени RTC/CMOS
13.1. Память подсистемы RTC.
13.2. Функционирование подсистемы часов реального времени.
13.3. Программирование доступа к памяти RTC.
14. Последовательный и параллельный порты
14.1. Последовательный порт.
14.2. Параллельный порт.
15. Обзор системной архитектуры
15.1. Обзор архитектуры системного уровня.
15.2. Режим работы.
15.3. Системные флаги и поля в регистре флагов.
15.4. Регистры управления памятью.
15.5. Регистры управления.
15.6. Загрузка и сохранение системных регистров.
16. Управление памятью в защищенном режиме
16.1. Обзор управления памятью.
16.2. Использование сегментов.
16.3. Физическое адресное пространство.
16.4. Логические и линейные адреса.
16.5. Типы системных дескрипторов.
16.6. Трансляция страниц (виртуальная память).
17. Управление процессором
17.1. Программная инициализация для реального режима.
17.2. Программная инициализация для защищенного режима.
17.3. Переключение режимов.
18. Защита
18.1. Включение и отключение защиты сегментов и страниц.
18.2. Поля и флаги, используемые для защиты на уровне сегментов и страниц.
18.3. Проверка предела.
18.4. Проверка типа.
18.5. Уровни привилегий.
18.6. Проверка уровня привилегий при доступе к сегментам данных.
18.7. Проверка уровня привилегий при загрузке SS регистра.
18.8. Проверка уровня привилегий при передаче управления между сегментами кода.
18.9. Привилегированные инструкции.
18.10. Допустимость указателей.
18.11. Защита на уровне страниц.
18.12. Смешивание защиты страниц и сегментов.
19. Обработка прерываний и исключений
19.1. Обзор прерываний и исключений.
19.2. Вектора исключений и прерываний.
19.3. Классификации исключений.
19.4. Перезапуск программы или задачи.
19.5. Немаскируемые прерывания.
19.6. Обработка нескольких NMI.
19.7. Включение и отключение прерываний.
19.8. Приоритет между одновременными исключениями и прерываниями.
19.9. Таблица дескрипторов прерываний.
19.10. Обработка прерываний и исключений.
19.11. Код ошибки.
19.12. Исключения и прерывания.
20. Управление задачами
20.1. Обзор управление задачами.
20.2. Структуры данных для управления задачами.
20.3. Переключение задач.
20.4. Связывание задач.
20.5. Адресное пространство задачи.
20.6. Сегмент состояния 16 битовой задачи.
21. Смешивание 16-ти и 32-х битового кода
21.1. Определение 16 и 32 битовых программных модулей.
21.2. Смешивание 16 и 32 битовых операций внутри сегмента кода.
21.3. Разделение данных среди сегментов кода смешанного размера.
21.4. Передача управления между сегментами кода разного размера.
22. Эмуляция 8086
22.1. Реальный режим.
22.2. VIRTUAL-8086 режим.
22.3. Обработка прерываний и исключений в VIRTUAL-8086 режиме.

2.2. Практические и семинарские занятия

По курсу не предусмотрены практические занятия.

2.3. Лабораторные работы
1. Создать EXE модуль, в котором описать 5 сегментов: 16 битового кода, 16 битовых данных, 16 битового стека, 32 битового кода и 32 битовых данных. Написать процедуры вывода на экран ASCIIZ строки символов, десятичных и шестнадцатеричных чисел (от 0 до 232), не используя функций DOS и BIOS, т.е. через видео буфер. Написать процедуру чтения символов и кодов сканирования клавиатуры, не используя функций DOS и BIOS, т.е. через обработку аппаратного прерывания клавиатуры и через порты ввода/вывода. Для написания соответствующих процедур использовать 32 битовый код (16 битовый код неприемлем для получения зачета). Написать обработчик прерываний от таймера. Все процедуры естественно поместить в 16 битовый сегмент кода. Для демонстрации вывести на экран несколько чисел и строк, затем в цикле выводить на экран нажимаемые с клавиатуры буковки. Одновременно на экране должно светиться текущее время в формате ЧЧ:ММ:СС, естественно часы должны идти независимо от того нажимаются клавиши или нет. В программе не должно быть команд INT кроме как в комбинации MOV AX,4C00h; INT 21H.
2. В 16 битовом сегменте данных разместить таблицу глобальных дескрипторов (GDT), которая должна содержать по крайней мере 7 дескрипторов сегментов: 16 битового кода, 16 битовых данных, 16 битового стека, 32 битового кода, 32 битовых данных, сегмента видео буфера и сегмента, описывающего всю память. Написать процедуру инициализации таблицы дескрипторов. Написать процедуры перехода в защищенный режим и обратно. Для этого запретить прерывания перед переходом в защищенный режим и разрешить после возврата. Перенести процедуры вывода чисел и строк в 32 битовый сегмент кода. Строки и необходимые переменные перенести в 32 битовый сегмент данных. Для демонстрации программа должна проинициализировать таблицу глобальных дескрипторов, переключиться в защищенный режим, передать управление в 32 битовый сегмент кода, вывести на экран несколько чисел и строк, вернуть управление в 16 битовый сегмент кода, вернуться в реальный режим.
3. В 16 битовом сегменте данных разместить таблицу дескрипторов прерываний (IDT), в которой должны быть описаны дескрипторы прерываний для всех исключений процессора, всех аппаратных прерываний и 2-х пользовательских прерываний. В процедуру перехода в защищенный режим добавить подпрограмму перепрограммирования контроллера прерываний для переноса аппаратных прерываний с 8h-0Fh и 70H-77h на 20h-2Fh соответственно. В процедуру возврата в реальный режим добавить подпрограмму перепрограммирования контроллера прерываний для возвращения прерываний в нормальное состояние. Написать обработчики прерываний аппаратных прерываний для таймера и клавиатуры для остальных поставить заглушки, для чего перенести соответствующие обработчики прерываний в 32 битовый сегмент кода. Написать обработчики исключений, которые будут выводить на экран содержимое всех регистров (в том числе и системных, кроме регистров отладки, MМX и FPU) в шестнадцатиричном формате, а также выводить на экран 16 байт кода начиная с команды на которой произошло исключение, переключаться в реальный режим и завершать выполнение программы естественно с комментарием о случившемся. Для пользовательских прерываний написать сервисные обработчики: для одного прерывания работа с экраном (вывод строк и чисел), для другого работа с клавиатурой (нечто типа int 16h). Для демонстрации программа должна проинициализировать глобальную таблицу дескрипторов прерываний и таблицу прерываний дескрипторов. Переключиться в защищенный режим. Передать управление в 32 битовый сегмент. Выводить на экран нажимаемые буковки. Однако на некоторые буковки программа должна делать что-нибудь нехорошее с целью вызова исключения процессора.
4. В 32 битовом сегменте разместить таблицу трансляции страниц. Проинициализировать ее для всей имеющейся памяти. Для демонстрации программа из задачи 3 должна создать ситуацию, при которой возникло бы исключение страницы.
5. Создать 3 сегмента состояния задачи. Написать две простейшие задачи, которые будут что-нибудь постоянно выводить на экран. Одна задача должна рисовать на одной половине экрана, другая – на другой. Одна из них может также что-нибудь вводить с клавиатуры. Проинициализировать сегменты состояния задач для двух этих задач. Написать обработчик прерывания таймера (простейший планировщик задач), который будет разделять процессорное время между двумя этими задачами. Для демонстрации написать программу, которая будет выполнять две эти задачи одновременно в режиме разделения времени.

2.4. Курсовой проект

Курсовой проект не предусмотрен.


3. Учебно-методические материалы по дисциплине
3.1. Основная литература
1. Intel Architecture Software Developer, s Manual. Volume 1: Basic Architecture.
2. Intel Architecture Software Developer, s Manual. Volume 2: Basic Architecture.
3. Intel Architecture Software Developer, s Manual. Volume 3: Basic Architecture.
4. Microsoft Product Support Services Application Note. SS0288: Relocatable Module Format. Revision Data. 5/92.
5. Руководство по архитектуре IBM PC AT/ Ж.К. Голенкова, А.В. Заблоцкий, М.Л. Мархасин и др.: Под общ. Ред. МюЛю Мархасина. – Мн.: ООО “Консул”, 192. – 949 с.: ил.
6. Библия по техническому обеспечению Уина Роша / Пер. с англ. А.Пашковского. – Мн.: МХХК “Динамо”, 1992, 416 с.
7. The PC Assembler Tutor – Copyright ( C ) 1989 Chuck Nelson/
8. VESA BIOS Extension ( VBE ) Core Functions Standard Version 2.0/ Video Electronics Standard Association, 1994, 94 c.

3.2. Дополнительная литература не требуется.

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