- •Вопрос 1. Типы задач. Виды програмирования: последовательное, параллельное, для систем рв.
- •Вопрос 2. Виды ресурсов: аппаратные, программные, активные, пассивные, локальные, разделяемые, постоянные, временные, не критичные, критичные.
- •Вопрос 3. Типы архитектур осрв. Объектная архитектура на основе объектов-микроядер. Сравнение микроядер и модулей, драйверов, dll.
- •Вопрос 4. Типы архитектур осрв. Модульная архитектура (на основе микроядер).
- •Вопрос 5. Поддержка многозадачности и многопроцессорности специальными инструкциями.
- •Вопрос 6. Основные области применения осрв. Тенденции использования и перспективы развития осрв.
- •Вопрос 7. Приоритеты. Схемы назначения приоритетов. Инверсия приоритетов и методы борьбы с ней.
- •Вопрос 8. Алгоритмы замены данных в кэш памяти. Специальные кэШи.
- •Вопрос 9.Cisc и risc процессоры.
- •Вопрос 10. Процессоры arm. Общий обзор.
- •Вопрос 11. Повышение производительности процессоров за счет конвейеризации. Условия оптимального функционирования конвейера.
- •Вопрос 12. Особенности оборудования, на котором работают осрв. “Обычные” и промышленные компьютеры, встраиваемые системы.
- •Вопрос 13. Многопроцессорные архитектуры.
- •Вопрос 14. Повышение производительности процессов за счет введения кэш памяти. Кэши: единый, Гарвардский, с прямой записью, с обратной.
- •Вопрос 15.
- •Вопрос 16. Определения основных объектов ос. Механизмы взаимодействия процессов. Разделяемая память, семафоры, сигналы, почтовые ящики, события.
- •Вопрос 17. Адаптация WindowsNt к требованиям “реального времени”. Обзор программного комплекса ComponentIntegrator.
- •Вопрос 19. Адаптация WindowsNt к требованиям “реального времени”. Обзор программного комплекса WillowsRt.
- •Вопрос 20. “Классические” осрв. Обзор chorus.
- •Вопрос 21. Процессоры PowerPc. Общий обзор.
- •Вопрос 22. Процессоры Intel80x86. Общий обзор.
- •Вопрос 23. Суперконвейерные и суперскалярные процессоры. Выделение независимо работающих устройств: iu. Fpu. Mmu. Bu.
- •Вопрос 24. Определения основных объектов ос. Связывание. Статическое и динамическое связывание.
- •Вопрос 25. Определения основных объектов ос. Стек, виртуальная память, механизмы трансляции адреса.
- •Вопрос 26. Адаптация WindowsNt к требованиям “реального времени”. Обзор программного комплекса RealTimeEtsKernel.
- •Вопрос 27. Аргументы “за” и ”против” использования WindowsNt в качестве осрв.
- •Вопрос 28. Адаптация WindowsNt к требованиям “реального времени”. Обзор программного комплекса lprt-Technology.
- •Вопрос 29. Архитектура системной шины. Роль шины для осрв. Архитектура шины vme.
- •Вопрос 30. Адаптация Windows nt к требованиям “реального времени”. Обзор программного комплекса Hyperkernel.
- •Вопрос 31. Определения основных объектов ос. Задачи. Сравнение с процессами.
- •Вопрос 32. “Классические” осрв. Обзор qnx.
- •Вопрос 33. Стандарты на осрв. Стандарт posix 1003.1b. Стандартизация основных api, утилит, расширений “реального времени”. Стандартизация задач.
- •Вопрос 34. Классические и ооп к построению осрв.
- •Вопрос 35. Процессоры Motorola 68xxx. Общий обзор.
- •Вопрос 36. Общее строение рв. Роли отдельных компонент. Критерий выбора осрв.
- •Вопрос 37. “Классические” осрв. Обзор осрв LynxOs.
- •Вопрос 39. Состояния процесса и механизмы перехода из одного состояния в другое.
- •Вопрос 40. Типы взаимодействия процессов: сотрудничающие и конкурирующие процессы. Критические секции, взаимное исключение процессов.
- •Вопрос 41. Объектно-ориентированные осрв. Обзор осрв SoftKernel.
- •Вопрос 42. Стандарты на осрв. Их роль в развитии осрв. Нормы esse консорциума vita.
- •Вопрос 43. Типы архитектур осрв. Объектная архитектура на основе объектов-микроядер. Основные принципы построения.
- •Вопрос 44. Процессоры sparc. Общий обзор.
- •Вопрос 45. Определения основных объектов ос. Ресурсы, приоритеты. Параллельные процессы. Многозадачные ос.
- •Вопрос 47. Согласование кэШей в мультипроцессорных системах.
- •Вопрос 48. Влияние требований рв на выбор архитектуры процессора.
- •Вопрос 50. Типичные времена реакции на внешние события в управляемых осрв прцессах. Их влияние на программное и аппаратное устройство вычислительной системы.
- •Вопрос 51. Среды разработки для осрв, основные требования к ним.
- •Вопрос 52. Типы архитектур осрв. Монолитная архитектура.
- •Вопрос 54. Проблемы, возникающие при синхронизации задач и идеи их разрешения.
- •Вопрос 55. Основные черты risc архитектуры.
- •Вопрос 56. Определения основных объектов ос. Программа, процессор, процесс. Основные составляющие процесса, состояния процесса.
- •Вопрос 57. Системы на основе Linux. Направления адаптации Linux к требованиям “реального времени”. Обзор осрв rt-Linux.
- •Вопрос 58. Синхронизация и взаимодействие процессов. События. Примитивные операции.
- •Вопрос 59. Процессоры Intel 80960x. Общий обзор.
Вопрос 3. Типы архитектур осрв. Объектная архитектура на основе объектов-микроядер. Сравнение микроядер и модулей, драйверов, dll.
Микроядра по своим характеристикам напоминают структуры, используемые в других операционных системах, однако есть и свои различия.
1) Микроядра и модули. Многие ОС поддерживают динамическую загрузку компонент системы, называемых модулями. Однако, модули не поддерживают объектно-ориентированный подход (напомним, микроядро является фактически представителем некоторого класса). Далее, обмен информацией с модулями происходит посредством системных вызовов, что достаточно дорого.
2) Микроядра и драйверы. Многие ОС поддерживают возможность своего расширения посредством драйверов (специальных модулей, обычно служащих для поддержки оборудования). Однако, драйверы часто должны быть статически связаны с ядром (т.е. образовывать с ним связанный загрузочный образ еще до загрузки) и должны работать в привилегированном (суперпользовательском) режиме. Далее, как и модули, они не поддерживают объектно-ориентированный подход и доступны приложениям только посредством системных вызовов.
3) Микроядра и DLL (Dynamically Linked Libraries, динамическисвязываемыебиблиотеки). Многие системы оформляют библиотеки, из которых берутся функции при динамическом связывании, в виде специальных модулей, называемых DLL. DLLобеспечивает разделение своего кода и данных для всех работающих приложений, в то время, как для микроядер можно управлять доступом для каждого конкретного приложения. DLL не поддерживает объектно-ориентированный подход, код DLL не является позиционно-независимым, и потому не может быть записан в ПЗУ.
Вопрос 4. Типы архитектур осрв. Модульная архитектура (на основе микроядер).
Модульная архитектура появилась как попытка убрать узкое место - API и облегчить модернизацию системы и перенос ее на новые процессоры.
API в модульной архитектуре играет только одну роль: обеспечивает связь прикладных процессов и специального модуля - менеджера процессов. Однако, теперь микроядро играет двойную роль:
1. управление взаимодействием частей системы (например, менеджеров процессов и файлов),
2. обеспечение непрерывности выполнения кода системы (т.е. отсутствие переключения задач во время исполнения микроядра).
Недостатки модульной архитектуры фактически те же, что и у монолитной. Проблемы перешли с уровня API на уровень микроядра. Системный интерфейс по-прежнему не допускает переключения задач во время работы микроядра, только сократилось время пребывания в этом состоянии. API по-прежнему может быть реализован только на ассемблере, проблемы с переносимостью микроядра уменьшились (в связи с сокращением его размера), но остались.
Вопрос 5. Поддержка многозадачности и многопроцессорности специальными инструкциями.
В современных процессорах поддержка многозадачности и многопроцессорности не ограничивается аппаратной частью (вроде рассмотренного выше механизма синхронизации кэшей). Для организации доступа к критическим разделяемым ресурсам необходимо в наборе инструкций процессора предусмотреть специальные инструкции, обеспечивающие доступ к объектам синхронизации. Действительно, сами объекты синхронизации являются разделяемыми, а для обеспечения правильного доступа к разделяемым объектам необходимо вводить объекты синхронизации, которые в свою очередь тоже являются разделяемыми и т.д. Для выхода из этого замкнутого круга определяют некоторые "примитивные" объекты синхронизации, к которым возможен одновременный доступ нескольких задач или процессоров за счет использования специальных инструкций доступа.
Рассмотрим более подробно случай булевского семафора. Задача или процессор, собирающийся взять управление разделяемым ресурсом, начинают с чтения значения семафора. Если он обнулен, то задача или процессор должны ждать, пока ресурс станет доступным. Если семафор установлен в 1, то задача или процессор немедленно его обнуляют, чтобы показать, что контролируют ресурс. В процессе изменения семафора можно выделить три фазы: чтение, изменение, запись. Если на стадии чтения возникнет переключение задач или другой процессор станет главным на шине, то может возникнуть ошибка, так как две задачи или два процессора контролируют один и тот же ресурс. Аналогично, если переключение контекста произойдет между циклом чтения и записи, то два процесса могут взять семафор, что тоже приведет к системной ошибке. Для решения этой проблемы большинство процессоров имеют инструкцию, выполняющую неделимый цикл чтение - изменение - запись. Поскольку это одна инструкция, то переключение задач во время операции с семафором невозможно. Так как она производит неделимый цикл, то процессор, ее выполняющий, остается владельцем шины до окончания операции с семафором.