Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Электронный учебно-методический комплекс по учебной дисциплине «Системное программирование» для специальностей 1-40 01 01 «Программное обеспечение информационных технологий», 6-05-0612-01 «Программная инженерия»

.pdf
Скачиваний:
0
Добавлен:
28.12.2025
Размер:
3.06 Mб
Скачать

РАЗДЕЛ 4 ВСПОМОГАТЕЛЬНЫЙ

УЧЕБНАЯ ПРОГРАММА 1-40 01 01

Учебная программа по учебной дисциплине «Системное программирование» разработана для по специальности 1-40 01 01 «Программное обеспечение информационных технологий» специализации «Веб-технологии и программное обеспечение мобильных систем». Учебная дисциплина «Системное программирование» знакомит студентов с основными принципами построения и организации работы операционных систем семейства Windows.

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

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

Рассматриваются основы взаимодействия приложений по сети с использованием библиотеки WinSock.

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

Цели учебной дисциплины «Системное программирование»: изучение принципов организации операционных систем на примере операционных систем семейства Windows, изучение способов и принципов создания системного программного обеспечения.

Задачи учебной дисциплины:

изучение архитектуры операционной системы Windows, способов и принципов организации ее работы;

ознакомление с возможностями, предоставленными интерфейсом прикладного программирования Win32 API;

261

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

В результате изучения учебной дисциплины студент должен:

знать:

основные функции операционной системы;

основные компоненты операционной системы

методы взаимодействия процессов;

методы синхронизации потоков;

модель памяти в защищенном режиме;

методы управления виртуальной памятью;

методы управления файлами;

принципы построения клиент-серверных приложений с использованием библиотеки WinSock;

принципы обработки исключительных ситуаций в ОС Windows;

методы перехвата вызовов функций;

основные виды уязвимостей программного обеспечения;

– механизмы защиты

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

системой;

 

методы отладки и поиска дефектов в программном обеспечении;

уметь:

программировать многопоточные приложения;

организовать обмен данными между двумя процессами;

создавать приложения, взаимодействующие по сети;

создавать и использовать динамически подключаемые библиотеки;

пользоваться отладчиком, исследовать аварийные дампы памяти,

проблемы утечки памяти;

владеть:

методами и инструментами отладки и поиска дефектов в системном и прикладном программном обеспечении;

языком программирования низкого уровня С.

Освоение данной учебной дисциплины обеспечивает формирование следующей компетенции:

БПК-16. Применять алгоритмические и программные решения в области системного программного обеспечения, включая программные реализации систем с параллельной обработкой данных и высокопроизводительных систем

Согласно учебным планам на изучение учебной дисциплины отведено:

262

для заочной (дистанционной) формы получения высшего образования всего 276, часов из них аудиторных 30 часов. На курсовой проект отведено 60 часов самостоятельной работы;

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

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

 

 

 

 

 

 

 

Таблица 1.

Заочная (дистанционная) форма получения высшего образования

 

 

 

 

 

 

 

 

 

 

 

Лабораторные

Практически

Форма

 

Курс

Семестр

Лекции, ч.

занятия, ч.

е занятия, ч.

промежуточной

 

 

 

 

 

 

аттестации

 

 

 

 

 

 

экзамен,

4

7

16

14

-

 

защита

курсового

 

 

 

 

 

 

проекта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.

Заочная

(дистанционная)

форма получения

высшего

образования

интегрированного со средним специальным образованием

 

 

 

 

 

 

 

 

 

 

 

Лабораторные

Практически

Форма

 

Курс

Семестр

Лекции, ч.

занятия, ч.

е занятия, ч.

промежуточной

 

 

 

 

 

 

аттестации

3

5

16

14

-

 

экзамен

 

 

 

 

 

 

 

 

3

6

-

-

-

 

защита

курсового

 

проекта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

СОДЕРЖАНИЕ УЧЕБНОГО МАТЕРИАЛА РАЗДЕЛ 2 Язык программирования С

2.1 Особенности языка программирования C.

Особенности языка. Отличия от С++. Массивы, строки, адресная арифметика, указатели на функции, функции с переменным числом аргументов. Построение программы. Построение основных структур данных. Стандартная библиотека языка С. Безопасные аналоги стандартных функций языка С.

