Параллелизм в системах программного обеспечения 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Параллелизм в системах программного обеспечения



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

Не все процессы должны быть независимыми. Возможны определенные требования взаимодействия между параллельно работающими процессами. Эти взаимодействия осуществляется по предварительно определенным правилам.

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

Лекция 7


План лекции:

5. Аппаратная поддержка многозадачного режима

6. Алгоритм аппаратного переключения между задачами

7. Параллелизм в системах программного обеспечения

 

Литература:

М.Ф.Бондаренко, О.Г.Качко Операційні системи: навч.посібник. 2008. 432с. Стр.76 – 79

 

АППАРАТНАЯ ПОДДЕРЖКА МНОГОЗАДАЧНОГО РЕЖИМА

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

Переключение задач

Задача - единица работы для процессора, то есть это единица, на которую процессор может переключиться, приостановить ее выполнение или удалить. Это может быть утилита ОС или управляющая программа.

На аппаратном уровне решаются такие проблемы:

· сохранение состояния текущей задачи;

· запуск задачи, начиная с начала или из точки, где ее выполнение было приостановлено.

Новая задача может быть запущенная как функция - этим обеспечивается возврат к предыдущей задаче после завершения запущенной (команда CALL). Можно запустить новую задачу без сохранения адреса возврата (команда JMP). Аппаратные средства перехода между задачами могут использоваться и часто используются ОС для поддержки механизма перехода между приложениями в случае многопрограммного режима.

В дальнейшем будем называть старой задачу, которая инициирует переход, а новой будем называть задачу, на которую выполняется переход. Схема переключения между задачами посредством команд JMP и CALL представлена на рис. 4.1

Старая задача JMP Новая задача

Старая задача CALL Новая задача

Рис. 4.1- Переключение между задачами посредством команд JMP и CALL

Для переключения задач используются такие структуры данных.

сегмент состояния задачи (Task Status Segment - TSS);

дескриптор сегмента состояния задачи (Task Status Segment Descriptor - TSSD);

регистр задачи (Task Register - 77?);

дескриптор шлюза задачи (Task Gate Descriptor);

NT-флаг в регистре EFLAGS.

Сегмент состояния задачи (TSS)

Используется для сохранения состояния задачи с целью обеспечения возможности продолжения ее выполнения.

Все поля сегмента состояния задачи разделяются на статические и динамические. Статические поля формируются при создании задачи и остаются без изменения вплоть до ее завершения. Состояние динамических полей изменяется в процессе переключения.

Минимальный размер TSS равняется 104 байтам, то есть при переходе между задачами необходимо сохранить и потом возобновить, по меньшей мере, 104 байтов. Учитывая это переход между задачами является сложной операцией. Переключение между задачами происходит, если:

1. В командах call, jmp задан селектор для TSS или селектор для шлюза TSS - явное переключение.

2. Выполняется переход на обработчик прерываний или исключений - неявное переключение.

3. Выполняется команда iret после завершения задачи, вызванной командой call (то есть установлен флажок вложенности задач NT в EFLAGS).

Дескриптор TSS

Сегмент состояния задачи, как и все другие сегменты, определяется дескриптором. Дескриптор TSS задается в GDT и представляет собой пример системного дескриптора. Минимальный размер TSS при условии отсутствия карты разрешения ввода/вывода и дополнительной информации равняется 104 байтам. Если граница сегмента меньше 103, то при переходе на такую задачу генерируется отказ на выполнение.

Заметим, что сегмент TSS имеет особые права доступа. Право осуществлять чтение/запись в этот сегмент имеет только процессор. Пользователю с любым уровнем привилегий в этот сегмент не только нельзя записать какую-либо информацию, но даже прочитать ее.

Регистр задачи

Регистр задачи (Task Register - TR) содержит информацию о текущей задаче, которая состоит из двух частей: «видимой» и «невидимой». «Видимая» часть может считываться и изменяться программным обеспечением. «Невидима» часть используется процессором. В видимой части есть селектор для TSS, что содержит индекс TSS в GDT. Процессор использует невидимую часть для записи адреса начала и границы дескриптора TSS. Сохранение в регистре этих значений делает выполнение задачи более эффективным, поскольку для ссылки к TSS текущей задаче процессору не нужно добывать эти значения с памяти.

Шлюз задачи

Используется для защищенного переключения между задачами. В шлюзе задается информация о TSS и переключение между задачами происходит по команде перехода, где задается адрес TSS.

NT-флаг в регистре EFLAGS

Поскольку переключение между задачами происходит только в два способа: по команде JMP без возвращения в область старой задачи и по команде CALL с возможностью возвращения. Но есть способ возвращения с помощью установки в регистре флагов выполняемой задачи бита NT, что означает, что по завершении новой задачи необходимо вернуться к выполнению старой.



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 190; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.188.152.162 (0.006 с.)