Программа спецкурса «Системное программирование»

Подольская Н.А.

 

 

Данный спецкурс посвящен рассмотрению широкого спектра вопросов, связанных с низкоуровневым (low level) программированием.

Подробно изучаются теоретические основы системного программирования.

Большое внимание уделяется архитектуре микропроцессоров на примере распространенных процессоров ARM, Pentium и др.

Изучается устройство операционных систем. В качестве основного объекта изучения операционных систем взята ОС Linux. Некоторые из задач (например, разработка драйверов устройств) решаются также применительно к ОС Windows.

 

 

1. Введение

2. Архитектура процессоров

 

1. Операционное устройство:

- арифметико-логическое устройство;

- устройство управления;

- регистры.

2. Шинный интерфейс:

- устройство управления шиной;

- очередь команд;

- сегментные регистры.

Набор команд процессора.

Процесс выполнения команд.

Сравнительное изучение RISC и CISC архитектур.

Принципы разработки современных процессоров.

 

3. Память

 

Адреса памяти. Порядок байтов.

Код с исправлением ошибок. Алгоритм Хэмминга.

Типы физической памяти: ROM, RAM.

Виды RAM: SDRAM, SRAM, FLASH.

Программирование FLASH-памяти. Флэш-загрузчики.

Кэш-память.

 

3. Команды процессора

 

Набор команд процессора. Формат команды. Типы команд.

Сравнительный анализ наборов команд процессоров ARM, Pentium.

 

5. Сопроцессор

 

Команды сопроцессора, программирование кэш-памяти.

 

6. Прерывания

 

Ловушки, прерывания. Типы прерываний, вектора прерываний.

Уровни (приоритеты) прерываний.

Контроллер прерываний.

Обработка прерывания, выход из прерывания.

Маскирование прерываний.

 

7. Потоки

 

Управление потоками. Средства синхронизации потоков: флаги, семафоры, критические секции, мьютексы, события.

 

8. Операционные системы

 

Устройство операционной системы, ее функции.

Сравнительный анализ операционных систем UNIX и Windows NT.

Ядро операционной системы Linux.

Embedded Linux.

 

9. Виртуальная память

 

Устройство виртуальной памяти, таблица отображения страниц. Управление виртуальной памятью. Стратегии выталкивания страниц.

 

10. Файловые системы

 

Файлы. Управление файловой системой. Типы файловых систем.

Файловая система UNIX.

Устройство файловых систем Windows: NTFS, FAT.

 

11. Управление процессами

 

Создание процесса. Завершение и прекращение выполнения процессов.

Управление процессами в UNIX и Windows NT.

 

12. Язык ассемблера

 

Формат оператора. Директивы. Макросы.

Процесс ассемблирования.

Таблицы символов.

Связывание и загрузка.

 

13. Программные модули

 

Типы программных модулей.

Объектные модули.

Загружаемые модули.

Динамическое связывание.

Форматы программных модулей, основные разделы.

Форматы загружаемых модулей: ELF, DWARF и др.

 

14. Внешние устройства

 

Типы внешних устройств.

PCI. Адресное пространство, конфигурация, ввод/вывод, окно адресации.

Драйвера.

Разработка драйверов для Windows и Linux.

 

 

Список литературы

 

- Таненбаум Э. Архитектура компьютера. – Питер, 2003

- Джонсон М. Харт «Системное программирование в среде Microsoft Windows». Москва, Вильямс, 2005

- С. К. Фельдман «Системное программирование. Полный курс лекций с теоретическими материалами и лабораторными работами.», 2003

- Дейтел Г. Введение в операционные системы. – М.: Мир, 1987 (http://www.msiu.ru/~kaw25/resources/C/Daitel/)

- Бек Л. Введение в системное программирование. – М.: Мир, 1988