РАЗДЕЛ 3 Операционная система Windows

263

3.1 Функции и архитектура операционных систем.

Операционные системы. Функции. Архитектура. Выполнение задач. Процессы, потоки. Многозадачность. Windows API. UNICODE.

3.2 Управление процессами и потоками.

Понятие процесса. Ресурсы, принадлежащие процессу. Создание и завершение процессов. Дескрипторы процесса. Взаимодействие процессов (файлы, командная строка, разделяемая память). Безопасность. Маркер доступа. Понятие потока. Контекст потока.

3.3 Управление памятью.

Модель памяти в защищенном режиме. Виды памяти (стек, куча, пулы памяти режима ядра, тегирование пула).

3.4 Управление файлами.

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

3.5 Динамически подключаемые библиотеки.

Назначение динамически подключаемых библиотек. Варианты использования библиотек. Зависимости библиотек. Формат файла PE. Таблицы импорта и экспорта. Загрузка библиотек. Внедрение кода в другой процесс.

3.6 Сервисы и драйверы Windows.

Сервисы Windows. Создание сервиса. Регистрация сервиса в системе. Менеджер сервисов. Запуск и остановка сервисов. Драйверы, точки входа в драйвер. Объект, описывающий драйвер. Объект, описывающий файл. Взаимосвязь объектов. Запрос ввода-вывода. Менеджер ввода-вывода. Стек драйверов. Прерывания, уровни прерываний. Подпрограммы обработки прерываний. Отложенные вызовы процедур. Асинхронные вызовы процедур. Типы асинхронных процедур.

3.7 Программирование сети.

Обзор модели OSI. Обзор сетевых API Windows. Использование Windows Sockets.

3.8 Перехват API вызовов.

Выполнение кода. Стек потока. Соглашения о вызовах. Перехват функций путем модификации исходного кода. Перехват функций путем модификации таблиц импорта/экспорта. Перехват функций путем модификации системных таблиц. Использование драйверов-фильтров.

РАЗДЕЛ 4 Безопасное программирование 4.1 Уязвимости ПО. Безопасное программирование.

Классификация уязвимостей ПО. Ошибка переполнения буфера. Ошибка переполнения переменных. Ошибки форматирования строк. Механизмы защиты

264

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

4.2 Структурная обработка исключений.

Обработчики завершения. Фильтры и обработчики исключений. Необработанные исключения и исключения C++.

4.3 Отладка ПО

Обзор отладчиков. Обзор пакета Debugging Tools for Windows. Отладочные символы. Исследование аварийных завершений приложений. Исследование ошибок синхронизации. Исследование утечки памяти. Настройка отладки драйверов в режиме ядра. Настройка аварийного дампа памяти операционной системы.

4.4 Утилиты SysInternals.

Process monitor. Process explorer. Autoruns. Handle

4.5 Инструменты статического анализа кода.

Использование аннотации исходного кода (SAL). PREFast. Code analysis

для Visual Studio.

265

ТРЕБОВАНИЯ К КУРСОВМУ ПРОЕКТУ

Всоответствии с учебным планом на выполнение курсового проекта отводится всего 60 часов самостоятельной работы.

Целью курсового проекта (КП) является применение теоретических и практических навыков, полученных в ходе обучения студентов по дисциплине «Системное программирование» и создание системного программного обеспечения для операционной системы.

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

Тема курсового проекта утверждается на соответствующей кафедре, а задание на

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

Курсовой проект должен соответствовать стандартам Единой системы конструкторской документации (ЕСКД), Единой системы технологической документации (ЕСТД), Единой системы программной документации (ЕСПД), другим действующим техническим нормативным правовым актам.

Всостав курсового проекта входят:

пояснительная записка;

графическая часть;

работающее программное обеспечение.

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

266

 

УЧЕБНО-МЕТОДИЧЕСКАЯ КАРТА УЧЕБНОЙ ДИСЦИПЛИНЫ

 

Заочная (дистанционная) форма получения высшего образования

, темы

 

Количество аудиторных часов

 

 

 

 

 

 

 

 

Лекции

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

Семинарские

занятия

Лабораторные занятия

Иное

разделаНомер

