Системне программування

Вибіркова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
30 годин лекційних занять, 16 годин лабораторних занять.
Самостійна робота: 
складає 89 годин.
Індивідуальна робота: 
• очна форма — розрахунково-графічна робота.
Семестровий контроль: 
Залік.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни

Мета дисципліни:
вивчення принципів, засобів та основ дослідження і реалізації системних програм і розвиток навичок їх практичного застосування 

Завдання дисципліни:
- навчитися досліджувати організацію, елементи програмного забезпечення і процесів, що відбуваються у системі
- навчитися розробляти системне програмне забезпечення

Основні результати навчання

Організовувати низькорівневу взаємодію з апаратурою та операційними системами. 

Демонструвати та використовувати знання і розуміння різних аспектів розробки системного програмного забезпечення.

Форми організації освітнього процесу та види навчальних занять

Л – лекційні заняття; ЛЗ – лабораторні заняття; СРС – самостійна робота здобувача вищої освіти; МКР – модульна контрольна робота; РГР – розрахунково-графічна робота; К – консультації.

Тематика та види навчальних занять

1    тиждень

Л1. Вступ. Засоби дослідження та корегування бінарних кодів програм. PE-формат (початок).
ЛЗ1. Дослідження та корегування бінарних файлів за допомогою наладчика
СРС. К.

2    тиждень

Л2. PE-формат (продовження).
СРС. К.

3    тиждень

Л3. Налагоджувальні засоби Windows. Перехват налагоджувальних подій дочірнього процесу. Засоби обробки налагоджувальних подій для використання у власних наладчиках. 
ЛЗ2. Дослідження та корегування запущених процесів за допомогою налагоджувальних засобів Windows 
СРС. К.

4    тиждень

Л4. Налагоджувальні засоби Windows. Дослідження та корегування запущених процесів за допомогою налагоджувальних засобів Windows
СРС. К.

5    тиждень

Л5. Налагоджувальні засоби Windows. Розгляд базової програми-наладчика
ЛЗ3. Перехват повідомлень Windows за допомогою хуків (початок)
СРС. К.

6    тиждень

Л6. Механізм ловушек (хуків) Windows. Бібліотеки .dll та засоби їх підключення. Механізм перехвату повідомлень. Види та типи хуків. Фільтруючі функції та засоби їх розробки для різних хуків
СРС. К.

7    тиждень

Л7. Хуки Windows для перехвату подій при роботі з вікнами
ЛЗ3. Перехват повідомлень Windows за допомогою хуків (продовження).  

СРС. К.

8    тиждень

Л8. Хуки Windows для перехвату подій від клавіатури та миші
МКР1. СРС. К.

9    тиждень

Л9. Розробка обробників виключень на низькому рівні. Внутрішньо-поточні та фінальні обробники. Структура SEH, ланцюжок SEH 
ЛЗ4. Аналіз поведінки і структури шкідливих програм (початок)
СРС. К.

10    тиждень

Л10. Шкідливі програми та боротьба з ними (початок)
СРС. К.

11    тиждень

Л11. Шкідливі програми та боротьба з ними (продовження)
ЛЗ5. Аналіз поведінки і структури шкідливих програм (продовження)
СРС. К.

12    тиждень

Л12. Архітектура підсистеми введення/виведення Windows. Види драйверів. Програмування драйверів ядра. Засоби установки драйвера в систему. Установка за допомогою диспетчера служб. Налагодження драйверів
СРС. К.

13    тиждень

Л13. Базові механізми Windows. Диспетчеризація переривань (апаратних та програмних), поняття IRQ та IRQL, DPC та APC. Синхронізація, примітиви взаємовиключень в Windows для різних рівнів IRQL: спін-блокіровки, м’ютекси, події-повідомлення
ЛЗ5. Прямий доступ до драйверів ядра з програм користувальницького рівня
 
СРС. К.

14    тиждень

Л14. Драйвери ядра Windows. Драйвери пристроїв.
СРС. К.

15    тиждень

Л15. .inf-файли для вбудовування драйвера в систему на етапі її завантаження 
ЛЗ6. Прямий доступ до драйверів ядра з програм користувальницького рівня 
         (продовження)
МКР2. СРС. К.

Індивідуальна робота 

Виконується РГР. Мета виконання розрахунково-графічної роботи (РГР) складається в закріпленні, поглибленні й розширенні отриманих студентами знань в ході роботи на лекціях та лабораторних заняттях, в оволодінні практичними навичками низькорівневого системного програмування на рівні ядра для ОС Windows.

РГР передбачає розробку драйвера на C, що отримує та передає інформацію з рівня ядра Windows в програму користувача.

12 тиждень

Одержання й уточнення завдання. 

13 тиждень

Розробка програми

14 тиждень

Оформлення пояснювальної записки.

15 тиждень

Захист РГР.

