Многозадачность и многопоточность

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

Архитектура CPU определяет допустимые режимы работы компьютера. Использование же предоставляемых аппаратными средствами режимов зависит от свойств ОС. CPU поддерживают широкий спектр режимов работы, среди которых:

· однозадачный режим;

· мультизадачный и мультипоточный режим;

· система виртуальных машин.

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

16-разрядные приложения используют кооперативную многозадачность -квантование цикла процессора и выделение квантов одновременно запущенным приложениям.

При выполнении 32-разрядных приложений используется понятие «Приоритетная многозадачность» - приложение либо ожидает освобождения необходимых ресурсов, либо переходит к решению доступных подзадач. ОС реализует арбитраж ресурсов на основе их равнодоступности всем приложениям (например, можно одновременно воспроизводить видео, печатать документ, сохранять файл на диске, загружать WEB-страницу).

С точки зрения ОС выполняющееся приложение является ПРОЦЕССОМ.

Процесс имеет следующие компоненты:

· исполняемая программа - последовательность кода (инструкций) и встроенных данных - ЕХЕ-файл;

· требуемые системные ресурсы: связь с клавиатурой, дисплеем, дисками, портами, принтером и пр. При этом используется система прерываний и флаги (семафоры) ресурсов;

· защищенное адресное пространство, выделяемое процессу в виртуальной памяти (непрерывное и не фрагментированное). Виртуальная память компонуется из физических страниц RAM и файла своппинга;

· минимум один поток выполнения. ПОТОК - явно опознаваемая задача внутри процесса (например: процесс передает потоку список записей, затребованных покупателем из базы данных; данные из записей передаются процессу; одновременно второй поток записывает платежную ведомость в базу данных). ОС управляет процессом на уровне потоков.


Процедура обслуживания многозадачности:

· Система обнаруживает новый поток, порожденный процессом;

· Система выполняет поток, пока он не прерывается внешним событием;

· Производится арбитраж ресурсов - анализом совокупности установленных семафоров: опущенный семафор означает доступность ресурса;

· Если система прерывает поток, то она сохраняет контекст потока уникальный идентификатор потока и информацию состояния потока на момент прерывания;

· Система осуществляет контекстное переключение - грузит контекст разрешенного потока и выполняет его от точки последнего прерывания.

Таким образом, если потоки используют не перекрывающиеся ресурсы, система реально одновременно выполняет несколько потоков.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: