- •Расшифруйте понятия “протокол”, “интерфейс”. В чем разница между ними? какие основные виды интерфейсов существуют у компьютерных программ согласно стандарта posix? опишите их.
- •Что такое ядро ос? какие особенности его работы по сравнению с другими программами? какие архитектуры ос по реализации ядра бывают? в чем их преимущества и недостатки?
- •Что такое виртуальная машина? для каких целей она может служить? какие типа виртуальных машин бывают? приведите примеры виртуальных машин и их ключевые характеристики.
- •Какие принципиальные отличия языка ассемблера от высокоуровневых языков программирования? что такое байткод? в чем разнца между языком ассемблера и байткодом?
- •Приведите примеры форматов исполняемых файлов и кратко охарактеризуйте их. Подробно формат elf.
- •Перечислите этапы загрузки компьютера от включения питания до активизации gui или cli ос. Охарактеризуйте роль каждого из них.
- •Что такое процесс ос? чем он отличается от программы? что такое нить? какие есть подходы к созданию многонитевых (многопоточных программ)? что такой фибр, в чем его отличие от нити?
- •Опишите жизненный цикл процесса. Назовите требования к алгоритмам планирования процессов.
- •Перечислите основные алгоритмы планирования процессов. Сформулируйте и охарактеризуйте алгоритм “очередь” (fifo). Приведите простой пример. В каких системах он может применяться на практике?
- •Назовите и кратко опишите существующие способы синхронизации многопоточных приложений.
- •Что такое критическая область процесса? что такое тупик? какие виды тупиков бывают? назовите принципы разработки многопоточных программ, которые позволят избежать для них попадания в тупики.
- •Что представляет из себя примитив синхронизации “семафор”? опишите его интерфейс (набор операций) и приведите простой пример использования.
- •Что представляет из себя примитив синхронизации “монитор”? опишите его интерфейс (набор операций) и приведите простой пример использования.
- •Что такое оптимистическое и пессимистическое блокирование? в каких случаях какое предпочтительнее? какие еще виды блокирования вы знаете?
- •Что такое программная транзакционная память (stm)? какие качества имеют программы, которые ее используют?
- •Что такое конвейер (pipe)? что такое именованный конвейер? охарактеризуйте их. Как эти объекты можно использовать для взаимодействия программ (приведите несколько примеров)?
- •Что такое фрагментация? какие виды фрагментации бывают? какие виды фрагментации проявляются в каждой из 3 основных схем размещения файлов?
- •Нарисуйте обобщенную структуру программы в памяти. Каким образом на нее может повлиять использование сегментной модели виртуальной памяти?
- •Опишите страничную и сегментную организацию виртуальной памяти. В чем преимущества и недостатки каждой из них?
- •Какая главная проблема эффективной реализации систем виртуальной памяти? назовите несколько способов ее решения?
- •Сформулируйте алгоритм выбора кандидата на удаление из кэша “часы”. Опишите его работу на простом примере. В чем его преимущества и недостатки?
- •31. Алгоритм lru
- •32. Алгоритм «второй шанс»
- •33. Алгоритм старения (aging) – программная реализация lru.
- •34. Копированием при записи (copy-on-write) и изменением на месте (in-place modification)
- •35. Способы учета свободного места на диске
- •36. Непрерывный метод
- •37. Метод распределения блоков в виде связного списка
- •39. Журналируемая файловая система
- •40. Перечислите и кратко охарактеризуйте принципы, на которых должны строится безопасные системы.
- •41. Охарактеризуйте подходы к учету прав доступа на основе списков контроля доступа (acl) и способностей (capabilities). В чем преимущества и недостатки каждого из них?
- •42. В чем основные проблемы реализации системы безопасности на основе способностей (capabilities)? в каких случаях они проявляются? какие пути их решения существуют?
- •43. Опишите socket api ос. В чем его особенности, сильные и слабые стороны?
- •44. Опишите технологию удаленного вызова процедур (rpc). Сравните 2 подхода к передаче данных в ней. Какие уровни интернет-стека участвуют в организации распределенного взаимодействия в ней?
32. Алгоритм «второй шанс»
Данный алгоритм имеет следующее эвристическое обоснование. Странице, которая дольше всего не использовалась, как бы дается второй шанс на то, что она будет использована, т. е. делается эвристическое предположение, что, по мере возрастания времени, вероятность обращения к странице, к которой давно не было обращений, возрастает.
В простейшем варианте алгоритма FIFO, который, позволяет избежать проблемы вытеснения из памяти часто используемых страниц, у самой старейшей страницы изучается бит R. Если он равен 0, страница не только находится в памяти долго, она вдобавок еще и не используется, поэтому немедленно заменяется новой. Если же бит R равен 1, то ему присваивается значение 0, страница переносится в конец списка, а время ее загрузки обновляется, то есть считается, что страница только что попала в память. Затем процедура продолжается.
Работа этого алгоритма, называемого «второй шанс» (second chance), показана на рис. 5(а). Здесь изображены страницы от А до Я, хранящиеся в связанном списке и отсортированные по времени их поступления в память. Числа над страницами обозначают их время загрузки в память. Предположим, что в момент времени 20 происходит страничное прерывание. Самой старшей страницей является страница А, она была загружена в память во время 0, когда начал работу процесс. Если бит R страницы А равен 0, она выгружается из памяти или путем записи на диск (если страница «грязная»), или просто удаляется (если она «чистая»). Во втором случае, если бит R равен 1, страница А передвигается в конец списка, а ее «загрузочное время» принимает текущее значение (20). При этом
бит R очищается. Поиск подходящей страницы продолжается; следующей проверяется страница В.
Рис. 5. Действие алгоритма «вторая попытка»: страницы, отсортированные в порядке
очереди (FIFO) (а); список страниц, если страничное прерывание произошло во время
20, а страница А имеет бит R, равный 0 (б)
Алгоритм «вторая попытка» ищет в списке самую старую страницу, к которой не было обращений в предыдущем временном интервале. Если же происходили ссылки на все страницы, то «вторая попытка» превращается в обычный алгоритм FIFO.
Представьте, что у всех страниц на рис. 5(а) бит R равен 1. Одну за другой передвигает
ОС страницы в конец списка, очищая бит R каждый раз, когда она перемещает страницу в хвост. Наконец, она вернется к странице А, но теперь уже ее биту R присвоено значение 0. В этот момент страница А выгружается из памяти. Таким образом, алгоритм всегда успешно завершает свою работу.
Хотя алгоритм «вторая попытка» является корректным (в таком алгоритме часто используемая страница никогда не покинет память), он слишком неэффективен, потому что постоянно передвигает страницы по списку.
33. Алгоритм старения (aging) – программная реализация lru.
Доработка алгоритма NFU, которая делает его способным моделировать алгоритм LRU. Основная проблема NFU – он никогда ничего не забывает. Может возникнуть ситуация при которой ОС удалит полезные страницы вместо ненужных.
Изменения:
1) Каждый счетчик сдвигается вправо на один разряд перед прибавлением бита R.
2) Бит R добавляется в крайний слева, а не в крайний справа бит счетчика.