- •1. Требования, предъявляемые к алгоритмам организации взаимодействия процессов.
- •2. Способы реализации взаимного исключения: запрещение прерываний
- •3. Способы реализации взаимного исключения: переменная-замок
- •4. Способы реализации взаимного исключения: строгое чередование
- •5. Способы реализации взаимного исключения: флаги готовности
- •6. Способы реализации взаимного исключения: алгоритм Петерсона
- •7. Способы реализации взаимного исключения: алгоритм булочной
- •8. Аппаратная реализация взаимоисключений.
- •9. СемафорныепримитивыДейкстры. Решение задачи производителя и потребителя с помощью семафоров.
- •10. Монитор Хоара как примитив синхронизации высокого уровня. Решение задачи производителя и потребителя с помощью мониторов.
- •11. Тупиковые ситуации.
- •12. Методы борьбы с тупиками: Игнорирование проблемы тупиков.
- •13. Методы борьбы с тупиками: Предотвращение тупиков.
- •14. Методы борьбы с тупиками: Алгоритм Банкира.
- •15. Методы борьбы с тупиками: Нарушение условий возникновения тупиков.
- •16. Методы борьбы с тупиками: Обнаружение тупиков.
- •17. Методы борьбы с тупиками: Восстановление после тупиков.
- •18. Иерархия памяти. Локальность.
- •22. Динамическое распределение памяти: разделы с подвижными границами. Уплотнение памяти. Свопинг.
- •23. Сегментная организация памяти.
- •24. Страничная организация памяти.
- •25. Таблицы страниц: одноуровневые, многоуровневые, инвертированные.
- •26. Сегментно-страничная организация памяти
- •27. Понятие виртуальной памяти. Страничный механизм трансляции.
- •28. Стратегии управления виртуальной памятью
- •29. Дисциплины замещения страниц: fifo
- •30. Дисциплины замещения страниц: оптимальный алгоритм
- •31. Дисциплины замещения страниц: выталкивание дольше всего не использовавшейся страницы.
- •32. Дисциплины замещения страниц: выталкивание редко используемой страницы.
- •33. Модель рабочего множества. Трешинг. Страничные демоны.
18. Иерархия памяти. Локальность.
Иерархия памяти вычислительной системы представляет многоуровневую структуру.
При работе процессор пытается использовать данные с более высоких уровней. Предполагается, что данные, находящиеся на более высоком уровне, дублируются на более низком уровне.
Скорость доступа к данным возрастает к верху иерархии, объемы уменьшаются, следовательно, стоимость каждого бита информации вверху пирамиды значительно выше, чем внизу.
Если данные не находятся на верхнем уровне, то ищутся на более низком, при этом работа процессора с каждым уровнем будет все медленней и медленней.
Данные, находящиеся ниже оперативной памяти, не могут обрабатываться без размещения в оперативную память, т.е. их необходимо копировать на более высокий уровень с более низкого.
Для обеспечения целостности данных, в дальнейшем данные с более высокого уровня должны в новом измененном виде быть скопированы на более низкий уровень.
Локальность – свойство реальных программ, согласно которому в течении небольшого периода времени процесс использует небольшое количество страниц логического пространства.
19. Понятие физического и виртуального адреса. Связывание адресов. Физическая память представляет собой линейную последовательность ячеек в памяти. В многозадачной системе сложно организовать работу процессов, если они все будут работать в физическом адресном пространстве, т.е. оперировать на прямую физическими адресами. Поэтому ОС представляет абстракцию между процессом и физической памятью, логическое адресное пространство. Процессы могут работать в едином логическом адресном пространстве, но в современных ОС каждый процесс оперирует своим логическим адресным пространством. Алгоритм процесса оперирует адресами линейного пространства от 0 и выше, которые при работе преобразовываются в адреса физического пространства. Это преобразование называют связыванием или трансляцией адреса. Связывание может производиться:
Во время компиляции. При компиляции, переменные заменяются не на относительные логические адреса, а на абсолютные физические. В следствие чего может быть загружена по одному конкретному адресу в памяти. Дальнейшего преобразования адреса уже не требуется. Недостаток: нескольким процессам может понадобиться загрузка в одну и ту же область в памяти, в таком случае они совместно работать не смогут.
Во время запуска. В процессе компиляции, переменные заменяются на относительные логические адреса. Процесс может быть загружен в любое место в памяти. При запуске, каждая относительное значение адреса заменяется на абсолютное значение физического адреса. Недостаток: в дальнейшем процесс не может быть перемещен в памяти. После свопинга должен быть загружен обратно в то же место.
В процессе выполнения. При запуске образ процесса загружается в память в неизменном виде со всеми относительными адресными ссылками. При каждом обращении по логическому адресу, производится трансляция этого адреса в физический абсолютный. Достоинства: процесс может безболезненно перемещаться в памяти во время работы. Недостаток: замедление работы в следствие преобразования адреса при каждом обращении. Недостаток нивелируется использованием устройства MMU (устройство управления памятью), которое непосредственно участвует в трансляции адреса.
20. Статическое распределение памяти: разделы с фиксированными границами. Фиксированные разделы. Каждый процесс получает ровно столько памяти, сколько ему необходимо. Тем самым физическое адресное пространство делится на фиксированные разделы различной длины. В процессе функционирования системы эти разделы начинают освобождаться и в них могут размещаться новые процессы. Возможна ситуация, когда суммарный объем свободных разделов велик, но раздела способного уместить новый процесс нет. Этот недостаток имеет название внутренняя фрагментация. Решением проблемы является уплотнения памяти, но для этого должен использоваться перемещаемый код и связывание на тапе выполнения. Стратегии выделение свободного раздела новому процессу:
BestFit(самая подходящая). Выделяется раздел максимально похожий по размеру на необходимый процессу объем. При этом, останется свободным минимум пространства. А значит минимизируются потери от фрагментациию.
WorthFit(хуже всего подходящая). Выделяется тот раздел, в котором останется больше всего места. В результате большие объемы свободного места разбиваются междунескольким процессами, тем самым минимизируя потери от фрагментации.
RandomFit. Процесс размещается в первом подходящем по размеру пространстве. С точки зрения фрагментации bestfit работает лучше чем worthfit. Random хуже всех, но за счет отсутствия поиска наиболее или наименее подходящего, Randomfit функционирует более производительно чем первые две стратегии.
21. Статическое распределение памяти: один процесс в памяти. Один процесс в памяти. Все доступное для прикладных процессов адресное пространство выделяется одному процессу. При этом размеры логического пространства не могут превышать размеры физического. При необходимости запуска других процессов, процесс должен из памяти выгружаться.
