- •1 Ядро. Модули ос
- •Функции ядра
- •2 Ядро в привилегированном режиме
- •3 Процесс. Модель процесса
- •Создание процессов
- •Состояния процессов
- •4 Завершение процесса
- •5 Иерархия процессов
- •6 Структура ядра
- •7 Переключение процессов
- •Содержимое таблицы процессов (ее столбцы)
- •8 Потоки. Модель потока
- •9 Межпроцессорное взаимодействие. Состояние состязания
- •10 Критические области
- •11 Запрещения прерываний и переменные блокировки Попытка аппаратного решения проблемы
- •Рассмотрим программные решения
- •12 Алгоритм петерсона. Команда tsl
- •Примитивы межпроцессорного взаимодействия
- •13 Семафоры
- •14 Мьютексы
- •15 Функции ос по управлению памятью
- •16 Типы адресов
- •17 Образ процесса. Виртуальное адресное пространство
- •18 Методы распределения памяти
- •Распределение памяти фиксированными разделами
- •Распределение памяти динамическими разделами
- •Перемещаемые разделы
- •19 Swopping и виртуальная память
- •Включает решение следующих задач
- •20 Страничное распределение памяти
- •22 Сегментное распределение памяти
- •24 Кэш память
- •Принцип действия кэш памяти
- •25 Устройство ввода-вывода
- •Контроллеры внешних устройств
- •1 Способ. Раздельные адресные пространства
- •2 Способ. Одно адресное пространство
- •3 Способ. Гибридный
- •27 Использование нескольких шин для ввода-вывода
- •28 Прямой доступ к памяти. Direct Memory Access (dma)
- •29 Процедура прерываний. Контроллер прерываний
- •30 Принципы программного обеспечения ввода-вывода
- •31 Программный ввод-вывод
- •31 Управляемый прерываниями ввод-вывод. Использование дма
- •32 Программные уровни ввода-вывода
- •Обработка прерываний и драйверы
- •Программные уровни ввод-вывод
- •33 Независимое от устройств программное обеспечение ввода-вывода Единообразный интерфейс для устройств
- •Единообразный интерфейс драйверов устройств
- •34 Структура и функции драйверов
- •35 Буферизация ввода-вывода
- •36 Юникс подобные ос
- •37 Структура ядра ос юникс
- •38 Загрузка юникс подобной ос
- •39 Процессы в системе юникс
- •40 Управление процессами ядром юникс
- •41 Системные вызовы управления процессами
- •42 Системные вызовы управления потоками
- •43 Сигналы
- •44 Файловая система и иерархия данных
- •45 Файловая система fat
17 Образ процесса. Виртуальное адресное пространство
Содержимое назначенного процессу вирт. адресного пространства, т.е. коды команд, исходящие и промежуточные данные, а также результаты вычислений, представляют собой образ процесса. Во время работы процесса постоянно выполняются переходы от прикладных кодов к кодам ОС, которые либо явно вызываются из прикладных процессов как системные функции; либо вызываются как реакция на внешние события или исключительные ситуации, возникающие при некорректном поведении прикладных кодов. Для того, чтобы упростить передачу пр-я от прикладного кода к коду ОС, а также для легкого доступа модулей ОС к прикладным данным (например, для вывода их на внешние устройства) в большинстве ОС ее сегмент разделяют вирт. адресное пространство с прикладными сегментами активного процесса, т.е. сегменты ОС и сегменты активного процесса образуют единое виртуальное адресное пространство. Обычно вирт. адресное пространство процесса делится на две непрерывные части: системную; пользовательскую. В некоторых ОС, напр., Windows NT ОS/2 (консольная система), эти части делятся поровну и имеют одинаковый размер по 2 Gb. Хотя соотношение может быть и другим, напр., 1Gb для ОС, а остальное – пользователю. Часть вирт. адресного пространства каждого процесса, отводимая для сегментов ОС является идентичной для всех процессов. Поэтому при смене активного процесса заменяется только вторая часть вирт. адресного пространства, содержащая его индивидуальные сегменты, как правило, коды и данные прикладной программы.
ПВ 2…
ПВ 1 ПВ N Индивидуальные части ВП
Paged
Unpaged Общая часть виртуального адресного пространства
Системная часть виртуальной памяти ОС любого типа включает область, подвергаемую страничному вытеснению, Paged (листание); и область, на которую страничное вытеснение не распространяется Unpaged. В не вытесняемой области размещаются модули ОС, требующие быстрой реакции и/или постоянного присутствия в памяти. Напр., диспетчер потоков или код, который управляет заменой страниц памяти (загрузка – выгрузка страниц). Остальные модули ОС могут подвергаться страничному вытеснению как и пользовательские сегменты.
18 Методы распределения памяти
Все алгоритмы распределения (управления) памятью можно разделить на 2 класса: 1) Алгоритмы, в которых используется перемещение сегментов процессов между оперативной памятью и диском. 2) Алгоритмы, в которых внешняя память не используется.
Распределение памяти фиксированными разделами
Простейший способ управления оперативной памятью состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Такое разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. После этого границы разделов не изменяются. Очередной процесс, поступивший на выполнение помещается либо в общую очередь, либо в очередь к некоторому разделу.
Очередная задача 1 раздел
очередь
2 раздел
3 раздел
Подсистема управления памятью в этом случае выполняет задачи:
1) Сравнивает объем памяти, требуемой для вновь поступившей задачи с размерами свободных разделов и выбирает подходящий размер.
2) Осуществляет загрузку программы в один из разделов и настройку адресов. Уже на этапе трансляции разработчик программы может создать раздел, в котором ее следует выполнять. Это может позволить без использования перемещаемого загрузчика получить машинный код, настроенный на конкретную область памяти. При простоте реализации данный метод имеет существенные недостатки, т.к. в каждом разделе может выполняться только один процесс – число задач ограничено числом разделов. Кроме того, независимо от размера программы, она будет занимать весь раздел. С другой стороны, разбиение памяти на разделы не позволяет выполнять процессы, программы которых не помещаются ни в один из разделов, и для которых было бы достаточно памяти нескольких разделов.