Системное программное обеспечение
- Системные программы, их классификация (системы программирования, операционные системы, обслуживающие программы). Функции операционных систем.
- История развития операционных систем.
- Ядро операционной системы. Функции ядра. Объекты ядра. Объекты ядра на примере ОС Windows. Микроядро.
- Методы вызова системных функций ядра в различных ОС.
- Языки и средства программирования различных уровней (язык машинных кодов, ассемблер, интерпретатор, компилятор, оптимизирующий компилятор), их особенности, примеры использования.
- Языки и средства программирования различных уровней (редактор связей, загрузчик, отладчик, языки сценариев и визуального программирования), их особенности, примеры использования.
- Этапы проектирования и выполнения программ.
- Процессы и потоки управления (thread). Состояния процессов и потоков (выполнение, готовность, блокировка, приостановка). Статические и динамические приоритеты потоков.
- Операции над процессами и потоками. Родительские и дочерние процессы. Наследование объектов ядра.
- Параллельные процессы (потоки). Независимые и асинхронные процессы (потоки). Разделяемые данные. Критические участки.
- Предотвращение конфликтов между процессами (потоками), взаимоисключение критических участков. Реализация примитивов взаимоисключения (алгоритм Деккера, семафоры).
- Средства синхронизации потоков в ОС Windows (критические секции, мьютексы, семафоры, события).
- Тупики (dead lock) и способы борьбы с ними. Примеры тупиковых ситуаций. Четыре необходимых условия возникновения тупика. Предотвращение тупиков.
- Обход тупиков, алгоритм банкира. Обнаружение тупиков и восстановление системы.
- Планирование загрузки процессоров. Три уровня планирования. Цели и критерии планирования.
- Дисциплины планирования с переключением потоков (вытесняющая многозадачность). Проблема выбора длительности кванта.
- Явный и неявный параллелизм программ. Методы автоматического распараллеливания программ. Мультипроцессорные ОС.
- Управление основной (оперативной) памятью. Стратегии выборки и размещения блоков памяти. Связное и несвязное распределение памяти. Защита памяти.
- Страничная организация виртуальной памяти. Отображение страниц. Динамическое преобразование адреса (упрощенная схема). Защита страниц. Проблема выбора размера страниц.
- Сегментная организация виртуальной памяти. Защита сегментов. Смешанная (странично-сегментная) организация виртуальной памяти.
- Управление виртуальной памятью. Свойство локальности программ. Стратегии выборки, размещения и замещения страниц. Файл временного хранения страниц.
- Обработка прерываний. Контекст процесса (потока). Особенности операционных систем реального времени.
- Назначение и функции базовой системы ввода/вывода BIOS, ее место по отношению к аппаратуре, операционной системе и прикладным программам.
- Управление внешней памятью. Планирование работы с жестким диском. Критерии планирования. Методы уменьшения времени доступа к данным при обращении к последовательным секторам.
- Стратегии оптимизации поиска цилиндра жесткого диска при произвольном обращении.
- Файловая система и ее функции. Буферизация ввода-вывода. Потоки ввода-вывода (stream). Стандартный ввод-вывод. Представление устройств в виде файлов.
- Связное и несвязное размещение файлов на диске. Несвязное размещение файлов на примере файловой системы FAT.
- Системы баз данных. Модели БД: иерархическая, сетевая, реляционная.
- RAID-массивы.