УПРАВЛЕНИЕ ПРОЦЕССАМИИ ПОТОКАМИ в LINUX


Процессы в Linux

 

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

• Состояние. Состояние выполнения процесса (выполняющийся, готовый к выполнению, приостановленный, остановленный, зомби).

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

• Идентификаторы. Каждый процесс обладает своим собственным идентифи­катором, а также идентификаторами пользователя и группы. Идентифика­тор группы используется для того, чтобы назначить группе пользователя права доступа к ресурсам.

• Обмен информацией между процессами. В операционной системе Linux ис­пользуется такой же механизм межпроцессного взаимодействия, как и в опе­рационной системе UNIX SVR4, описанной в главе 6, "Взаимоблокировка и голодание".

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

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

• Файловая система. Содержит в себе указатели на все файлы, открытые данным процессом.

• Виртуальная память. Определяет отведенную данному процессу виртуаль­ную память.

• Контекст, зависящий от процессора. Информация по регистрам и стеку, со­ставляющая контекст данного процесса. На рис. 4.18 показаны состояния выполнения процесса.

• Выполняющийся. Это состояние отвечает на самом деле двум состояниям: текущий процесс либо выполняется, либо готов к выполнению.

• Прерываемый. Это состояние блокировки, в котором процесс ожидает на­ступления события, например, завершения операции ввода-вывода, освобо­ждения ресурса или сигнала от другого процесса.

• Непрерываемый. Это состояние блокировки другого рода. Его отличие от предыдущего состоит в том, что в непрерываемом состоянии процесс непо­средственно ожидает выполнения какого-то аппаратного условия, поэтому он не воспринимает никаких сигналов.

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

• Зомби. Процесс был прекращен, но по какой-то причине его структура ос­тается в таблице процессов.

Потоки в 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.

MUKH96Mukherjee В., 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 говорилось о том, что поток пользовательского уровня может уступить управление другому потоку с таким же приоритетом. Возможна ли ситуация, когда в системе находится готовый к выполнению поток с более высоким приоритетом, и, следовательно, выполняющийся поток уступит управление потоку с таким же или более высоким приоритетом?

 

 



Дата добавления: 2016-06-05; просмотров: 3877;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.