Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
У. Столлингс ГЛАВА 4 Потоки.doc
Скачиваний:
49
Добавлен:
11.05.2015
Размер:
6.22 Mб
Скачать

4.8. Рекомендуемая литература

В [LEWI96] и [KLEI96] представлены обзоры концепций потока и обсужде­ние стратегий программирования. В первом издании больше внимания уделяется описанию концепций, а во втором — программированию, но и в том и в другом тема изложена достаточно хорошо. В [РНАМ96] представлены средства работы с потоками в операционной системе Windows NT, которые, по сути, идентичны соответствующим средствам операционной системы Windows 2000.

В [MUKH96] приводится обсуждение вопросов, связанных с архитектурой операционных систем для многопроцессорных машин. В [СНАР97] содержится пять статей, в которых идет речь о современных направлениях развития много­процессорных операционных систем. Интересное обсуждение принципов архи­тектуры микроядра можно найти в [LIED95] и [LIED96]; во втором издании внимание фокусируется на вопросах производительности.

СНАР97 Chapin S., Maccabe A., eds. Multiprocessor Operating Systems: Harnessing the Power Special issue of IEEE Concurrency, April-June 1997.

KLEI96 Kleiman S., Shah D., Smallders B. Programming with Threads. — Upper Saddle River, NJ: Prentice Hall, 1996.

LEWI96 Lewis B.y Berg D. Threads Primer. — Upper Saddle River, NJ: Prentice

Hall, 1996.

LIED95 Liedtke J. On ji-Kernel Construction. — Proceedings of the Fifteenth ACM

Symposium on Operation Systems Principles, December 1995.

LIED96 Liedtke J. Toward Real Microkernels. — Communications of the ACM, September 1996.

MUKH96 Mukherjee В., Karsten S. Operating Systems for Parallel Machines. Parallel Computers: Theory and Practice, Ed. by T. Casavant, P. Tvrkik and F. Plasil. — Los Alamitos, CA: IEEE Computer Society Press, 1996.

PHAM96 Pham Т., Garg P. Multithreaded Programming with Windows NT. —Saddle River, NJ: Prentice Hall, 1996.

4.9. Задачи

4.1. Отмечено, что использование нескольких потоков в одном и том же процессе обладает следующими преимуществами: (1) создание нового потока в уже существующем процессе требует меньших непроизводительных затрат, переключение потоков одного процесса требует меньших затрат, чем переключение потоков разных процессов?

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

  2. То, что в других операционных системах воплощено в концепции процесса, в операционной системе OS/2 разделено на три составляющих: сессия, процессы и потоки. Сессия является набором одного или нескольких процессов, имею­щих связь с интерфейсом пользователя (клавиатурой, дисплеем, мышью). Сес­сия представляет собой интерактивное пользовательское приложение, в роли которого может выступать текстовый редактор или электронная таблица. Эта концепция позволяет пользователю персонального компьютера запускать не­сколько приложений, открывая в каждом из них одно или несколько окон. Операционная система должна следить за тем, какое из окон, а следовательно, какая из сессий является активной. В зависимости от этого ввод, поступаю­щий с клавиатуры и мыши, направляется в ту или иную сессию. В любой момент времени одна сессия обрабатывается на переднем плане, тогда как ос­тальные сессии находятся в фоновом режиме. Все, что вводится с помощью клавиатуры и мыши, направляется в процесс, сессия которого в соответствии с состоянием приложений находится в приоритетном режиме. Когда сессия на­ходится на переднем плане, процесс, выводящий видеосигнал, пересылает его непосредственно в видеобуфер и, соответственно, на экран пользователя. При переходе сессии в фоновый режим содержимое физического видеобуфера сохраняется в логическом видеобуфере. Если какой-нибудь из потоков любого процесса, относящегося к сессии в фоновом режиме, производит вывод на эк­ран, этот вывод направляется в соответствующий логический видеобуфер. Ко­гда сессия возвращается на передний план, происходит обновление экрана, отражающее текущее содержимое логического видеобуфера этой сессии. Исключив сессии и связав интерфейс пользователя (клавиатуру, мышь, экран) с процессами, можно свести количество концепций, имеющих отношение к процессу, к двум. Таким образом, в каждый момент времени на переднем плане будет находиться один процесс. В целях структурирования процессы можно разделить на потоки.

а. Какие преимущества теряются при таком подходе?

б. Если такая модификация будет реализована, как следует осуществлять назначение ресурсов (памяти, файлов и т.д.) — на уровне процесса или на уровне потока?

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

  2. Если процесс завершается, но какие-то его потоки все еще выполняются, то будут ли они выполняться и далее?

  3. Структурирование операционной системы OS/390, предназначенной для мейнфреймов, основано на концепциях адресного пространства и задания. В других операционных системах адресное пространство, грубо говоря, соответствует приложению и более или менее соответствует процессу. В рамках одного и того же адресного пространства можно одновременно создавать и выполнять несколько заданий, что приближенно соответствует концепции многопоточности. Для управления этими заданиями создается ряд структур данных, две из ко­торых являются основными. Независимо от того, является ли данное адресное пространство выполняющимся или нет, в соответствующем управляющем бло­ке адресного пространства (address space control block — ASCB) содержится необходимая операционной системе OS/390 информация. В ее состав входят текущий приоритет, размер выделенной данному адресному пространству ре­альной и виртуальной памяти, количество готовых к выполнению заданий в адресном пространстве, а также сведения о том, является ли каждое из этих заданий выгруженным из памяти или нет. В управляющем блоке задания (task control block — ТСВ) отражается выполнение пользовательской программы. В нем содержится информация, необходимая для управления заданием в преде­лах адресного пространства, включая информацию о статусе процессора, ука­затели на входящие в состав задания программы и состояние выполнения за­дания. Блоки ASCB являются глобальными структурами, поддерживаемыми в системной памяти, а блоки ТСВ — локальными структурами, каждая из кото­рых поддерживается в своем адресном пространстве. В чем состоит преимуще­ство разделения управляющей информации на глобальную и локальную части?

4.7.К многопроцессорной системе с 8 процессорами подключены 20 лентопротяжных устройств. В систему поступает большое количество заданий, причем ка­ждое из них для завершения требует максимум 4 лентопротяжных устройства. Предположим, что каждое задание начинает выполняться с требованием только трех устройств; четвертое ему потребуется только через достаточно продолжительный срок, причем будет использоваться очень недолго. Предположим также, что источник заданий бесконечен.

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

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

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