System Programming, Part 2

Major: Computer Engineering
Code of subject: 6.123.00.O.045
Credits: 5.00
Department: Electronic Computing Machines
Lecturer: senior lecturer Markhyvka Vasyl Stepanovich
Semester: 5 семестр
Mode of study: денна
Learning outcomes: understand the conceptual foundations of operating systems and requirements for system programs; to know the relationships between system programs and OS modules, basic OS API functions; know the impact of the architecture and hardware of computer systems on the process of creating system programs; understand the features of processors of the Intel64 architecture, their software model, the main data structures of the protected mode of operation; possess the technique of creating multi-module programs using low-level and high-level programming when solving system problems; be able to develop multilingual software modules taking into account the ABI-interface of a specific platform for information search and data transformations in system and application program complexes in order to ensure their functioning in given technical conditions; be able to program a mathematical coprocessor, MMX-, SSE- and AVX-extensions using information about their architecture, command system and features of the organization of calculations; to know the principles and methods of building components of programming systems and be able to create typical elements of programming systems: lexical, syntactic and semantic analyzers; be able to debug system programs in order to find, identify, identify and eliminate errors.
Required prior and related subjects: prerequisites: The organization and operation of computers, Programming, Algorithms and calculation models, System programming part 1; corequisites: Architecture of computers, Software Engineering, System software, Network operating systems.
Summary of the subject: Methods and ways of solving system problems in modern operating systems are considered and practical skills of creating elements of system programs are formed taking into account the architecture of computers; aims to develop in students a clear and systematic understanding of the composition and purpose of programming systems, and also provides a volume of knowledge about the principles and methods of building the main components of programming systems, the basic data structures used in their construction. As a result of studying the course, the student gains knowledge on the following topics: classification and statistics of system programs, software model of Intel64 architecture processors, basics of protected mode operation, organization of memory and protection of program code and data, data structures of protected mode, processing of hardware interrupts, organization relationships with OS modules, programming system tasks using API functions, programming the FPU mathematical coprocessor and MMX, SSE, AVX extensions, organizing intermodule connections in programming languages, using a low-level ABI interface for interaction between system programs and operating system, libraries or other programs; composition and purpose of programming systems, characteristics of components of programming systems, structure and organization of information tables, basic construction methods and algorithms: assemblers, compilers, translators, interpreters, connection editors and loaders, the essence of static and dynamic layout, development and use of dynamic libraries.
Assessment methods and criteria: Written reports on laboratory work, the verbal questioning (30%). Final assessment (control method, exam): written-verbal form (70%).
Recommended books: 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/