Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Потоки в Linux



В операционной системе Linux новый процесс создается путем копирования атрибутов текущего процесса. Новый процесс может быть клонирован (cloned); при этом такие ресурсы, как файлы, обработчики сигналов и виртуальная па­мять, используются совместно. Если два процесса пользуются одной и той же виртуальной памятью, они функционируют как потоки в рамках одного и того же процесса. Однако для потоков структуры данных отдельно не задаются. Та­ким образом, в операционной системе Linux потоки и процессы не различаются.

РЕЗЮМЕ, КЛЮЧЕВЫЕ ТЕРМИНЫ И КОНТРОЛЬНЫЕ ВОПРОСЫ

В некоторых операционных системах различаются понятия процесса и пото­ка; первый из них имеет отношение к владению ресурсами, а второй — к выпол­нению программы. Такой подход может привести к повышению эффективности программы и удобен при составлении кода. В многопоточной системе в рамках од­ного процесса есть возможность задавать несколько потоков. Для этого можно ис­пользовать либо потоки на пользовательском уровне, либо потоки на уровне ядра. Потоки на пользовательском уровне остаются невидимыми для операционной сис­темы, они создаются и управляются библиотекой потоков, которая выполняется в пользовательском пространстве процесса. Потоки на пользовательском уровне очень эффективны, так как при их переключении не нужно переключать режим работы процессора. Однако в одном процессе в каждый момент времени может выполняться только один поток на пользовательском уровне. Если один такой по­ток будет заблокирован, это приведет к блокированию всего процесса. Потоки на уровне ядра — это потоки, которые управляются ядром. Благодаря тому, что та­кие потоки распознаются ядром, в многопроцессорной системе могут параллельно выполняться несколько потоков одного и того же процесса, а блокирование потока не приводит к блокированию всего процесса. Однако для переключения потоков на уровне ядра нужно переключать режим работы процессора.

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

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

Ключевые термины Задание Облегченный процесс Процесс Микроядро Поток Симметричная многопроцессорная Многопоточность Поток на пользовательском- обработка Монолитная уровне операционная система Поток на уровне ядра

Контрольные вопросы

4.1. В табл. 3.5 перечислены типичные элементы, встречающиеся в управ­ляющем блоке процесса операционной системы, в которой не используют­ся потоки. Какие из них следует отнести к управляющему блоку потока, а какие — к управляющему блоку процесса в многопоточной системе?

4.2. Перечислите причины, по которым переключение потоков обходится де­шевле, чем переключение процессов.

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

4.4. Приведите четыре общих примера использования потоков в однопользова­тельской многопроцессорной системе.

4.5. Какие ресурсы обычно совместно используются всеми потоками процесса?

4.6. Перечислите три преимущества потоков на пользовательском уровне над потоками на уровне ядра.

4.7. Приведите два недостатка потоков на пользовательском уровне по сравне­нию с потоками на уровне ядра.

4.8. Дайте краткое описание различных архитектур, приведенных на рис. 4.8.

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

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

4.11. Назовите семь потенциальных преимуществ архитектуры операционной сис­темы с микроядром по сравнению с монолитной операционной системой.

4.12.Объясните, в чем заключаются потенциальные недостатки операционной системы с микроядром, связанные с ее производительностью.

4.13. Назовите три функции, которые, скорее всего, будут включены даже в операционную систему с самым малым микроядром.

4.14. Назовите основную форму обмена информацией между процессами в опе­рационной системе с микроядром.

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

В [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.1. Отмечено, что использование нескольких потоков в одном и том же процессе обладает следующими преимуществами: (1) создание нового потока в уже существующем процессе требует меньших непроизводительных затрат, переключение потоков одного процесса требует меньших затрат, чем переключение потоков разных процессов?

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

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

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

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

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

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

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

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

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

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

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





Дата публикования: 2014-11-04; Прочитано: 781 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...