Системне програмування, частина 2
Спеціальність: Комп'ютерна інженерія
Код дисципліни: 6.123.00.O.045
Кількість кредитів: 5.00
Кафедра: Електронні обчислювальні машини
Лектор: ст. викладач Мархивка Василь Степанович
Семестр: 5 семестр
Форма навчання: денна
Результати навчання: розуміти концептуальні основи функціонування операційних систем та вимоги до системних програм;
знати взаємозв’язки системних програм з модулями ОС, базові функції API ОС;
знати вплив архітектури та апаратного забезпечення комп’ютерних систем на процес створення системних програм;
розуміти особливості процесорів архітектури Intel64, їх програмну модель, основні структури даних захищеного режиму роботи;
володіти методикою створення багатомодульних програм з використанням низькорівневого і високорівневого програмування при вирішення системних задач;
уміти розробляти різномовні програмні модулі з врахування ABI-інтерфейсу конкретної платформи для інформаційного пошуку та перетворень даних у комплексах системних та прикладних програм з метою забезпечення їх функціонування в заданих технічних умовах;
уміти програмувати математичний співпроцесор, MMX-, SSE- та AVX-розширення використовуючи інформацію про їх архітектуру, систему команд та особливості організації обчислень;
знати принципи та методи побудови компонент систем програмування і вміти створювати типові елементи систем програмування: лексичний, синтаксичний та семантичний аналізатори;
уміти виконувати відлагодження системних програм з метою пошуку, ідентифікації, виявлення та усунення помилок.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: попередні: Основи організації та функціонування комп’ютерів, Програмування, Алгоритми та моделі обчислень, Системне програмування частина 1;
супутні: Архітектура комп'ютерів, Інженерія програмного забезпечення, Системне програмне забезпечення, Мережні операційні системи.
Короткий зміст навчальної програми: Розглядаються методи і способи вирішення системних задач в сучасних операційних системах і формуються практичні навички створення елементів системних програм з врахуванням архітектури комп’ютерів; ставить на меті виробити у студентів чітке та систематизоване уявлення про склад і призначення систем програмування, а також надає обсяг знань про принципи та способи побудови основних компонент систем програмування, базові структури даних, що використовуються при їх побудові.
В результаті вивчення курсу студент отримує знання з таких тем: класифікація і статистика роботи системних програм, програмна модель процесорів архітектури Intel64, основи роботи захищеного режиму, організація пам’яті і захисту коду програм та даних, структури даних захищеного режиму, опрацювання апаратних переривань, організація взаємозв’язків з модулями ОС, програмування системних задач за допомогою API-функцій, програмування математичного співпроцесора FPU та MMX-, SSE-, AVX-розширень, організація міжмодульних зв’язків в мовах програмування, використання низькорівневого ABI-інтерфейсу для взаємодії між системною програмою та операційною системою, бібліотеками або іншими програмами; склад та призначення систем програмування, характеристика компонентів систем програмування, структури та організація інформаційних таблиць, базові методи та алгоритми побудови: асемблерів, компіляторів, трансляторів, інтерпретаторів, редакторів зв’язків та завантажувачів, сутність статичного та динамічного компонування, розробка та використання динамічних бібліотек.
Методи та критерії оцінювання: Письмові звіти з лабораторних робіт, усне опитування (30%).
Підсумковий контроль (70 %, контрольних захід, екзамен): письмово-усна форма (70%).
Рекомендована література: 1. Рисований О.М. Системне програмування: підручник для студентів напрямку “Комп’ютерна інженерія” вищих навчальних закладів в 2-х томах. Том 1. – Видання четверте: виправлено та доповнено – Х.: “Слово”, 2015. – 576 с.
2. Тонкошкур О.С, Гниленко, О.Б, Матвєєва Н.О, Морозов О.С. Архітектура комп’ютерів. Машинні команди та програмування на асемблері: навчальний посібник - Д.: Вид-во «Нова Ідеологія», 2018, 179 с.
3. Daniel Kusswurm. Modern X86 Assembly Language Programming: Covers x86 64-bit, AVX, AVX2, and AVX-512. - ISBN-13 (eBook), 2018. - 617 с. –URL: https://doi.org/10.1007/978-1-4842-4063-2
4. William Stallings, Operating Systems: Internals and Design Principles, 9th Edition, Pearson, 2017. - 800 p.
5. Системне програмування. Системні сервiсні компоненти.. Навч. посібник/ Дерев'янко О. С., Межерицький С. Г., Гавриленко С. Ю., Клименко А. М. - Харків: НТУ "ХПІ", 2009. - 160 с.
6. Ахо, Альфред В., Лам, Моника С., Сети, Рави, Ульман, Джеффри Д. Компиляторы: принципы, технологии и инструментарий, 2 е изд. : Пер. с англ. – М. : ООО “И.Д. Вильямс”, 2018. – 1184 с.
7. Свердлов С.З. Конструирование компиляторов: уч. пособие. – Германия: Издательство: LAMBERT Academic Publishing, 2015. – 575 с.
8. Intel® 64 and IA-32 Architectures Software Developer’s Manual: URL: https://www.intel.com/ content/www/us/en/homepage.html
9. AMD64 Architecture Programmer’s Manual: URL: https://developer.amd.com/resources/ developer-guides-manuals/