Процедура оцінювання
Модульні контрольні роботи №1 і №2 виконуються у письмовій формі. Максимальна оцінка за бездоганне виконання модульних контрольних робіт становить 30 балів.
Модульні контрольні роботи містять написання програм або їх фрагментів, а також відповіді на запитання. Для модульної контрольної роботи №1 бали по завданням розподіляються наступним чином: максимально – 5, 5, 5, 5, 10 (всього – 30 балів). Для модульної контрольної роботи №2 бали по завданням розподіляються наступним чином: максимально – 4, 4, 4, 9, 9 (всього – 30 балів). 
Якщо відповідь на теоретичне питання правильна та повна, то ставиться максимальний бал; якщо правильна, але неповна, то знімається 1/2 або 1/3 від максимального балу в залежності від ступеня повноти; якщо відповідь невірна, то знімаються всі бали. 
Завдання практичної частини складаються в розробці комп’ютерних програм або їх фрагментів. Якщо студент виконав розрахунок вірно, то він одержує максимальний бал; якщо виконав не весь розрахунок, то знімається 3/4, 1/2 або 1/3 від максимального балу в залежності від ступеня повноти; якщо відповідь невірна, то знімаються всі бали. 

За результатами виконання лабораторних робіт та захисту протоколів студент може отримати до 15 балів за перший модуль та 10 балів за другий модуль, тобто 25 балів за семестр.
За результатами опитувань протягом лабораторних занять студент може отримати до 5 балів за кожний модуль, тобто 10 балів за семестр.
За результатами виконання РГР та захисту протоколів студент може отримати до 5 балів за другий семестр.
Якщо студент виконав лабораторну роботу, РГР  або відповів на опитування бездоганно та своєчасно, то ставиться максимальний бал; якщо правильно, але неповно, то знімається 1/2 або 1/3 від максимального балу в залежності від ступеня повноти; якщо невірно, то знімаються всі бали. 

Максимальна оцінка, яку може отримати здобувач за всі виконані види робіт – 100 балів. 

Підсумковим контролем з дисципліни є залік. Залік виставляється за підсумками модульних контрольних робіт та накопичувальної частини дисципліни

Семестровий модуль № 1
ЛЗ1- ЛЗ3. Оцінка за виконання – 20 балів. Термін виконання – 1-8 тиждень. 
МК1. Модульна контрольна робота – 30 балів (8 тиждень). Перескладання можливе протягом 9–11 тижнів за розкладом консультацій.

Семестровий модуль № 2
ЛЗ5- ЛЗ8. Оцінка за виконання – 15 балів. Термін виконання – 9-15 тиждень. 
МК2. Модульна контрольна робота – 30 балів (14 тиждень).
РГР. Оцінка за виконання – 5 балів. Термін надання 15 тиждень.

Політика освітнього процесу

Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання, відвідувати консультації викладача з метою з’ясування всіх незрозумілих під час самостійної та індивідуальної роботи питань. Такий підхід сприяє формуванню академічної культури та академічної доброчесності, здобуттю навичок самостійної роботи і формування відповідних компетентностей як для успішного навчання на відповідному освітньому рівні, так і для майбутньої професійної діяльності.
Викладач на першому аудиторному занятті надає повну інформацію щодо усіх складових дисципліни, роз’яснює кількісне та якісне наповнення змістовних модулів, рекомендує відповідну фахову літературу, інформує щодо критеріїв оцінювання рівня навчальних досягнень здобувача з усіх видів та форм навчання та термінів контрольних заходів.
Викладач зобов’язаний здійснювати консультації відповідно до затвердженого завідувачем кафедри графіка консультацій.
Всі види завдань, які виконано після встановлених графіком навчального процесу та викладачем термінів вважаються «не зарахованими» та отримують, відповідно, оцінку «0».
Відсутність здобувача на МКР відповідає оцінці «0». Складання/перескладання контрольних робіт відбувається за встановленим деканатом розкладом.
Під час контрольних робіт користуватися телефонами заборонено. Заборонено використання будь-яких літературних джерел, конспектів лекцій, шпаргалок під час проходження модульних контролів з дисципліни.

Документи (файли), що додаються: Робоча програма навчальної дисципліни.

Література

Базова
1. Гагарина Л. Г., Кононова А. И. «Архитектура вычислительных систем и Ассемблер» -СОЛОН-Пресс – 2019 - с. 368.  – Електронний примірник https://obuchalka.org/20190517109423/arhitektura-vichislitelnih-sistem-i...
2. Руссинович М., Соломон Д., Ионеску А. Внутреннее устройство Microsoft Windows. 7-е изд. - Питер Пресс - 2018. — 944 с. – Електронний примірник  https://windows64.net/146-vnutrennee-ustroystvo-windows-russinovich-mark...

Додаткова
3. Windows 10 System Programming, Part 2  by Pavel Yosifovich – Lean Publishing book – 2020 – pp. 229 – Електронний примірник  https://ua1lib.org/g/Pavel%20Yosifovich?order=year
4. Аблязов Р.З. Программирование на ассемблере на платформе x86-64 – ДМК ПРЕС – 2016 - с. 302. – Електронний примірник  https://cdn1.ozone.ru/s3/multimedia-d/6012425305.pdf
5. Windows Kernel Programming by Pavel Yosifovich - Lean Publishing book – 2019 – pp. 392 – Електронний примірник  https://scanlibs.com/windows-kernel-programming-pavel-yosifovich

Методична
6. Методичні вказівки до лабораторних робіт з дисципліни “Системне програмування” для студентів спеціальності 6.050103 / Укл. Рувінська В.М., Жиро Л.С. – Одеса: Одеський національний політехнічний університет, 2017.

2021 рік