Системное программное обеспечение


  1. Системные программы, их классификация (системы программирования, операционные системы, обслуживающие программы). Функции операционных систем.
  2. История развития операционных систем.
  3. Ядро операционной системы. Функции ядра. Объекты ядра. Объекты ядра на примере ОС Windows. Микроядро.
  4. Методы вызова системных функций ядра в различных ОС.
  5. Языки и средства программирования различных уровней (язык машинных кодов, ассемблер, интерпретатор, компилятор, оптимизирующий компилятор), их особенности, примеры использования.
  6. Языки и средства программирования различных уровней (редактор связей, загрузчик, отладчик, языки сценариев и визуального программирования), их особенности, примеры использования.
  7. Этапы проектирования и выполнения программ.
  8. Процессы и потоки управления (thread). Состояния процессов и потоков (выполнение, готовность, блокировка, приостановка). Статические и динамические приоритеты потоков.
  9. Операции над процессами и потоками. Родительские и дочерние процессы. Наследование объектов ядра.
  10. Параллельные процессы (потоки). Независимые и асинхронные процессы (потоки). Разделяемые данные. Критические участки.
  11. Предотвращение конфликтов между процессами (потоками), взаимоисключение критических участков. Реализация примитивов взаимоисключения (алгоритм Деккера, семафоры).
  12. Средства синхронизации потоков в ОС Windows (критические секции, мьютексы, семафоры, события).
  13. Тупики (dead lock) и способы борьбы с ними. Примеры тупиковых ситуаций. Четыре необходимых условия возникновения тупика. Предотвращение тупиков.
  14. Обход тупиков, алгоритм банкира. Обнаружение тупиков и восстановление системы.
  15. Планирование загрузки процессоров. Три уровня планирования. Цели и критерии планирования.
  16. Дисциплины планирования с переключением потоков (вытесняющая многозадачность). Проблема выбора длительности кванта.
  17. Явный и неявный параллелизм программ. Методы автоматического распараллеливания программ. Мультипроцессорные ОС.
  18. Управление основной (оперативной) памятью. Стратегии выборки и размещения блоков памяти. Связное и несвязное распределение памяти. Защита памяти.
  19. Страничная организация виртуальной памяти. Отображение страниц. Динамическое преобразование адреса (упрощенная схема). Защита страниц. Проблема выбора размера страниц.
  20. Сегментная организация виртуальной памяти. Защита сегментов. Смешанная (странично-сегментная) организация виртуальной памяти.
  21. Управление виртуальной памятью. Свойство локальности программ. Стратегии выборки, размещения и замещения страниц. Файл временного хранения страниц.
  22. Обработка прерываний. Контекст процесса (потока). Особенности операционных систем реального времени.
  23. Назначение и функции базовой системы ввода/вывода BIOS, ее место по отношению к аппаратуре, операционной системе и прикладным программам.
  24. Управление внешней памятью. Планирование работы с жестким диском. Критерии планирования. Методы уменьшения времени доступа к данным при обращении к последовательным секторам.
  25. Стратегии оптимизации поиска цилиндра жесткого диска при произвольном обращении.
  26. Файловая система и ее функции. Буферизация ввода-вывода. Потоки ввода-вывода (stream). Стандартный ввод-вывод. Представление устройств в виде файлов.
  27. Связное и несвязное размещение файлов на диске. Несвязное размещение файлов на примере файловой системы FAT.
  28. Системы баз данных. Модели БД: иерархическая, сетевая, реляционная.
  29. RAID-массивы.