Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену (Операционные системы).docx
Скачиваний:
31
Добавлен:
13.02.2021
Размер:
314.83 Кб
Скачать
  1. Алгоритмы переключения задач.

Механизм переключения задач:

Переключение задач осуществляется межсегментными командами JMP, CALL, IRET.

JMP <селектор> <смещение>

CALL <селектор> <смещение>

1. Микропроцессор (МП) из регистра TR определяет адрес TSS Task State Segment — сегмент состояния задачи текущей задачи и переписывает в TSS содержимое регистров текущей задачи (контекст задачи).

2. Для команд JMP и CALL МП берет селектор из команды, а для команды IRET – селектор из поля возврата TSS. Селектор загружается в регистр TR => текущей становится новая задача.

3. По селектору МП находит в памяти TSS новой задачи. Из TSS МП загружает регистры новым содержимым. Это называется переключением контекста задачи.

4. Поле <смещение> не используется.

5. В новой задаче устанавливается бит B(Busy)=1. Если была команда JMP или IRET, то бит В предыдущей задачи сбрасывается. При CALL – не сбрасывается (т.к. задача не может вызвать саму себя). Рекурсия запрещена, т.к. каждая задача имеет только один TSS. При рекурсии мы потеряем старое содержимое TSS. Но внутри задачи рекурсия разрешена.

6. В регистре CR0 есть бит TS (Task Switched). При любом переключении задач бит TS устанавливается в 1. Если при этом встретится программа сопроцессора, то вызывается исключение №7 (FPU недоступен). Бит TS аппаратно не сбрасывается. Поэтому каждая задача должна сама сбрасывать бит TS.

7. При выполнении команды CALL устанавливается бит NT (Nesting Task) в поле регистра флагов TSS. Если NT=1, то команда IRET выполняет действия, описанные выше. Если NT=0, то IRET выполняется обычным образом.

  1. Очереди задач и система приоритетов.

Важной концепцией, лежащей в основе многих вытесняющих алгоритмов планирования, является приоритетное обслуживание. Приоритетное обслуживание предполагает наличие у потоков некоторой изначально известной характеристики — приоритета, на основании которой определяется порядок их выполнения.

Некоторые процессы запускают программу, выполняющую команды, введенные пользователем. Другие процессы являются частью системы, справляясь с такими задачами, как выполнение запросов на обслуживание файлов или управление деталями работы дискового или ленточного привода. Когда происходят дисковые прерывания, система принимает решение остановить выполнение текущего процесса и запустить процесс работы с диском, заблокированный в ожидании этого прерывания. Таким образом, вместо того чтобы думать о прерываниях, мы можем думать о пользовательских процессах, процессах работы с диском, процессах работы с терминалом и т. д., которые блокируются, когда ожидают каких - то событий. Когда считана информация с диска или набран символ, процесс, ожидающий это событие, разблокируется и получает право на возобновление выполнения.

  1. Организация памяти: сегментная, страничная.

Физическая память компьютера имеет иерархическую структуру. Программа представляет собой набор сегментов в логическом адресном пространстве. ОС осуществляет связывание логических и физических адресных пространств.

Существуют две другие схемы организации управления памятью:

  • Сегментная;

  • Сегментно-страничная.

Сегментно-страничная и сегментная организация памяти позволяет легко организовать совместное использование одних и тех же данных и программного кода разными задачами. Для этого различные логические блоки памяти разных процессов отображают в один и тот же блок физической памяти, где размещается разделяемый фрагмент кода или данных.

Сегментная организация памяти

  • Сегменты могут иметь переменный размер.

  • Виртуальный адрес является двумерным программиста и ОС.

  • Виртуальный адрес состоит из двух полей: № сегмента и смещения внутри сегмента.

  • Двухмерность адреса является следствием представления пользователя о процессе не в виде линейного массива байтов, а как набор сегментов переменного размера (данные, код, стек...).

  • Логическое адресное пространство – набор сегментов.

  • Каждый сегмент имеет имя, размер и другие параметры (уровень привилегий, разрешенные виды обращений, флаги присутствия).

  • Пользователь специфицирует каждый адрес двумя величинами: именем сегмента и смещением.

  • Каждый сегмент – линейная последовательность адресов, начинающаяся с 0.

  • Максимальный размер сегмента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт).

  • Размер сегмента может меняться динамически (например, сегмент стека).

  • Логический адрес – упорядоченная пара v=(s,d), номер сегмента и смещение внутри сегмента.

  • В системах, где сегменты поддерживаются аппаратно, параметры номер сегмента и смещение внутри сегмента обычно хранятся в таблице дескрипторов сегментов, а программа обращается к этим дескрипторам по номерам-селекторам.

Сегментно-страничная организация памяти

  • Хранить в памяти сегменты большого размера целиком так же неудобно, как и хранить процесс непрерывным блоком. Напрашивается идея разбиения сегментов на страницы. При сегментно-страничной организации памяти происходит двухуровневая трансляция виртуального адреса в физический.

  • Логический адрес состоит из трех полей: номера сегмента логической памяти, номера страницы внутри сегмента и смещения внутри страницы.

  • Используются две таблицы отображения – таблица сегментов, связывающая номер сегмента с таблицей страниц, и отдельная таблица страниц для каждого сегмента

  • Линейный адрес преобразован ОС в двухмерный для удобочитаемости.

  • Пользователь задает только один адрес, который разбивается на номер страницы и смещение прозрачным для программиста образом.