
- •Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? Какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта 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 ос лежит в ее основе? Какие еще уровни участвуют в организации распределенного взаимодействия в ней?
Что такое оптимистическое и пессимистическое блокирование? в каких случаях какое предпочтительнее?
Блокировка – это механизм, который предотвращает одновременный доступ к конкретному объекту данных. Когда одна транзакция владеет блокировкой на элемент, то непараллельная транзакция может читать и/или изменять этот элемента. Блокировка может быть только моментальным замком, состоявшимся в том время, как элемент был прочитан, или он может состояться до тех пор пока транзакция не завершится. Пессимистическая блокировка – это блокировка, которая устанавливается при чтении элемента и удерживается до тех пор, пока транзакция не завершится(они могут быть полезны для предотвращения тупиковых ситуаций на уровне БД). Оптимистическая блокировка – это блокировка, которая устанавливается при чтении элемента и удерживается до тех пор, пока транзакция не завершится(первая модификация записывается, а при втором изменении, выдается сообщение об ошибке).
Что такое программная транзакционная память (stm)? Какие свойства могут приобрести программы, которые ее используют?
Вступление. Транзакционная память (transactional memory, TM) – это новая программная конструкция, обеспечивающая высокоуровневую абстракцию для написания параллельных программ. TM можно реализовывать полностью программным образом (STM) или с использованием специальной аппаратной поддержки (HTM).
Система STM может распознать конфликт при первом обращении транзакции к объекту (early detection, раннее выявление) или в то время, когда транзакция пытается выполнить операцию фиксации (late detection, отложенное выявление).
Производительность систем STM, зависит от деталей рабочей нагрузки. Вообще говоря, при небольшом числе процессоров накладные расходы систем STM оказываются более существенными, чем у схем с блокировками. Однако при возрастании числа процессоров повышаются и уровень конкуренции на отдельную блокировку, и стоимость ее установки. В таких условиях при наличии редко возникающих конфликтов STM (как это показано исследователями) превосходит по производительности схемы с блокировками на тестовых наборах с мелкими транзакциями.
Основная часть. Программная реализация транзакционного принципа обмена данными с оперативной памятью - называется программная транзакционная память (STM);
Транзакционная память, позволяет работать с данными, при помощи транзакций, аналогичных транзакциям баз данных. Транзакции выполняются таким образом, как будто текущая транзакция это единственная операция над текущими данными. При завершении транзакции, смотрится не было ли конфликтов с другими транзакциями. Если их не было (наиболее вероятный вариант), изменение принимаются, если нет, транзакция повторяется еще раз. В программах, в которых имеется большое количество потоков, работающих с различными областями памяти, такая схема будет работать очень хорошо: конфликты будут редки, а степень параллельности будет высокой. К сожалению, есть и некоторые недостатки: в транзакционных блоках желательно не вызывать код имеющий побочные эффекты: ввод/вывод, рисование на экране, и тп.
Расшифруйте аббревиатуру ACID в применении к системному программированию и кратко охарактеризуйте значение каждого из слов. Какая из букв аббревиатуры не применима, когда речь идет о программной транзакционной памяти (STM)?
Вступление. Транзакция – это некоторая форма выполнения программ, перенятая от сообщества баз данных [8]. Параллельно исполняемые запросы конфликтуют, когда они читают и изменяют некоторый элемент базы данных, и возникающий конфликт может привести к ошибочному результату, который не мог бы получиться при последовательном выполнении этих запросов. Транзакции гарантируют, что все запросы произведут тот же самый результат, как если бы они выполнялись последовательно в некотором порядке (serially, «сериально»; это свойство называют «сериализуемостью» (serializability)). Декомпозиция семантики транзакции приводит к четырем требованиям, обычно называемым свойствами ACID: атомарность (atomicity), согласованность (consistency), изоляция (isolation) и долговечность (durability)
ACID (atomicity, consistency, isolation, durability). В информатике, акроним ACID описывает требования к транзакционной системе (например, к СУБД), обеспечивающие наиболее надёжную и предсказуемую её работу. Требования ACID были в основном сформулированы в конце 70-х годов Джимом Греем
Лингвистические корни STM.NET берут свое начало из самых разных областей, но концептуальная идея STM гениально проста и знакома: вместо того чтобы заставлять разработчиков придумывать средства распараллеливания (блокировки и все такое), дать им возможность помечать, какие части кода должны выполняться с теми или иными характеристиками дружественности к параллельной обработке, и разрешить инструментальным средствам языка (компилятору или интерпретатору) при необходимости самостоятельно управлять блокировками. Другими словами, разработчики подобно администраторам и пользователям баз данных помечают код атрибутами транзакционной семантики в стиле ACID и оставляют все черную работу по управлению блокировками нижележащей среде.
Хотя STM.NET может показаться всего лишь еще одной попыткой управления параллельной обработкой, она отражает нечто более глубокое — поиск путей переноса всех четырех характеристик ACID-транзакций баз данных в модель программирования, размещенную в памяти. Помимо управления блокировками в интересах программиста, модель STM также обеспечивает атомарность (atomicity), согласованность (consistency), изоляцию (isolation) и надежность (durability), которые сами по себе могут значительно упростить программирование независимо от наличия нескольких потоков выполнения.
Атомарность заявляет, что база данных изменений должны следовать принципу "все или ничего". Каждая операция называется "атомной". Если одна часть сделки не удается, вся сделка не удается. Очень важно, что система управления базами данных сохраняет атомный характер операций, несмотря на любую операционную систему или аппаратный сбой.
Последовательность заявляет, что только достоверные данные будут записаны в базу данных. Если по каким-то причинам совершается сделка, которая нарушает согласованность правил базы данных, вся сделка будет отменена, и база данных будет восстановлена в состоянии, в соответствии с этими правилами. С другой стороны, если операция успешно выполняется, это переведет базу данных из данного состояния, которое соответствует другому состоянию, которое также находится в соответствии с правилами.
Изоляция требует, чтобы несколько изменений, совершенных в то же время, не влияли на исполнение друг друга. Например, если Джо запросил транзакции с базой данных в то же время, что Мария запросила различные сделки, и операции должны функционировать на базе данных, независимо. База данных должна либо выполнять весь запрос Джо перед выполнением запроса Марии или наоборот. Это предохраняет запрос Джо от чтения промежуточных данных, полученных в качестве побочного эффекта части запроса Марии, которая в конечном итоге не будет фиксироваться в базе данных. Обратите внимание, что изоляция собственности не обеспечивает исполнения , только того, что не конфликтует друг с другом.
Долговечность гарантирует, что любое изменение, внесенное в базу данных, не будет потеряно. Долговечность обеспечивается за счет использования резервных копий баз данных и журналов транзакций, которые способствуют восстановлению совершенных изменений, несмотря на любые последующие программные или аппаратные сбои.
Не применима буква “I”(изоляция), т.к. при STM - транзакции выполняются таким образом, как будто текущая транзакция это единственная операция над текущими данными, а при ACID - несколько изменений, совершенных в то же время, не влияют на исполнение друг друга.