Курсовая работа по дисциплине
"Системное программирование"

Тема курсовой работы: "Программная реализация средствами ОС Windows :".

Цель - знакомство с принципами работы Windows API.

Среда разработки курсовой работы - любой компилятор C/C++ для ОС Windows версии 2000 или выше.

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

    Требования к оформлению пояснительной записки:
  1. Печать на листах А4 с одной стороны; параметры страниц: слева 2.5 см; справа 1.5 см; сверху 2.0 см; снизу 2.0 см.
  2. Абзацы: одинарний межстрочный интервал; отступ 6 пунктов; выравнивание по ширине; Times New Roman 14 пунктов.
  3. Раздел: начинается с новой страницы; интервал после названий разделов 6 пунктов; шрифт Times New Roman 16 полужирный.
  4. Параграфы: без разрыва страницы; перед названием параграфа интервал 6 пунктов; шрифт Times New Roman 14 полужирный;
  5. Выравнивание всех заголовков - по центру, точка в конце заголовка не ставится.
  6. Приложения нумеруются буквами алфавита.
  7. Разделы (кроме вступления и заключення) нумеруются арабскими цифрами.
  8. Номера страниц в правом верхнем углу; первая страница (титульний лист) не нумеруется.
  9. Сноски - только в конце страницы.
  10. Иллюстрации выравниваются по центру и подписываются как "Рис. 1 Название"
  11. Названия таблиц выравниваются по правому краю и подписываются как "Таблица 1. Название"
    Электронный вариант пояснительной записки необходимо предоставить в формате MS Word. Пояснительная записка состоит из таких основных частей:
  1. Титульний лист.
  2. Реферат.
  3. Содержание.
  4. Введение.
  5. Теоретическая часть.
  6. Практическая часть.
  7. Заключение.
  8. Список использованых источников.

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

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

Введение: область использования.

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

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

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

Список использованых источников создается по общим правилам. Разрешено использовать ссылки на internet ресурсы в виде: URL: https:///www.example.com.

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

Задания для курсовой работы:

Курсовая состоит из теоретической части (реферат) и практической части (программа).

Номер варианта Теоретическая часть Практическая часть
1 Объекты ядра: наследование; права доступа; дескрипторы безопасности. Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 4 уровнях максимум). Перенаправьте консольный вывод в файл и заставьте все дочерние процессы наследовать дескриптор этого файла.
2 Потоки: порождение; работа с TLS; передача сообщений между потоками; критические секции кода. Запустить 10 потоков, передав каждому потоку в качестве параметра его номер в коллективе потоков. Каждый поток должен вывести свой номер. Зарегистрировать критическую секцию в главном потоке программы, использовать ее для обрамления секции кода.
3 Динамические библиотеки: экспорт/импорт функций; работа с TLS. Описать точку входа в DLL. Описать несколько функций для экспорта из DLL. Зарезервировать TLS-слот и использовать в вашей DLL для хранения приватных данных потока. В программе-примере импортировать функции из DLL статически и динамически.
4Обработка исключительных ситуаций; исследование информации о состоянии процесса. Создать оболочку последней линии обороны вокруг всех функций потоков (для исследования предсмертной информации о процессе). Искусственно породить в программе недопустимую операцию, перехватить ее и вывести на печать содержимое регистров программы.
5 Кучи: создание; сериализация доступа; оптимизация. Описать набор функций для работы со списками. Память для объектов каждого списка выделять динамически из приватной кучи без упорядочения обращений.
6 Виртуальная память: регионы, резервирование, права доступа. Исследовать адресное пространство процесса, определить местонахождение динамически загруженных библиотек, куч, стеков.
7 Потоки: порождение, синхронизация, семафоры и мутексы. Создать объект ядра событие. Запустить 10 потоков, передав каждому потоку в качестве параметра его номер в коллективе потоков. Каждый поток должен выполнить свою часть работы. Процесс должен ожидать завершения всех 10 потоков.
8 Процессы: порождение; наследование дескрипторов; синхронизация между процессами. Заставьте консольный процесс запустить несколько своих копий (и далее рекурсивно). Убедитесь, что порождение процессов не будет бесконечным (остановитесь на 4 уровнях максимум). Для каждого процесса создать свое окно консоли с индивидуальными настройками.
9 Общесистемные ловушки: регистрация; наблюдение; подмена сообщений. Зарегистрировать ловушку для всех оконных сообщений в системе. Выводить на печать информацию о сообщениях. Корректно завершить процесс наблюдения и убрать ловушку при закрытии программы.
10 Проецирование файлов в память. Применение проекций файлов для разделения данных между процессами. Поменять местами две половины большого двоичного файла используя двойное проецирование в память для представления файла.
11 Совместное использование регионов памяти несколькими процессами. Разделить регион между двумя процессами с помощью проецирования; синхронизировать с помощью семафора процесс обновления данных в регионе.
12 Динамические библиотеки: экспорт/импорт функций; работа с TLS. Описать точку входа в DLL. Описать несколько функций для экспорта из DLL. Зарезервировать TLS-слот и использовать в вашей DLL для хранения приватных данных потока. В программе-примере организовать отложенный (ленивый) импорт функций из DLL по первому запросу программы.

Архив с примерами использования (необходимо приспособить (переделать) для своих целей).