- •Вопросы по курсу «Операционные системы» весеннего семестра 2010-2011 учебного года
- •1. Общие сведения об операционных системах, цели применения ос, структура ос.
- •2. Модель взаимодействия компонентов операционной системы.
- •3. Классификация ос.
- •4.5. Теоретические основы параллельного программирования, понятия: процесс, задача, мультизадачный режим работы ос, нить, контекст нити.
- •6. Теоретические основы параллельного программирования: классификация программных модулей; понятия реентерабельности и повторной входимости программных модулей.
- •7. Прерывания и механизмы обработки прерываний операционной системой.
- •8.9.Диспетчер задач: дисциплины диспетчеризации, критерии оценки дисциплин диспетчеризации задач.
- •10. Теоретические основы параллельного программирования: независимые и взаимодействующие процессы, понятия ресурса и критического ресурса.
- •11. Теоретические основы параллельного программирования: список условий функционирования взаимодействующих процессов, понятие тупика.
- •12. Теоретические основы параллельного программирования: принцип организации критических секций.
- •13. Теоретическая классификация видов взаимодействия процессов: сигналы, семафоры, мьютексы.
- •15. Теоретическая классификация видов взаимодействия процессов: очереди сообщений, файлы, разделяемая память, объект «ресурс».
- •16. Теоретическая классификация видов взаимодействия процессов: почтовые ящики, конвейеры.
- •17 Организация подсистемы безопасности в ос Windows: создание и открытие объектов, понятие описателя, атрибуты безопасности, права доступа, структура описателя безопасности.
- •18.Организация подсистемы безопасности в ос Windows: маркеры, привилегии пользователей, олицетворение.
- •19. Организация подсистемы безопасности в ос Windows: получение доступа к объекту.
- •20. Процессы в ос Windows: понятие Win32 api; main() и WinMain(), создание и завершение процессов и нитей, основные функции работы с процессами и нитями.
- •21. Работа с файлами в ос Windows: синхронная и асинхронная.
- •24. Таймеры ожидания в ос Windows и понятие apc
- •25. Структурная обработка исключений.
- •26. Способы управления памятью: простое непрерывное распределение, оверлейное распределение.
- •1. Простое непрерывное распределение
- •2. Оверлейное распределение (OverLay)
- •27. Способы управления памятью: распределение статическими и динамическими разделами.
- •28. Способы управления памятью: сегментная организация памяти.
- •29. Страничная организация памяти
- •30. Сегментно-страничный способ организации памяти
- •31. Таблицы физических страниц памяти в современных ос. Понятие pfn, понятие mdl.
- •32. Распределение оперативной памяти в современных компьютерах. Спецификация acpi
- •33. Распределение первого мегабайта оперативной памяти в персональных компьютерах.
- •35. Резервирование памяти с помощью функции VirtualAlloc
- •36. Работа с кучами процессов
- •37 . Динамически загружаемые библиотеки (dll). Связывание во время загрузки библиотеки.
- •38. Системные перехватчики (hook
- •40. Службы
28. Способы управления памятью: сегментная организация памяти.
Идея выделять память задаче не одной сплошной областью, а фрагментами требует для своей реализации соответствующей аппаратной поддержки в виде относительной адресации. Указывается адрес начала текущего фрагмента памяти и величина смещения относительно этого начального адреса. При этом адрес состоит из 2-х частей: сегмента и смещения.
Современное СПО основывается на различных видах такой адресации памяти.
Сегментный способ организации виртуальной памяти
Исторически первый метод – разрывного распределения памяти. Для него программу необходимо разбивать на части и каждой такой части выделять физич. память. Единственный способ такого разбиения – разбиения на логические сегменты. Например каждый модуль (файл) в отдельный сегмент.
Каждый сегмент – самостоятельная единица. Обращение к сегменту производится как "имя сегмента : адрес внутри сегмента". Физически имя сегмента соответствует некоторому адресу начала сегмента в ОП.
Каждый сегмент, размещаемый в памяти, имеет соотв. информационную структуру, называемую дескриптором сегмента.
ОС строит для каждого процесса табл. дескрипторов сегмента. Если сегмент находится в ОП, то об этом делается пометка в дескрипторе (бит присутствия), иначе сегмент находится на диске. В дескрипторе имеется также поле "длина сегмента", которое позволяет проконтролировать обращение проги за пределы сегмента (нарушение адресации) и генерировать сигналы прерывания. Это делается аппаратно. Кроме этого в дескрипторе содержится информация о типе сегмента (код или данные), и виде доступа (только на чт, чт/зп, исполнение), о последнем времени исполнения для определения кандидата на свопинг и т.д. Сама таблица дескрипторов представляет собой сегмент данных.
Этот способ позволяет организовать мультипрограммный и мультизадачный режимы работы ОС, однако следует помнить, что при превышении определенного количества часто исполняющихся сегментов большого размера очень много времени начинает тратиться на свопинг. Такое явление называется "пробуксовкой".
Важнейшей проблемой сегментной организации памяти явл. защита памяти. Чтобы процессы не могли испортить ОС, необходимо, чтобы доступ к коду и данным ОС, в том числе к таблицам дескрипторов, имела только сама ОС. Проблема решается с использованием привилегированного режима работы кода ОС, который реализуется аппаратно. Каждая программа д. иметь возможность обращаться только к своим сегментам памяти.
Достоинства:
возможность при загрузке программы размещать ее код не целиком, а по мере необходимости.
коды некоторых программных модулей м. использоваться несколькими программами одновременно.
Недостатки:
сложность организации;
фрагментация хотя и уменьшается, но остается.
Примеры: MS Windows 3.1., OS/2 версии 2.0.
29. Страничная организация памяти
При этом способе организации памяти все фрагменты проги на которые он а разбивается, за исключением последний части, получаются одинаковыми и эти части называются страницами. Говорят, что память разбивается на физические страницы, а прога и данные на виртуальные страницы. Часть виртуальных страниц размещается в ОП. Другая часть во внешней памяти на диске в файле свопинга.
Величина любой страницы выбирается равной степени двойки. Т.о. любой адрес в проге становится не одномерным, а двумерным, а именно № страницы и № смещения внутри страницы. Задача ОС во время исполнения проги сводится к отображения виртуальной страницы на физическую. Суммарный размер виртуальных страниц м.б. > размера ОП.
Чтобы правильно отобразить страницы нужно иметь таблицу соответствия виртуальных страниц физическим, такая таблица называется таблицей страниц. Дискриптер страницы проще дискриптера сегмента- не нужно поле длинны, т.к. все страницы одинакового размера. Трансляция виртуальных таблиц на физические идет с помощью бита присутствия, как и в сегментном способе адресации памяти. У каждой страницы есть свой код доступа, если прога требует доступ с правами большими чем код доступа страницы, то в таком доступе отказывается.
Предполагается,
что все адреса на рисунке в 16-ричном
формате. Если при обращении к странице,
ее не оказывается в памяти, то возникает
исключение (самое распространенное в
windows
0
C000000)
называемое нарушением страниц – page
fault,
и управление передается диспетчеру
памяти, который отдает первую не свободную
физическую страницу, загрузив ее перед
этим из файла свопинга. Если свободных
физических страниц нет, то происходит
замена страницы. Алгоритм выбирает для
замещения ту страницу, к которой не было
обращений дольше всех. В случае аппаратной
поддержки страничного способа организации
памяти проц устанавливает бит обращения
в дискрипторе автоматически при
обращения к странице; сбрасывается этот
бит-программа.
Как и в случае с сегментным способом организации памяти, страничный механизм без аппаратной поддержки существенно замедляет работу памяти ( в современных процессорах такая поддержка имеется).
Наиболее эффективный комплекс ускорения работы – создание аппаратного КЕШа для страничных дискрипторов. Начиная с прцессора. Intel 80386 в нем внедрили КЕШ (страничный) на 32 дискриптора. Размер страниц процах от Intel равен 32Кб.
минимально возможная фрагментация;
существенные накладные расходы;
рубление на страницы без учета логических взаимодействий и связей в проге, поэтому межстраничные переходы осуществлялись чаще, чем межсегментные.
