
- •Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? Какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта posix?
- •Что такое ядро ос? Какие особенности его работы по сравнению с другими программами? Какие архитектуры ос бывают? в чем их преимущества и недостатки
- •Что такое виртуальная машина? Для каких целей она может служить? Какие типы виртуальных машин бывают?
- •Какие принципиальные отличия языка Ассемблера от высокоуровневых языков программирования?
- •Перечислите форматы исполняемых файлов. Опишите и охарактеризуйте формат elf.
- •Из каких этапов состоит создание исполняемой программы из исходного кода? Опишите их суть. Для каких сред исполнения может создаваться программа?
- •Перечислите этапы загрузки компьютера от включения питания до активизации gui или cli ос. Охарактеризуйте роль каждого из них.
- •Что такое процесс ос? Чем он отличается от программы? Что такое нить? Какие есть подходы к созданию многонитевых (многопоточных программ)?
- •Опишите жизненный цикл процесса. Какие требования обычно выдвигаются к алгоритмам планирования процессов?
- •Перечислите основные алгоритмы планирования процессов. Сформулируйте алгоритм “Карусель” (Round Robin) и охарактеризуйте его.
- •Перечислите основные алгоритмы планирования процессов. Сформулируйте “справедливый” алоритм планирования и охарактеризуйте его.
- •Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Очередь” (fifo). В каких системах он может применяться на практике?
- •Перечислите алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Многоуровневые очереди с обратной связью”. В чем его преимущества и недостатки?
- •В чем разница между статическими и динамическими алгоритмами планирования процессов? Приведите минимум 2 примера каждого из них.
- •2 Примера каждого из них:
- •Назовите и кратко опишите существующие способы синхронизации многопоточных приложений.
- •Что такое критическая область процесса? Назовите прнципы разработки многопоточных программ, которые позволят избежать для них попадания в тупики.
- •Что представляет из себя примитив синхронизации “Семафор”? Опишите его интерфейс.
- •Что представляет из себя примитив синхронизации “Монитор”? Опишите его интерфейс.
- •Какие инструкции аппаратной синхронизации вы знаете? Приведите 2 примера, как на их основе можно построить различные примитивы синхронизации (условные переменные, семафоры, …).
- •Перечислите разные способы синхронизации работы многопоточных программ. Перечислите и охарактеризуйте проблемные ситуации, которые могут возникать в случае конкуренции за ресурсы между нитями.
- •Что такое мертвый замок (deadlock)? Сформулируйте требования к многопоточным программам, при соблюдении которых они гарантированно смогут избежать мертвых замков.
- •Опишите подходы, которые позволяют избежать мертвых замков в программах, которые используют блокировки с помощью замков.
- •Обнаружение взаимных блокировок
- •Что такое оптимистическое и пессимистическое блокирование? в каких случаях какое предпочтительнее?
- •Что такое программная транзакционная память (stm)? Какие свойства могут приобрести программы, которые ее используют?
- •Что такое конвейер (pipe)? Что такое именованный конвейер? Как эти объекты используются для взаимодействия программ?
- •Что такое фрагментация? Какие виды фрагментации бывают? Какие виды фрагментации проявляются в 3 основных схемах размещения файлов?
- •Опишите страничную и сегментную организацию виртуальной памяти. В чем преимущества и недостатки каждой из них?
- •Страничная организация памяти. Виртуальная память.
- •Нарисуйте обобщенную структуру программы в памяти. Каким образом на нее может повлиять использование сегментной модели виртуальной памяти?
- •Сформулируйте алгоритм выбора кандидата на удаление из кэша “Часы”. В чем его преимущества и недостатки?
- •Сформулируйте алгоритм выбора кандидата на удаление из кэша “Наименее недавно использовавшийся” (lru). В чем его преимущества и недостатки?
- •Примеры
- •Сформулируйте алгоритм выбора кандидата на удаление из кэша “Второй шанс”. В чем его преимущества и недостатки?
- •Управление свободным и занятым дисковым пространством
- •39. Что такое файловая система на основе журнала? Чем она отличается от классической файловой системы, какие у нее есть преимущества и недостатки, основные проблемы и особенности реализации?
- •40. Перечислите и кратко охарактеризуйте принципы, на которых должны строится безопасные системы.
- •41. Охарактеризуйте подходы к учету прав доступа на основе списков контроля доступа (acl) и способностей (capabilities). В чем преимущества и недостатки каждого из них?
- •43. Опишите Socket api ос. В чем его особенности, сильные и слабые стороны?
- •44. Опишите технологию удаленного вызова процедур (rpc). Сравните 2 подхода к предаче данных в ней. Какие уровни Интернет-стека участвуют в организации распределенного взаимодействия в ней?
- •45. Опишите сетевой стек tcp/ip. Чем он отличается от эталонной модели osi? Какой уровень к tcp/ip стеку добавляет rpc-приложение?
- •46. Опишите технологию удаленного вызова процедур (rpc). Сравните 2 подхода к предаче данных в ней. Какие уровни участвуют в организации распределенного взаимодействия в ней?
- •Опишите сетевой стек tcp/ip. Чем он отличается от эталонной модели osi? Какой уровень к tcp/ip стеку добавляет rpc-приложение?
- •Опишите клиент-серверную архитектуру распределенного приложения. Какое api ос лежит в ее основе? Какие еще уровни участвуют в организации распределенного взаимодействия в ней?
Перечислите этапы загрузки компьютера от включения питания до активизации gui или cli ос. Охарактеризуйте роль каждого из них.
Основные этапы загрузки компьютера
Процесс загрузки компьютера может несколько отличаться, в зависимости от установленной операционной системы. Поэтому достаточно сложно универсально однозначно описать этот процесс. Тем не менее, можно попытаться выделить некоторые общие этапы загрузки. После включения питания сбрасывается процессор и логика, а затем процессором выполняются инструкции, вшитые в ПЗУ материнской платы.
Сразу после включения питания однократно запускается тест, который называется POST или Power On Self Test. Основная задача этого теста – проверка функционирования аппаратной части на отсутствие грубых ошибок. В рамках этого теста происходит и проверка памяти, ход которой можно наблюдать на экране компьютера. Если этот тест не проходит, возможно, одно или несколько устройств повреждены, и понадобится компьютерная помощь специалистов. После включения или перезагрузки компьютера обязательно происходит инициализация устройств на материнской плате и в слотах расширения. После процедуры инициализации загружается BIOS – базовая низкоуровневая система ввода-вывода. BIOS компьютера записан на отдельную микросхему, распложенную на материнской плате. В большинстве современных компьютеров BIOS перезаписываемый, то есть имеет возможность изменения программными средствами. Большинство операционных систем копирует BIOS в оперативную память для ускорения процесса загрузки. Важная часть процесса загрузки компьютера – инициализация видеоадаптера. Заметьте, что уже во время теста POST на экране можно увидеть данные. То есть, в этот момент видеоадаптер уже инициализирован. Происходит это потому, что любая видеокарта имеет собственный BIOS, и BIOS системы, опросив все доступные слоты, в которые может быть установлен видеоадаптер, обнаруживает этот BIOS и передает на него управление изображением. Нужно отметить, что видеокарта – не единственное устройство, у которого есть свой BIOS. Есть он, например, и у сетевых плат. Обнаружив BIOS такого устройства, система незамедлительно передает ему управление соответствующим оборудованием. После загрузки BIOS проверяется наличие жестких дисков, CD или DVD-приводов и других устройств, с которых можно будет осуществить загрузку операционной системы. Также проверяется наличие клавиатуры. В случае ошибки, система сообщит о ней звуковым сигналом или выведет сообщение об ошибке на экран. Следующий этап – инициализация и проверка устройств Plug and Play, установленных в слотах расширения. Как правило, такие устройства также имеют собственный BIOS.
Завершающий этап загрузки компьютера – считывание boot-области жесткого диска, то есть первой дорожки первой головки. Если загрузочный диск не обнаружен, система выдает предупреждения. В случае же успешной загрузки boot-области, она управляет дальнейшей загрузкой операционной системы. Аналогично происходит загрузка и с внешнего носителя (CD-диска, дискеты и т.д.).