• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Введение в инженерию программного обеспечения

Преподаватель: Бобылев И.В.

Модуль: 1-2

Кредиты: 2

Аннотация:

Семинарский курс. Курс дает базовое представление об устройстве компьютера, в частности процессора и памяти. Описывается устройство и структура программ с инженерной точки зрения (структура процесса, потока, расположение в памяти, особенности работы с процессором при вызове функций, и т. п.). Рассматривается внутренняя реализация таких возможностей современных языков программирования как наследование и исключения (на примере С++). Отдельное внимание уделяется аппаратной реализации многопоточной обработки данных. Цель курса: сформировать представление о низкоуровневом устройстве основных составляющих программ, а также о самом процессе вычислений.


План занятий:

  1. Устройство вычислительных систем
    Общее устройство процессора. Примитивные типы данных (x86 с xmm). Регистры процессора. ALU, FPU. SSE. Обращение к памяти. Кэш. Общие замечания о представлении данных: дополнительный код, октеты. Размеры. Знаковость. Конвертация между примитивными типами данных. Модели типов данных: ILP32, LP64, P64. Выравнивание типов данных. Endian. Квалификаторы типов данных: const, volatile. Архитектуры вычислительных систем. Основные понятия. Архитектура платформы. Классификация. SMP/ccNUMA. Инициализация платформы.

  2. Устройство программы
    Cтек. Куча. Процесс. Память процесса. Выполняемые файлы. Секции. Свойства секций. Поток. Стек потока. Сравнение потока и процесса. Переменные. Локальная переменная (стек/регистр). Параметр функции (стек/регистр). Статическая переменная (внутри функции). Размещение переменных. Scope переменной. Глобальная переменная. Thread local storage. Кодогенерация доступа к переменной. Инициализация и завершение программы. Что делает стандартная библиотека. Инициализация объектов (в том числе и неавтоматических). ABI. Стековый фрейм. Передача параметров функциям. Возврат значений из функций. Передача структур по значению. Возврат структур по значению. Функции с переменным числом параметров. Указатели(I). Размер указателей. Сегментация. Сегментные указатели. Размещение данных в сегментах. Модели памяти. Размеры простых указателей на код и данные. Операции над указателями. Невыровненные указатели. Базовые указатели. Знаковые и беззнаковые указатели. Квалификаторы: const, volatile, restrict. Структуры. Выравнивание. Padding. Endian. POD. Битовые поля. Как работают с битовыми полями. Endian битовых полей. Padding битовых полей.

  3. Параллельные вычисления
    Суперскалярность. Параллельность и многопоточность: базовые понятия. Синхронизация. Проблемы синхронизации. Условная синхронизация. Взаимные исключения. Общие понятия: Mutex/Lock/Semaphore. Атомарные операции. Spin/Waitable. Ticket-lock. RW-lock. Гарантии примитивов синхронизации. Взаимное исключение, голодание, честность. Требования к многопоточным и параллельным структурам данных. Пример стека (Трайбера). Ключевое слово mutable. Реализация взаимных исключений (как hardware решает вопросы взаимных исключений). Модели упорядочивания памяти. Способы реализации поддержки гарантий: Store/Load- Store/Load-fence, memfence, acquire, release fence’ы. Основные типы атомарных операций в hardware. CAS, LL/SC. LOCK префикс(x86). Кэш. Организация(гистограммы для кэшй). Консистентность и когерентность. Протоколы состояния cache. Команды управления кэшом. Связь с барьерами памяти.

  4. Рассмотрение особенностей C++
    Наследование. Раскладка классов. Empty base optimisation. Виртуальное наследование. RTTI. Исключения. Сложность. Разворачивание стека, сохранение необходимой доп. информации. SEH.

Формула оценки: Оценка = Оценка за устный экзамен


Программа учебной дисциплины: 

ПУД_Введение в инженерию ПО (HTML, 29 Кб) 


Для кого:
В первую очередь до факультатива допускаются студенты специализации “Промышленная инженерия ПО”, при наличии свободных мест - все студенты ФКН.
Пререквизитов нет, желательно базовое знание языка программирования С++.

Расписание: суббота 18:10-21:00 с 27 сентября (онлайн)