Экзаменационные вопросы

  1. Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? Какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта POSIX? Опишите их.
  2. Что такое ядро ОС? Какие особенности его работы по сравнению с другими программами? Какие архитектуры ОС по реализации ядра бывают? В чем их преимущества и недостатки?
  3. Какие принципиальные отличия языка Ассемблера от высокоуровневых языков программирования? Что такое байткод? В чем разнца между языком Ассемблера и байткодом?
  4. Приведите примеры форматов исполняемых файлов и кратко охарактеризуйте их. Подробно формат ELF.
  5. Из каких этапов состоит создание исполняемой программы из исходного кода? Опишите их суть. Для языков C++, Java и Python перечислите этапы создания программы, которые имеют место в реальности и укажите, в какое время они происходят. Для каких сред исполнения может создаваться программа?
  6. Перечислите этапы загрузки компьютера от включения питания до активизации GUI или CLI ОС. Охарактеризуйте роль каждого из них.
  7. Что такое процесс ОС? Чем он отличается от программы? Что такое нить? Какие есть подходы к созданию многонитевых (многопоточных программ)? Что такой фибр, в чем его отличие от нити?
  8. Опишите жизненный цикл процесса. Назовите требования к алгоритмам планирования процессов.
  9. Перечислите основные алгоритмы планирования процессов. Сформулируйте алгоритм “Карусель” (Round Robin) и охарактеризуйте его. Приведите простой пример. В каких системах он может применяться на практике?
  10. Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Очередь” (FIFO). Приведите простой пример. В каких системах он может применяться на практике?
  11. Перечислите алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Многоуровневые очереди с обратной связью”. Приведите простой пример. В чем его преимущества и недостатки по сравнению с алгоритмом “Очередь” (FIFO)?
  12. В чем разница между статическими и динамическими алгоритмами планирования процессов? Приведите несколько примеров каждого из них. Перечислите параметры, которые как правило используются в таких алгоритмах.
  13. Назовите и кратко опишите существующие способы синхронизации многопоточных приложений.
  14. Что такое критическая область процесса? Что такое тупик? Какие виды тупиков бывают? Назовите принципы разработки многопоточных программ, которые позволят избежать для них попадания в тупики.
  15. Перечислите разные способы синхронизации работы многопоточных программ. Перечислите и охарактеризуйте проблемные ситуации, которые могут возникать в случае конкуренции за ресурсы между нитями. Какие существуют подходы, для того чтобы избежать их?
  16. Что представляет из себя примитив синхронизации “Семафор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
  17. Что представляет из себя примитив синхронизации “Монитор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
  18. Какие инструкции аппаратной синхронизации вы знаете? Сравните их. Приведите несколько примеров, как на их основе можно построить различные примитивы синхронизации (условные переменные, семафоры, ...).
  19. Что такое оптимистическое и пессимистическое блокирование? В каких случаях какое предпочтительнее? Какие еще виды блокирования вы знаете?
  20. Что такое программная транзакционная память (STM)? Какие качества имеют программы, которые ее используют?
  21. Расшифруйте аббревиатуру ACID в применении к системному программированию и кратко охарактеризуйте значение каждого из слов. Какая из букв аббревиатуры не применима, когда речь идет о программной транзакционной памяти (STM)?
  22. Что такое конвейер (PIPE)? Что такое именованный конвейер? Охарактеризуйте их. Как эти объекты можно использовать для взаимодействия программ (приведите несколько примеров)?
  23. Объясните разницу между взаимодействием программ с помощью разделяемой памяти и обмена сообщениями. Опишите преимущества и недостатки обоих вариантов. В каких случаях предпочтительно использование каждого из них (приведите несколько примеров)?
  24. Что такое фрагментация? Какие виды фрагментации бывают? Какие виды фрагментации проявляются в каждой из 3 основных схем размещения файлов?
  25. Какой максимальный адресуемый объем памяти для программы на 32-разрядной архитектуре? Почему объем доступной виртуальной памяти меньше максимального (куда девается разница)? На какие основные части делится память работающей программы? Как это соотносится с форматами исполняемых файлов?
  26. Нарисуйте обобщенную структуру программы в памяти. Каким образом на нее может повлиять использование сегментной модели виртуальной памяти?
  27. Опишите страничную и сегментную организацию виртуальной памяти. В чем преимущества и недостатки каждой из них?
  28. Какая главная проблема эффективной реализации систем виртуальной памяти? Назовите несколько способов ее решения?
  29. Сформулируйте алгоритм выбора кандидата на удаление из кэша “Часы”. Опишите его работу на простом примере. В чем его преимущества и недостатки?
  30. Сформулируйте алгоритм выбора кандидата на удаление из кэша “Наименее недавно использовавшийся” (LRU). Опишите его работу на простом примере. В чем его преимущества и недостатки?
  31. Сформулируйте алгоритм выбора кандидата на удаление из кэша “Второй шанс”. Опишите его работу на простом примере. В чем его преимущества и недостатки?
  32. Что такое “старение”, и как этот подход может применяться для улучшения работы алгоритмов выбора кандидата на удаления из кэша? Приведите простой пример. Какую проблему решает использование этого подхода?
  33. В чем разница между копированием при записи (copy-on-write) и изменением на месте (in-place modification)? В чем преимущества и недостатки этих способов изменения хранимых данных? В каких случаях эффективно применять каждый из них? Что такое сквозной кэш?
  34. Назовите способы учета свободного места на диске, кратко опишите их. В каких файловых системах какие способы используются?
  35. Опишите на примере непрерывную схему размещения файлов. Какие ее преимущества и недостатки? В каких случаях она используется (и в каких файловых системах)?
  36. Опишите схему размещения файлов при помощи связного списка. Какие ее преимущества и недостатки? Какая ее основная практическая реализация, и какую проблему эта реализация решает? В каких файловых системах это используется?
  37. Что такое индексные узлы (inode)? Опишите, как они используются в файловой системе. Как называется такая схема размещения файлов и какие ее преимущества и недостатки? Назовите подходы к ее оптимизации. В каких файловых системах это используется?
  38. Что такое файловая система на основе журнала? Чем она отличается от классической файловой системы, какие у нее есть преимущества и недостатки, основные проблемы и особенности реализации?
  39. Опишите Socket API ОС. В чем его особенности, сильные и слабые стороны?
  40. Опишите сетевой стек TCP/IP. Чем он отличается от эталонной модели OSI? Какой уровень к TCP/IP стеку добавляет RPC-приложение?
