- •1. Понятие ос
- •2. Функции ос
- •3. Классификация ос
- •4. Загрузка программ
- •5. Управление оперативной памятью
- •6. Открытая память
- •7. Алгоритмы динамического управления памятью
- •8. Системы с базовой виртуальной адресацией
- •9. Сегментная и страничная виртуальная память
- •10. Страничный обмен
- •11. Параллельное и псевдопараллельное исполнение (планировщик)
- •12. Методы синхронизации при параллельной работе
- •13. Прерывания, сигналы и семафоры
- •14. Блокировка участков файлов
- •15. Гармонически взаимодействующие последовательные процессы
- •16. Межзадачное взаимодействие
- •17. Средства для гармонического межпроцессного взаимодействия
- •18. Трубы. Линки
- •19. Системы управляемые событиями
- •20. Многопроцессность на однопроцессных компьютерах
- •21. Кооперативная многопроцессность и вытесняющая многопроцессность
- •22. Планировщики с приоритетом
- •23. Монолитные системы и системы с микроядром
- •24. Драйверы внешних устройств и функции драйверов
- •25. Синхронный ввод/вывод в однозадачных и многозадачных системах
- •26. Асинхронный ввод/вывод
- •27. Дисковый кэш и спулинг
- •28. Файловые системы
- •29. Структуры файловых систем
- •30. Устойчивость фс к сбоям
- •31. Безопасность. Идентификация пользователя. Права доступа
- •32. Защита оперативной памяти. Кольца защиты
- •33. Взаимно недоверяющие подсистемы
- •34. Пользовательский интерфейс
- •35. Определение операционной системы
- •37. Структура сетевой ос (одноранговые, с выделенными серверами, для рабочих групп и ос для сетей масштаба предприятия)
- •38. Управление процессами (состояние, контекст и дескриптор процесса)
- •39. Алгоритмы планирования процессов (вытесняющие и невытесняющие)
- •40. Средства синхронизации и взаимодействия процессов. Нити исполнения
- •41. Управление памятью. Типы адресов
- •42. Методы распределения памяти без использования дискового пространства (разделы фиксированные, переменной величины и перемещаемые)
- •43. Методы распределения памяти с использованием дискового пространства (виртуальная память, страничное, сегметное, странично-сегментное распределение)
- •44. Иерархия запоминающих устройств (может быть исключён). Принцип кэширования данных
- •45. Аппаратная поддержка управления памятью и многозадачной среды
- •46. Средства поддержки сегментации памяти
- •47. Управление вводом-выводом. Физическая организация устройств ввода-вывода
- •48. Обработка прерываний. Драйверы устройств
- •49. Управление вводом-выводом. Независимый от устройств слой операционной системы
- •50. Пользовательский слой программного обеспечения
- •51. Фс. Имена файлов. Типы файлов.
- •52. Фс. Логическая и физическая организация файлов
- •53. Современные архитектуры фс (Олифер)
- •54. Фс. Отображаемые в память файлы
- •55. Управление распределёнными ресурсами. Способы адресации
- •56. Базовые примитивы передачи сообщений в распределённых системах
- •57. Синхронизация в распределённых системах. Логические часы. Взаимные исключения. Неделимые транзакции
- •58. Процессы и нити в распределённых системах. Понятие нити. Вопросы реализации нитей.
- •59. Распределённые фс. Интерфейсы файлового сервиса и сервиса каталогов
- •60. Распределённые фс. Семантика разделения файлов. Вопросы разработки структуры фс.
- •61. Распределённые фс. Кэширование. Репликация
- •1. Сквозная запись.
- •62. Основные подходы к реализации взаимодействия в гетерогенных сетях
- •63. Шлюзы. Мультиплексирование стеков протоколов в гетерогенных сетях
- •66. Расширяемость, переносимость, совместимость и безопасность современных ос
- •67. Структура ос: монолитные системы, многоуровневые системы
- •68. Структура ос: модели клиент-сервер и микроядра
- •69. Структура ос: объектно-ориентированный подход
- •70. Структура ос: множественные прикладные среды
32. Защита оперативной памяти. Кольца защиты
Разделение доступа к данным не возможно без контроля над доступом к другим объектам системы, в первую очередь к оперативной памяти, физическим внешним устройствам и драйверам этих устройств. Поэтому нельзя всерьез говорить о безопасности в системах, не разделяющих доступ задач к физической памяти, таких как DOS, MS Windows 3.x, Windows 95, MacOS и др.
При этом пользовательские задачи должны иметь возможность обмениваться данными с модулями ОС и друг с другом.
Огромную популярность имеет система т.н. колец защиты. Процессор может работать в двух режимах, системном (Кольцо 0) и пользовательском (Кольцо 3). В современных системах число этих режимов больше:
Нулевое кольцо – системный режим. В нём разрешены управление уровнем прерываний процессора и доступ к регистрам диспетчера памяти. Обычно программа, исполняющаяся в системном режиме, имеет доступ к адресным пространствам пользовательских программ. На последующих уровнях количество привилегий снижается. В пользовательских режимах процессор может выполнять только обычные команды обработки данных и не имеет доступа к системному адресному пространству. Переключение режимов осуществляется специальной командой. Обычно такая команда сразу же передает управление одному из модулей ядра системы.
Обычно в системном режиме исполняется все ядро ОС, в том числе и те модули, для которых это необязательно – файловые системы, сервисные модули разного рода и т.д.
Важным недостатком раздельных адресных пространств является относительная сложность разделения памяти между задачами, что особенно заметно при разделении кода. Прослеживание множественных ссылок на разделяемую библиотеку подпрограмм приводит к снижению производительности некоторых алгоритмов, а также к более сложному управлению файлом подкачки. Из-за этого у систем с динамической сборкой(OS/2 и Windows NT) виртуальная память заметно менее эффективна, чем у систем семейства Unix, использующих статические загрузочные модули. Статические же загрузочные модули обеспечивают гораздо меньшую гибкость, чем динамическая сборка.
33. Взаимно недоверяющие подсистемы
Согласно концепции, пользовательская задача не должна предоставлять системе доступа ко всем своим данным, а должна выделять мандат на доступ к буферу или нескольким буферам, предназначенным для обмена данными. Все акты обмена данными, как между пользовательской задачей и системой, так и между двумя пользовательскими задачами или двумя модулями системы, также осуществляются при помощи передачи мандатов.
Подход имеет две очевидные проблемы:
1) При использовании страничных и двухслойных сегментно-страничных диспетчеров памяти мы можем отображать в чужие адресные пространства только объекты, выровненные на границу страницы и имеющие размер, кратный размеру страницы.
2) Мы все равно не можем избавиться от супервизора. В данном случае это должен быть модуль, ответственный за формирование мандата и размещение отображенного модуля в адресном пространстве задачи, получающей мандат.
***
Функции модуля, управляющего выдачей мандатов, оказываются слишком сложны для аппаратной или даже микропрограммной реализации. Этот модуль должен выполнять следующие функции:
– Убедиться в том, что передаваемый объект целиком входит в один сегмент исходного адресного пространства.
– Если объект состоит из нескольких сегментов, разумным образомо бработать такую ситуацию.
– Сформировать содержимое дескриптора сегмента для объекта и записать в него соответствующие права.
– Отметить общесистемной базе данных, что на соответствующую область физической памяти существует две ссылки.
– Найти свободную запись в таблице дескрипторов сегментов задачи-получателя. Эта операция аналогична строковым командам современных CISC-процессоров, которые сами по себе считаются сложными командами.
– Разумным образом обработать ситуацию отсутствия такой записи.
– Записать сформированный дескриптор в таблицу.
***
Но еще больше проблем создает операция уничтожения мандата. Для прекращения действия мандата мы должны отыскать в нашей общесистемной базе данных все ссылки на интересующий нас объект и объявить их недействительными.