Бакалавриат
2021/2022




Системное программирование
Статус:
Курс обязательный (Информационная безопасность)
Направление:
10.03.01. Информационная безопасность
Кто читает:
Департамент электронной инженерии
Когда читается:
3-й курс, 2-4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
5
Контактные часы:
74
Программа дисциплины
Аннотация
Целью изучения дисциплины «системное программирование» является ознакомить студентов с возможностями современных операционных систем в плане предоставляемых ими API: многозадачностью, возможностями синхронизации, эффективного управления виртуальной памятью, межпроцессорного взаимодействия и т.д. Для успешного изучения дисциплины требуется: умение программировать на языке среднего уровня (C/C++), знать архитектуру ЭВМ. Полученные знания могут использоваться при подготовке выпускной квалификационной работы, при продолжении образования и в предстоящей трудовой деятельности.
Цель освоения дисциплины
- Целью дисциплины является формирование компетенций обучающегося в области пограммирования на системном уровне и принципов реализации программ на низкоуровневых и среднеуровневых языках, ознакомление с принципами трансляции исходных программ классическими компиляторами (MinGW и Clang), подготовленных на языках C/С++, и применение полученных знаний для разработки эффективного системного программного обеспечения. В данной дисциплине изучаются основы разработки программного обеспечения, включающего среднеуровневые и низкоуровневые языки программирования, дизассемблирование простых программ, средства межпроцессорного взаимодействия, управление памятью, управление вводом-выводом, многопоточным программам и средствам синхронизации процессов, программирование в операционной среде. В учебном курсе рассматривается разработка программ на среднеуровенвых языках программирование - C/C++ и низкоуровневом языке программирования - Ассемблере (архитектура ARM и x86/x64).
Планируемые результаты обучения
- Иметь представление в области разработки программного обеспечения для киберфизических систем, архитектуре многопоточных программ, параллельных алгоритмах, процессах и потоках, множественному доступу к разделяемым ресурсам, архитектуре многопоточной программы
- Иметь представление в области разработки программного обеспечения для киберфизических систем, реализации языков программирования, методы работы с интерактивным дизассемблером и специализированным программным обеспечением для изучения работы исполняемых файлов
- Иметь представление в области разработки программного обеспечения для киберфизических систем, реализации языков программирования, общую характеристику языков ассемблера: назначение, принципы построения и использования; структура языка
- Иметь представления об: инструментах создания параллельных программ; основные типы ошибок и проблем в параллельных программах; инструменты отладки параллельных программ. Изучить: инструменты создания и отладки многопоточных программ
- Студент должен по результатам обучения создавать эффективные параллельные программы; находить и исправлять ошибки и проблемы в многопоточных программах.
Содержание учебной дисциплины
- Средства синхронизации и взаимодействия в многопоточных программах
- Средства межпроцессного взаимодействия
- Низкоуровневые языки программирования
- Многопоточное программирование
- Дизассемблирование программ
Промежуточная аттестация
- 2021/2022 учебный год 4 модуль0.4 экзамен + 0.4 практические занятия + 0.2 индивидуальные и\или домашние задания
Список литературы
Рекомендуемая основная литература
- Аблязов, Р. З. Программирование на ассемблере на платформе x86-64 / Р. З. Аблязов. — Москва : ДМК Пресс, 2011. — 304 с. — ISBN 978-5-94074-676-8. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1273 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Архитектура компьютера, Таненбаум, Э., 2014
- Ассемблер и дизассемблирование, Пирогов, В. Ю., 2007
- Жуков А. В. Ассемблер / А.В. Жуков, А.А. Авдохин. - Санкт-Петербург : БХВ-Петербург, 2002. - 448 с. - ISBN 5-94157-133-X. - URL: https://ibooks.ru/bookshelf/356812/reading (дата обращения: 12.10.2020). - Текст: электронный.
- Калашников О. Ассемблер — это просто. Учимся программировать. 2 изд. / О. Калашников. - Санкт-Петербург : БХВ-Петербург, 2014. - 336 с. - ISBN 978-5-9775-2170-3. - URL: https://ibooks.ru/bookshelf/22669/reading (дата обращения: 12.10.2020). - Текст: электронный.
- Липпман, С. Язык программирования С++. Полное руководство : руководство / С. Липпман, Ж. Лажойе. — 3-е изд. — Москва : ДМК Пресс, 2006. — 1105 с. — ISBN 5-94074-040-5. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1216 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Максимов А.В. - Оптимальное проектирование ассемблерных программ математических алгоритмов: теория, инженерные методы - Издательство "Лань" - 2016 - 192с. - ISBN: 978-5-8114-2150-3 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/87583
- Многоуровневая организация ЭВМ, Таненбаум, Э., 1979
- Таненбаум Э. Архитектура компьютера 6-е изд. / Э. Таненбаум, Т. Остин. - Санкт-Петербург : Питер, 2020. - 816 с. - ISBN 978-5-4461-1103-9. - URL: https://ibooks.ru/bookshelf/361850/reading (дата обращения: 12.10.2020). - Текст: электронный.
- Энтони, У. Параллельное программирование на C++ в действии. Практика разработки многопоточных программ : учебное пособие / У. Энтони ; перевод с английского А. А. Слинкин. — Москва : ДМК Пресс, 2012. — 672 с. — ISBN 978-5-94074-448-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/4813 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Язык Ассемблера для процессоров Intel, Ирвин, Кип Р., 2005