Только 4-й курс:
  1. Перечислите и кратко охарактеризуйте принципы, на которых должны строится безопасные системы.
  2. Охарактеризуйте подходы к учету прав доступа на основе списков контроля доступа (ACL) и способностей (capabilities). В чем преимущества и недостатки каждого из них?
  3. В чем основные проблемы реализации системы безопасности на основе способностей (capabilities)? В каких случаях они проявляются? Какие пути их решения существуют?
  4. Опишите технологию удаленного вызова процедур (RPC). Сравните 2 подхода к передаче данных в ней. Какие уровни Интернет-стека участвуют в организации распределенного взаимодействия в ней?
  5. Опишите клиент-серверную архитектуру распределенного приложения. Сколько звеньев бывает в ней, какие типы клиентов и серверов? Какое API ОС лежит в ее основе? Какие еще уровни участвуют в организации распределенного взаимодействия в ней?
  6. Опишите сервисную архитектуру распределенного приложения. В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой? Какой протокол лежит в ее основе? Что такое REST?
  7. Опишите peer-to-peer архитектуру распределенного приложения. Какие протоколы взаимодействия могут использоваться в таких системах? В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой?
  8. Опишите архитектуру распределенного на основе очереди. В чем преимущества и недостатки по сравнению с клиент-серверной архитектурой?

Also available in: HTML TXT