Название раздела, темы, занятия

 

 

 

 

 

 

 

1

2

3

4

5

 

6

7

 

7 семестр

 

 

 

 

 

 

1.

Язык программирования С

0

 

 

 

0

 

1.1

Особенности языка программирования C.

2

 

 

 

0

 

 

Лабораторное занятие №1 Построение программы.

0

 

 

 

2

 

 

Лабораторное занятие №2 Построение основных структур

0

 

 

 

2

 

 

данных.

 

 

 

 

 

 

 

 

 

 

 

2.

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

0

 

 

 

0

 

2.1

Функции и архитектура операционных систем.

2

 

 

 

0

 

2.2

Управление процессами и потоками.

2

 

 

 

0

 

2.3

Управление памятью.

2

 

 

 

0

 

 

 

 

 

 

 

 

 

часов

КоличествоУСР

8

Форма знанийконтроля

9

Защита

лабораторной

работы

Защита

лабораторной

работы

267

2.4

Управление файлами.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №3 Обзор средств управления

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

файлами.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5

Динамически подключаемые библиотеки.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

2.6

Сервисы и драйверы Windows.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №4 Регистрация сервиса в системе.

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

Менеджер сервисов.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

Безопасное программирование

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

3.1

Уязвимости ПО. Безопасное программирование.

2

 

 

0

 

 

Контрольная

 

 

 

 

работа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №5 Безопасное программирование

 

 

 

 

 

 

Защита

 

(переполнение чисел, буфера, неправильное использование

0

 

 

2

 

 

лабораторной

 

памяти, проверка возвращаемых значений).

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №6 Обзор пакета Debugging Tools for

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

Windows.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Защита

 

Лабораторное занятие №7 Code analysis для Visual Studio.

0

 

 

2

 

 

лабораторной

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

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

0

 

 

0

 

 

Защита курсового

 

 

 

 

 

проекта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итого за семестр

16

 

 

14

 

 

Экзамен

 

 

 

 

 

 

 

 

 

 

268

 

 

 

 

 

 

 

 

Всего аудиторных часов

30

 

 

 

 

 

 

 

1Темы учебного материала, не указанные в Учебно-методической карте, отводятся на самостоятельное изучение студента

Заочная (дистанционная) форма получения высшего образования, интегрированного со средним специальным.

разделаНомер,

 

Лекции

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

Семинарские занятия

Лабораторные занятия

Иное

часовКоличество УСР

контроляФорма знаний

 

 

Количество аудиторных часов

 

 

 

Название раздела, темы, занятия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

9

 

 

 

 

 

 

 

 

 

 

5 семестр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

Язык программирования С

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

1.1

Особенности языка программирования C.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Защита

 

Лабораторное занятие №1 Построение программы.

0

 

 

2

 

 

лабораторной

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №2 Построение основных структур

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

данных.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

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

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

2.1

Функции и архитектура операционных систем.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

2.2

Управление процессами и потоками.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

2.3

Управление памятью.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

269

 

 

 

 

 

 

 

2.4

Управление файлами.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №3 Обзор средств управления

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

файлами.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5

Динамически подключаемые библиотеки.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

2.6

Сервисы и драйверы Windows.

2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №4 Регистрация сервиса в системе.

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

Менеджер сервисов.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.

Безопасное программирование

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

3.1

Уязвимости ПО. Безопасное программирование.

2

 

 

0

 

 

Контрольная

 

 

 

 

работа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №5 Безопасное программирование

 

 

 

 

 

 

Защита

 

(переполнение чисел, буфера, неправильное использование

0

 

 

2

 

 

лабораторной

 

памяти, проверка возвращаемых значений).

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

Лабораторное занятие №6 Обзор пакета Debugging Tools for

 

 

 

 

 

 

Защита

 

0

 

 

2

 

 

лабораторной

 

Windows.

 

 

 

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Защита

 

Лабораторное занятие №7 Code analysis для Visual Studio.

0

 

 

2

 

 

лабораторной

 

 

 

 

 

 

 

 

работы

 

 

 

 

 

 

 

 

 

 

Итого за семестр

16

 

 

14

 

 

Экзамен

 

 

 

 

 

 

 

 

 

 

6 семестр

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

270

 

 

 

 

 

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]