Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создай свою операционную систему! #9


Информационный Канал Subscribe.Ru

Сетевые операционные системы

Глава 4. Процессы и потоки

2004-01-06

Продолжение

Синхронизация процессов и потоков

Сигналы

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

Примером асинхронного сигнала является сигнал с терминала. Во многих ОС предусматривается оперативное снятие процесса с выполнения. Для этого пользователь может нажать некоторую комбинацию клавиш (Ctrl+C, Ctrl+Break), в результате чего ОС вырабатывает сигнал и направляет его активному процессу. Сигнал может поступить в любой момент выполне-ния процесса (то есть он является асинхронным), требуя от процесса немед-ленного завершения работы. В данном случае реакцией на сигнал является безусловное завершение процесса.

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

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

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

Выводы

Мультипрограммирование, или многозадачность (multitasking), - это спо-соб организации вычислительного процесса, при котором на одном про-цессоре попеременно выполняются сразу несколько программ.

Мультипрограммирование применяется для повышения эффективности вычислительной системы, которая может пониматься как:

- общая пропускная способность вычислительной системы;

- удобство работы пользователей, например возможность интерактивной работы для нескольких пользователей или возможность одновременной работы одного пользователя с несколькими приложениями на одной машине;

- реактивность системы - то есть способность системы выдерживать заранее заданные (возможно, очень короткие) интервалы времени между запуском программы и получением результата.

В зависимости от выбранного критерия эффективности ОС делятся на сис-темы пакетной обработки, системы разделения времени, и системы реаль-ного времени.

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

Основной задачей мультипрограммной операционной системы является распределение ресурсов между процессами и потоками - двумя базовыми единицами работы ОС.

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

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

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

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

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

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

Система прерываний позволяет ОС реагировать на внешние события, происходящие асинхронно вычислительному процессу: сигналы готовности устройств ввода-вывода, аварийные сигналы аппаратуры вычислительной системы и т.п.

В зависимости от источника прерывания делятся на три больших класса:

- внешние прерывания, связанные с сигналами от внешних устройств;

- внутренние прерывания, возникающие в результате ошибок вычисле-ний;

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

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

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

Для упорядочивания процессов обработки прерываний все источники пре-рываний распределяются по нескольким приоритетным уровням, а роль арбитра выполняет диспетчер прерываний ОС.

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

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

Задачи и упражнения

1. Поясните употребление терминов "программа", "процесс", "задача", "поток", "нить".

2. В чем состоит принципиальное отличие состояний "ожидания" и "готов-ности" потока, ведь и в том и в другом он ожидает некоторого события?

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

4. В какой очереди (ожидающих или готовых) скапливается большее число процессов:

A) в интерактивных системах разделения времени;

B) в системах пакетной обработки, решающих "счетные" задачи.

5. Известно, что программа А выполняется в монопольном режиме за 10 минут, а программа В - за 20 минут, то есть при последовательном вы-полнении они требуют 30 минут. Если Т - время выполнения обеих этих задач в режиме мультипрограммирования, то какое из неравенств, приве-денных ниже, справедливо?

A) Т<10;

B) 10<Т<20;

C) 20<Т<30;

D) Т>30.

6. Может ли процесс в мультипрограммном режиме выполняться быстрее, чем в монопольном?

7. Чем объясняется потенциально более высокая надежность операционных систем, в которых реализована вытесняющая многозадачность?

8. В каких ОС реализована невытесняющая многозадачность? А вытесняю-щая многозадачность?

9. При невытесняющем планировании необходимо, чтобы во всех выпол-няющихся программах были предусмотрены кодовые последовательно-сти, которые передают управление ОС. Эти точки возврата управления прикладной программист должен определить заранее еще до выполнения программы. Можно ли сказать, что в этом случае мы имеем дело со ста-тическим планированием?

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

11. Могут ли быть применены сразу все перечисленные характеристики к од-ному алгоритму планирования потоков?

A) вытесняющий, с абсолютными динамическими приоритетами;

B) невытесняющий, с абсолютными фиксированными приоритетами;

C) невытесняющий, с относительными динамическими приоритетами;

D) вытесняющий, с абсолютными фиксированными приоритетами, основанный на квантовании с динамически изменяющейся длиной кванта;

E) невытесняющий, основанный на квантовании с фиксированной дли-ной кванта.

12. Для тех вариантов, которые вы считаете возможными, опишите более подробно алгоритм планирования.

13. Являются ли синонимами термины "планирование процессов" и "дис-петчеризация процессов"?

14. Можно ли задачу планирования процессов целиком возложить на прило-жения?

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

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

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

18. Представьте себе ОС, разработанную для компьютера, в котором отсутст-вует система прерываний. Какой алгоритм планирования процессов мо-жет быть реализован в такой ОС?

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

A) Windows NT;

B) NetWare;

C) OS/2.

20. Какие события вызывают перепланирование процессов (потоков)?

21. Поясните разницу между программными и аппаратными прерываниями.

22. Что такое вектор прерываний?

23. Какой тип системы прерываний - векторный или опрашиваемый - реали-зован в процессоре Pentium?

24. Всегда ли прерывание вызывает перепланировку процессов?

25. Опишите механизм обработки прерываний в Windows NT.

26. Какими средствами синхронизации процессов располагает современная ОС?

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

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

Продолжение следует...



Copyright (C) 2004 UzhOS-Team
Ведущий рассылки Igene Smith (winexp[@]yandex.ru)
Designed by Vladimir Tsarkov (bvbn[@]lipetsk.ru)

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.othos.osmaker
Отписаться

В избранное