Вытесняющая и невытесняющая многозадачность 


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



ЗНАЕТЕ ЛИ ВЫ?

Вытесняющая и невытесняющая многозадачность



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

Преимущества:

- упрощение приложений – не нужно заботится о многозадачности.

- процессу не нужно регулировать процесс переключения процессов

- упрощенное паралельное выполнение процессов

- можно запускать много задач

Недостаток – задача не может контролировать промежуток своей работыи врямя отключения

 

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

Преимущества:

- система сосредоточена над выполнением одной задачи

- ядро ОС упрощено

Недостаток – приложение более сложное (должно уметь возвращать управление ОС, выполнять более одной задачи в единицу времени)

 

Существует два основных типа процедур планирования процессов - вытесняющие (preemptive) и невытесняющие (non-preemptive).

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

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

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

Существенным преимуществом non-preemptive систем является более высокая скорость переключения с задачи на задачу.

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

 

Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов: невытесняющая многозадачность (NetWare, Windows 3.x) и вытесняющая многозадачность (Windows NT, OS/2, UNIX). Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой (таймер), а не самим активным процессом.

 

Многонитивость

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

Нити могут пораждать нити потоки и переходить из состояния в состояние (ожидания, готовности или выполнения)

Многонитивая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой.

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

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

Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).

Мультипрограммирование теперь реализуется на уровне нитей, и задача, оформленная в виде нескольких нитей в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорной системе) выполнения ее отдельных частей. Особенно эффективно можно использовать многонитевость для выполнения распределенных приложений, например, многонитевый сервер может параллельно выполнять запросы сразу нескольких клиентов.

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

Нити иногда называют облегченными процессами или мини-процессами взаимодействовать, а не бороться за ресурсы.

Многонитевая обработка повышает эффективность работы системы по сравнению с многозадачной обработкой.

Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями). Например, в ходе выполнения задачи происходит обращение к внешнему устройству, и на время этой операции можно не блокировать полностью выполнение процесса, а продолжить вычисления по другой "ветви" процесса. Особенно эффективно можно использовать многонитевость для выполнения распределенных приложений, например, многонитевый сервер может параллельно выполнять запросы сразу нескольких клиентов. Нити иногда называют облегченными процессами или мини-процессами. Действительно, нити во многих отношениях подобны процессам. Каждая нить выполняется строго последовательно и имеет свой собственный программный счетчик и стек. Нити, как и процессы, могут, например, порождать нити-потомки, могут переходить из состояния в состояние. Подобно традиционным процессам (то есть процессам, состоящим из одной нити), нити могут находится в одном из следующих состояний: ВЫПОЛНЕНИЕ, ОЖИДАНИЕ и ГОТОВНОСТЬ. Пока одна нить заблокирована, другая нить того же процесса может выполняться. Итак, нити имеют собственные: программный счетчик, стек, регистры, нити-потомки, состояние. Нити разделяют: адресное пространство, глобальные переменные, открытые файлы, таймеры, семафоры, статистическую информацию.

 



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 5463; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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