Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, А.Н. Томилин - Операционные системы - взаимодействие процессов (2008), страница 2
Описание файла
PDF-файл из архива "Н.В. Вдовикина, И.В. Машечкин, А.Н. Терехин, А.Н. Томилин - Операционные системы - взаимодействие процессов (2008)", который расположен в категории "". Всё это находится в предмете "операционные системы" из 3 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
1647.1.6 Завершение работы с сокетом .................................................................... 1667.1.7 Резюме: общая схема работы с сокетами ................................................. 1677.2Среда параллельного программирования MPI ..................................... 1767.2.1 Краткий обзор параллельных архитектур .................................................
1777.2.2 Модель программирования MPI ................................................................... 1827.2.3 Функции общего назначения. Общая структура программы ................... 1837.2.4 Прием и передача данных. Общие замечания ............................................. 1887.2.5 Коммуникации «точка-точка». Блокирующий режим .............................. 1907.2.6 Коммуникации «точка-точка». Неблокирующий режим.......................... 1967.2.7 Коллективные коммуникации ....................................................................... 2038АЛФАВИТНЫЙ УКАЗАТЕЛЬ УПОМИНАЕМЫХ БИБЛИОТЕЧНЫХФУНКЦИЙ И СИСТЕМНЫХ ВЫЗОВОВ .................................................................
2129СПИСОК ЛИТЕРАТУРЫ ..................................................................................... 2144ЧАСТЬ I. ПРОЦЕССЫ В ОПЕРАЦИОННОЙ СИСТЕМЕ1ВведениеВычислительнаясистема(ВС)представляетсобойсовокупностьаппаратныхипрограммныхсредств,функционирующих как единое целое и предназначенных длярешения определенного класса задач. Любая вычислительнаясистема располагает некоторым набором ресурсов: как реальносуществующих (физических) ресурсов, обладающих теми илииными реальными характеристиками, так и т.н.
виртуальных(логических) ресурсов, эксплуатационные характеристики которыхполностью или частично реализованы программно. Подоперационной системой (ОС) мы будем понимать комплекспрограмм, осуществляющий управление, распределение и контрольза использованием ресурсов вычислительной системы.1.1 Понятие процессаПотребителями ресурсов ВС являются работающие программы.Разумеется, поскольку в функции ОС входит управление ресурсамиВС, она должна так или иначе осуществлять контроль над ихпотребителями.
С точки зрения ОС, базовой единицей потребления(и распределения) ресурсов является процесс. В общем случаепроцесс можно определить как совокупность данных и инструкций,исполняющуюся в рамках ВС и обладающую теми или инымиправами на доступ к некоторому набору ресурсов. (Фактически,процесс и представляет собой программу во время ее выполнения –вместе со всеми ее данными и выделенными ей ресурсами).В большинстве современных ВС поддерживается режиммультипрограммирования, при котором в каждый момент временив ВС может существовать несколько процессов.
В общем случае, этипроцессы принадлежат разным пользователям, разделяющим однуВС. Процессы, совместно используя все доступные ресурсы ВС,конкурируют друг с другом, и ОС берет на себя функциикорректного распределения ресурсов между конкурирующимипроцессами и реализации их обособленности, а также организациизащиты их друг от друга.
Таким образом, в режимемультипрограммирования задача управления процессами становитсяодной из основных функций ОС и включает в себя:- обеспечение жизненного цикла процессов (их порождение,выполнение и уничтожение);5- распределение ресурсов ВС между работающими в нейпроцессами;- синхронизацию процессов;- организацию межпроцессного взаимодействия.1.1.1 Полновесные и легковесные процессы (нити)Заметим, что в ходе эволюции операционных систем былвведен целый ряд понятий, описывающих единицы выполнения вВС: процесс, нить, задача, задание, программа и т.п. Некоторые ОСоперируют сразу несколькими понятиями из приведенного списка,причем семантика их в конкретных случаях может отличаться.Мы будем в дальнейшем использовать понятие «процесс», или«полновесный процесс», говоря о самостоятельной единицеисполнения, работающей в рамках собственного виртуальногоадресного пространства и обособленной от других процессов всистеме, и понятие «нить», или «легковесный процесс»,характеризующееотдельнуюветвьвыполнениявнутриполновесного процесса, разделяющую его виртуальное адресноепространство и выделенные ему ресурсы с другими нитями того жепроцесса.В рамках конкретной ОС понятия полновесного илегковесного процесса (нити) могут как взаимозаменяться (в случаеОС с однонитевой организацией процесса, когда каждый процессможет иметь лишь одну исполняемую нить), так и дополнять другдруга (в случае многонитевой организации процесса, когда каждыйпроцесс представляет собой совокупность исполняемых нитей).В общем случае можно сказать, что с точки зрения ОСполновесный процесс является базовой единицей распределенияресурсов (за исключением такого ресурса, как время центральногопроцессора).
Для полновесных процессов операционная системаподдерживает их обособленность, защищая их адресныепространства и поддерживая корректное разделение ресурсов междунезависимыми процессами. В то же время нити, относящиеся кодному процессу, не настолько изолированы друг от друга.
Каждаянить представляет собой отдельный поток исполнения и имеет свойсобственный программный счетчик и стек. Однако всем нитям врамках одного процесса доступно общее адресное пространство.Поскольку каждая нить может иметь доступ к каждомувиртуальному адресу, одна нить может использовать стек другойнити. Кроме того, все нити данного процесса разделяют также набор6открытых файлов, таймеров,выделенные этому процессу.сигналовидругиересурсы,В то же время, нить является базовой единицей планированиявремени центрального процессора. В системах с многонитевойорганизацией процесса планировщик времени ЦП имеет делоименно с нитями, переключая выполнение между ними всоответствии с выбранным алгоритмом планирования.Отметим, что все вышесказанное относится к так называемым«нитям, поддерживаемым ядром» (в некоторых источниках ихназывают «горячие нити» - «hot threads»), т.е.
таким реализацияммногонитевой модели, в которых ядро осведомлено о наличии впроцессе нескольких нитей и управляет их выполнением (вчастности – ядро планирует их выполнение, т.е. занимаетсяпереключением выполнения между нитями).В некоторых ОС существуют также реализации т.н.«пользовательских», или «холодных», нитей, в которых всеуправление нитями передано самому процессу (в частности,исполняемый процесс сам отвечает за переключение выполнениямежду собственными нитями), и ядро ОС даже «не знает» осуществовании таких нитей.
С точки зрения ядра ОС последнийслучай ничем не отличается от однонитевой модели.Существуют также реализации, комбинирующие эти дваподхода: в них у процесса существует возможность создавать как«холодные» нити, так и «горячие» (в последнем случае горячие нитичасто именуются «легковесными процессами» (light-weightprocesses, или LWP), в противовес холодным нитям, которыеобозначаются термином «нить» (thread).Как видим, разнообразие подходовк реализациимногонитевого программирования весьма велико, и отдельныепонятия в рамках этих подходах могут иметь различный смысл.
Вовторой части пособия будет рассмотрена одна из наиболеераспространенных реализаций нитей в ОС UNIX.1.1.2 Нити и процессорыРежим мультипрограммирования позволяет повысить общую«пропускную способность» вычислительной системы, но отдельныйпроцесс при этом никогда будет выполнен быстрее, чем если бы онисполнялся в однопрограммном режиме. Программирование сиспользованием многонитевой модели (multithreading) позволяетускорить выполнение задачи, обладающей собственным внутреннимпараллелизмом. К примеру, если в ходе выполнения процесса7происходит обращение к внешнему устройству, то на время этойоперации можно не блокировать полностью выполнение процесса, апродолжать вычисления в другой его нити («ветви»).Особенно эффективно многонитевое программированиепроявляет себя в многопроцессорных ВС. Если многонитевоеприложение располагает более чем одним процессором, то разныенити могут исполняться на них параллельно (при условии, что ВСпредоставляет им достаточно эффективный механизм разделенияобщего адресного пространства).
В идеале, приложение, состоящееиз N нитей, и располагающее N свободными процессорами, можетисполняться в N раз быстрее, чем на однопроцессорной системе. Напрактике, конечно, часть времени занимает создание и управлениенитями, однако программисту следует стремиться к этомуидеальному соотношению.В многопроцессорной системе нить может быть «связанной»с определенным процессором (т.е. занимать его в эксклюзивномрежиме) либо быть «несвязанной» - такие нити мультиплексируютсямежду всеми процессорами, доступными приложению.В заключение отметим, что программирование в рамкахмногонитевой модели (какая бы реализация ее не использовалась)требует от программиста большой внимательности и определеннойстепени мастерства.