- •Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? Какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта posix?
- •Что такое ядро ос? Какие особенности его работы по сравнению с другими программами? Какие архитектуры ос бывают? в чем их преимущества и недостатки
- •Какие принципиальные отличия языка Ассемблера от высокоуровневых языков программирования? Что такое байткод? в чём разница между язіком Ассемблера и байткодом?
- •Приведите примеры форматов исполняемых файлов и кратко охарактеризуйте их. Подробно формат elf.
- •Перечислите этапы загрузки компьютера от включения питания до активизации gui или cli ос. Охарактеризуйте роль каждого из них.
- •Что такое процесс ос? Чем он отличается от программы? Что такое нить? Какие есть подходы к созданию многонитевых (многопоточных программ)? Что такой фибр, в чем его отличие от нити?
- •Опишите жизненный цикл процесса. Какие требования обычно выдвигаются к алгоритмам планирования процессов?
- •Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “Очередь” (fifo). Приведите простой пример. В каких системах он может применяться на практике?
- •2 Примера каждого из них:
- •Назовите и кратко опишите существующие способы синхронизации многопоточных приложений.
- •Что такое критическая область процесса? Что такое тупик? Какие виды тупиков бывают? Назовите прнципы разработки многопоточных программ, которые позволят избежать для них попадания в тупики.
- •Что представляет из себя примитив синхронизации “Семафор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
- •Что представляет из себя примитив синхронизации “Монитор”? Опишите его интерфейс (набор операций) и приведите простой пример использования.
- •Какие инструкции аппаратной синхронизации вы знаете? Сравните их. Приведите 2 примера, как на их основе можно построить различные примитивы синхронизации (условные переменные, семафоры, …).
- •Что такое оптимистическое и пессимистическое блокирование? в каких случаях какое предпочтительнее? Какие еще виды блокирования вы знаете?
- •Что такое программная транзакционная память (stm)? Какие качества имеют программы, которые ее используют?
- •Что такое конвейер (pipe)? Что такое именованный конвейер? Охарактеризуйте их. Как эти объекты можно использовать для взаимодействия программ (приведите несколько примеров)?
- •Что такое фрагментация? Какие виды фрагментации бывают? Какие виды фрагментации проявляются в 3 основных схемах размещения файлов?
- •Нарисуйте обобщенную структуру программы в памяти. Каким образом на нее может повлиять использование сегментной модели виртуальной памяти?
- •Опишите страничную и сегментную организацию виртуальной памяти. В чем преимущества и недостатки каждой из них?
- •Какая главная проблема эффективной реализации систем виртуальной памяти? Назовите несколько способов ее решения?
- •Сформулируйте алгоритм выбора кандидата на удаление из кэша “Наименее недавно использовавшийся” (lru). Опишите его работу на простом примере. В чем его преимущества и недостатки?
- •Назовите способы учета свободного места на диске, кратко опишите их. В каких файловых системах какие способы используются?
- •Управление свободным и занятым дисковым пространством
- •38. Что такое файловая система на основе журнала? Чем она отличается от классической файловой системы, какие у нее есть преимущества и недостатки, основные проблемы и особенности реализации?
- •39. Опишите Socket api ос. В чем его особенности, сильные и слабые стороны?
- •40. Опишите технологию удаленного вызова процедур (rpc). Сравните 2 подхода к предаче данных в ней. Какие уровни Интернет-стека участвуют в организации распределенного взаимодействия в ней?
- •41. Опишите сетевой стек tcp/ip. Чем он отличается от эталонной модели osi? Какой уровень к tcp/ip стеку добавляет rpc-приложение?
Перечислите этапы загрузки компьютера от включения питания до активизации 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-диска, дискеты и т.д.).