Подольская Н.А.
Данный спецкурс посвящен рассмотрению широкого спектра вопросов, связанных с низкоуровневым (low level) программированием.
Подробно изучаются теоретические основы системного программирования.
Большое внимание уделяется архитектуре микропроцессоров на примере распространенных процессоров ARM, Pentium и др.
Изучается устройство операционных систем. В качестве основного объекта изучения операционных систем взята ОС Linux. Некоторые из задач (например, разработка драйверов устройств) решаются также применительно к ОС Windows.
1. Операционное устройство:
- арифметико-логическое устройство;
- устройство управления;
- регистры.
2. Шинный интерфейс:
- устройство управления шиной;
- очередь команд;
- сегментные регистры.
Набор команд процессора.
Процесс выполнения команд.
Сравнительное изучение RISC и CISC архитектур.
Принципы разработки современных процессоров.
Адреса памяти. Порядок байтов.
Код с исправлением ошибок. Алгоритм Хэмминга.
Типы физической памяти: ROM, RAM.
Виды RAM: SDRAM, SRAM, FLASH.
Программирование FLASH-памяти. Флэш-загрузчики.
Кэш-память.
Набор команд процессора. Формат команды. Типы команд.
Сравнительный анализ наборов команд процессоров ARM, Pentium.
Команды сопроцессора, программирование кэш-памяти.
Ловушки, прерывания. Типы прерываний, вектора прерываний.
Уровни (приоритеты) прерываний.
Контроллер прерываний.
Обработка прерывания, выход из прерывания.
Маскирование прерываний.
Управление потоками. Средства синхронизации потоков: флаги, семафоры, критические секции, мьютексы, события.
Устройство операционной системы, ее функции.
Сравнительный анализ операционных систем UNIX и Windows NT.
Ядро операционной системы Linux.
Embedded
Linux.
Устройство виртуальной памяти, таблица отображения страниц. Управление виртуальной памятью. Стратегии выталкивания страниц.
Файлы. Управление файловой системой. Типы файловых систем.
Файловая система UNIX.
Устройство файловых систем Windows: NTFS, FAT.
Создание процесса. Завершение и прекращение выполнения
процессов.
Управление процессами в UNIX и Windows NT.
Формат оператора. Директивы. Макросы.
Процесс ассемблирования.
Таблицы символов.
Связывание и загрузка.
Типы программных модулей.
Объектные модули.
Загружаемые модули.
Динамическое связывание.
Форматы программных модулей, основные разделы.
Форматы загружаемых модулей: ELF, DWARF и др.
Типы внешних устройств.
PCI. Адресное пространство, конфигурация, ввод/вывод, окно адресации.
Драйвера.
Разработка драйверов для Windows и Linux.
- Таненбаум Э. Архитектура компьютера. – Питер, 2003
- Джонсон М. Харт «Системное программирование в среде
Microsoft Windows». Москва, Вильямс, 2005
- С. К. Фельдман «Системное программирование. Полный курс лекций с теоретическими материалами и лабораторными работами.», 2003
- Дейтел Г. Введение в операционные системы. – М.: Мир, 1987 (http://www.msiu.ru/~kaw25/resources/C/Daitel/)
- Бек Л. Введение в системное программирование. – М.: Мир, 1988