Программа по курсу: системное программирование в ос windows

Вид материалаПрограмма

Содержание


Всего часов: 66
Список литературы
Подобный материал:

Министерство образования и науки Российской Федерации

Московский физико-технический институт

(государственный университет)


УТВЕРЖДАЮ

Проректор по учебной работе

__________ Ю. А Самарский

__________________ 2008 г.


ПРОГРАММА


по курсу: СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ В ОС WINDOWS (по выбору)

по направлению: 511600

факультеты: ФУПМ

кафедра: ИНФОРМАТИКИ

курс: 4

семестр: 7,8

лекции: 44 часов

практические занятия: 6 часов

консультации по ДЗ: 16 часов


ВСЕГО ЧАСОВ: 66

Программу составил: ассистент А.В. Костюшко


Программа обсуждена

на заседании кафедры информатики

28 августа 2008 года


Заведующий кафедрой, И.Б. Петров

профессор

1. Обзор семейства ОС Windows NT и основные концепции.

История семейства Windows NT. Цели и принципы семейства Windows NT. Основные концепции: Native и Win32 API, режимы ядра и пользователя, процессы и потоки, объекты и описатели, сервисы и экспортируемые функции, виртуальная и физическая память, безопасность, реестр, Unicode.

2. Компонент ядра Windows – Object Manager

3. Синхронизационные примитивы Windows.

4. Планировщик потоков(нитей) в Windows. (Kernel Scheduler)

5. Ожидание на объектах ядра. Диспетчер объектов. (Kernel Dispatcher).

6. Краткий обзор защищенного режима процессоров x86 и AMD64.

7. Диспетчер ловушек (обработка исключений, прерываний и вызовов системных сервисов).

8. Механизм SEH.

9. Виртуальная и физическая память. Компоненты и сервисы диспетчера памяти. Системные пулы памяти. Структура линейного адресного пространства. Страничное преобразование. Обработка ошибок страниц.

10. Виртуальная и физическая память. Дескрипторы виртуальных адресов. Рабочие наборы. База данных PFN. MDL.

Секции.

11. Процессы, потоки, задания. Внутреннее устройство процесса. Внутреннее устройства потока. Объекты задания. Обзор недокументированных структур.

12. Архитектура ввода-вывода.

13. Менеджер кеша.

14. LPC, Security.

15. Реестр, сервисы, WMI.

16. Ключевые драйверы в режиме ядра. Ключевые компоненты режима пользователя. Обзор подсистем ядра. Общая архитектура. Загрузка системы. Bootloader и ntldr. Инициализация ядра и запуск smss. Crss и Win32k.sys. Winlogon и lsass.

17. Работа сети в ОС Windows.

18. Структура PE файла.

19. Программирование драйверов общего назначения. Скелет драйвера. DriverEntry, AddDevice. Драйвера и устройства.

20. Базовые техники программирования драйверов: обработка ошибок, работа с памятью, работа со строками, списки и макросы.

21. Использование объектов синхронизации в драйверах.

22. Работа с IRP, системными нитями и workitems.


Домашние задания и лабораторные работы.


Лабораторная работа 1. Цель работы: Изучение комплекса программного обеспечения для разработки системного программного обеспечения; VmWare + WinDbg + DDK. Настройка совместной работы гостевой ОС Windows внутри виртуальной машины VmWare и отладчика WinDbg. Компиляция, загрузка и выгрузка драйвера. Команды отладчика (часть 1).


Лабораторная работа 2. Цель работы: Работа с проектом драйвера. Отладка драйвера. Команды отладчика (часть 2).


Лабораторная работа 3. Цель работы: Изучение программного продукта IDA Pro (дизассемблер).


Домашнее задание 1. Написать драйвер klogger и драйвер, его тестирующий. Задача драйера klogger – обечпечить возможность писать записи в журнал (log) с любого уровня irql. Драйвер должен быть выгружаемым. Процедура записи в журнал должна автоматически добавлять время записи и преобразовывать формат перевода строк из ‘\n’ в ‘\n\r’. Тестирующий драйвер должен в течении минуты делать тестовые записи из отдельной нити на PASSIVE_LEVEL irql, из DPC процедуры (вызываемой периодически по таймеру) на уровне irql, выбираемого каждый раз случайно из диапазона от DISPATCH_LEVEL до HIGH_LEVEL. Тестовая запись в журнал должна содержать адрес и идентификатор текущей исполняемой нити и процесса. В процессе работы тестового драйвера файл журнала должен быть доступен по чтению для программ пользовательского режима (например notepad).

Реализовать один из вариантов улучшения драйвера kLogger.


Домашнее задание 2. Написать драйвер, использующий недокументированные возможности Windows. (задание для команды из 3х-4х студентов)


Домашнее задание 3. Исследовать небольшую часть одной из подсистем ядра Windows. Написать отчет-реферат. (задание для команды из 3х-4х студентов)


Домашнее задание 4. Написать драйвер, модифицирующий исследование поведение ОС Windows. (задание для команды из 3х-4х студентов)


СПИСОК ЛИТЕРАТУРЫ

[1] Д.Соломон, М.Руссинович. Внутреннее устройство Microsoft Windows 2000. Мастер-класс. – СПб.: Питер; М.: Издательско-торговый дом “Русская Редакция”, 2001.

[2] С. Шрайбер. Недокументированные возможности Windows 2000. Библиотека программиста. – СПб.:Питер, 2002.

[3] Г. Неббет. Справочник по базовым функциям API Windows NT/2000. – М.: Издательский дом “Вильямс”, 2002.

[4] Walter Oney. Programming the Microsoft Windows Driver Model. – Microsoft Press, 1999.

ЭЛЕКТРОННЫЕ МАТЕРИАЛЫ

[5] MSDN – интернет, ссылка скрыта

[6] Слайды к лекциям Дэвида Проберта в Токийском университете (0-16. – интернет,
ссылка скрыта

[7] Driver Development Kit Reference. – электронная справка к программному продукту.