Экзаменационные вопросы¶
- Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? Какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта POSIX? Опишите их.
- Что такое ядро ОС? Какие особенности его работы по сравнению с другими программами? Какие архитектуры ОС по реализации ядра бывают? В чем их преимущества и недостатки?
- Какие принципиальные отличия языка Ассемблера от высокоуровневых языков программирования? Что такое байткод? В чем разнца между языком Ассемблера и байткодом?
- Приведите примеры форматов исполняемых файлов и кратко охарактеризуйте их. Подробно формат ELF.
- Из каких этапов состоит создание исполняемой программы из исходного кода? Опишите их суть. Для языков C++, Java и Python перечислите этапы создания программы, которые имеют место в реальности и укажите, в какое время они происходят. Для каких сред исполнения может создаваться программа?
- Перечислите этапы загрузки компьютера от включения питания до активизации GUI или CLI ОС. Охарактеризуйте роль каждого из них.
- Что такое процесс ОС? Чем он отличается от программы? Что такое нить? Какие есть подходы к созданию многонитевых (многопоточных программ)? Что такой фибр, в чем его отличие от нити?
- Опишите жизненный цикл процесса. Назовите требования к алгоритмам планирования процессов.
- Перечислите основные алгоритмы планирования процессов. Сформулируйте алгоритм “Карусель” (Round Robin) и охарактеризуйте его. Приведите простой пример. В каких системах он может применяться на практике?
- Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Очередь” (FIFO). Приведите простой пример. В каких системах он может применяться на практике?
- Перечислите алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Многоуровневые очереди с обратной связью”. Приведите простой пример. В чем его преимущества и недостатки по сравнению с алгоритмом “Очередь” (FIFO)?
- В чем разница между статическими и динамическими алгоритмами планирования процессов? Приведите несколько примеров каждого из них. Перечислите параметры, которые как правило используются в таких алгоритмах.
- Назовите и кратко опишите существующие способы синхронизации многопоточных приложений.
- Что такое критическая область процесса? Что такое тупик? Какие виды тупиков бывают? Назовите принципы разработки многопоточных программ, которые позволят избежать для них попадания в тупики.
- Перечислите разные способы синхронизации работы многопоточных программ. Перечислите и охарактеризуйте проблемные ситуации, которые могут возникать в случае конкуренции за ресурсы между нитями. Какие существуют подходы, для того чтобы избежать их?
- Что представляет из себя примитив синхронизации “Семафор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
- Что представляет из себя примитив синхронизации “Монитор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
- Какие инструкции аппаратной синхронизации вы знаете? Сравните их. Приведите несколько примеров, как на их основе можно построить различные примитивы синхронизации (условные переменные, семафоры, ...).
- Что такое оптимистическое и пессимистическое блокирование? В каких случаях какое предпочтительнее? Какие еще виды блокирования вы знаете?
- Что такое программная транзакционная память (STM)? Какие качества имеют программы, которые ее используют?
- Расшифруйте аббревиатуру ACID в применении к системному программированию и кратко охарактеризуйте значение каждого из слов. Какая из букв аббревиатуры не применима, когда речь идет о программной транзакционной памяти (STM)?
- Что такое конвейер (PIPE)? Что такое именованный конвейер? Охарактеризуйте их. Как эти объекты можно использовать для взаимодействия программ (приведите несколько примеров)?
- Объясните разницу между взаимодействием программ с помощью разделяемой памяти и обмена сообщениями. Опишите преимущества и недостатки обоих вариантов. В каких случаях предпочтительно использование каждого из них (приведите несколько примеров)?
- Что такое фрагментация? Какие виды фрагментации бывают? Какие виды фрагментации проявляются в каждой из 3 основных схем размещения файлов?
- Какой максимальный адресуемый объем памяти для программы на 32-разрядной архитектуре? Почему объем доступной виртуальной памяти меньше максимального (куда девается разница)? На какие основные части делится память работающей программы? Как это соотносится с форматами исполняемых файлов?
- Нарисуйте обобщенную структуру программы в памяти. Каким образом на нее может повлиять использование сегментной модели виртуальной памяти?
- Опишите страничную и сегментную организацию виртуальной памяти. В чем преимущества и недостатки каждой из них?
- Какая главная проблема эффективной реализации систем виртуальной памяти? Назовите несколько способов ее решения?
- Сформулируйте алгоритм выбора кандидата на удаление из кэша “Часы”. Опишите его работу на простом примере. В чем его преимущества и недостатки?
- Сформулируйте алгоритм выбора кандидата на удаление из кэша “Наименее недавно использовавшийся” (LRU). Опишите его работу на простом примере. В чем его преимущества и недостатки?
- Сформулируйте алгоритм выбора кандидата на удаление из кэша “Второй шанс”. Опишите его работу на простом примере. В чем его преимущества и недостатки?
- Что такое “старение”, и как этот подход может применяться для улучшения работы алгоритмов выбора кандидата на удаления из кэша? Приведите простой пример. Какую проблему решает использование этого подхода?
- В чем разница между копированием при записи (copy-on-write) и изменением на месте (in-place modification)? В чем преимущества и недостатки этих способов изменения хранимых данных? В каких случаях эффективно применять каждый из них? Что такое сквозной кэш?
- Назовите способы учета свободного места на диске, кратко опишите их. В каких файловых системах какие способы используются?
- Опишите на примере непрерывную схему размещения файлов. Какие ее преимущества и недостатки? В каких случаях она используется (и в каких файловых системах)?
- Опишите схему размещения файлов при помощи связного списка. Какие ее преимущества и недостатки? Какая ее основная практическая реализация, и какую проблему эта реализация решает? В каких файловых системах это используется?
- Что такое индексные узлы (inode)? Опишите, как они используются в файловой системе. Как называется такая схема размещения файлов и какие ее преимущества и недостатки? Назовите подходы к ее оптимизации. В каких файловых системах это используется?
- Что такое файловая система на основе журнала? Чем она отличается от классической файловой системы, какие у нее есть преимущества и недостатки, основные проблемы и особенности реализации?
- Опишите Socket API ОС. В чем его особенности, сильные и слабые стороны?
- Опишите сетевой стек TCP/IP. Чем он отличается от эталонной модели OSI? Какой уровень к TCP/IP стеку добавляет RPC-приложение?
Только 4-й курс:
- Перечислите и кратко охарактеризуйте принципы, на которых должны строится безопасные системы.
- Охарактеризуйте подходы к учету прав доступа на основе списков контроля доступа (ACL) и способностей (capabilities). В чем преимущества и недостатки каждого из них?
- В чем основные проблемы реализации системы безопасности на основе способностей (capabilities)? В каких случаях они проявляются? Какие пути их решения существуют?
- Опишите технологию удаленного вызова процедур (RPC). Сравните 2 подхода к передаче данных в ней. Какие уровни Интернет-стека участвуют в организации распределенного взаимодействия в ней?
- Опишите клиент-серверную архитектуру распределенного приложения. Сколько звеньев бывает в ней, какие типы клиентов и серверов? Какое API ОС лежит в ее основе? Какие еще уровни участвуют в организации распределенного взаимодействия в ней?
- Опишите сервисную архитектуру распределенного приложения. В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой? Какой протокол лежит в ее основе? Что такое REST?
- Опишите peer-to-peer архитектуру распределенного приложения. Какие протоколы взаимодействия могут использоваться в таких системах? В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой?
- Опишите архитектуру распределенного на основе очереди. В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой?
Also available in:
HTML
TXT