Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
14-19).docx
Скачиваний:
3
Добавлен:
07.09.2019
Размер:
39.24 Кб
Скачать

16. Охарактеризуйте многонитевые процессы. Поясните понятия параллельности и одновременности выполнения.

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

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

Одновременность и параллельность

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

Одновременность может поддерживаться на уровне либо системы, либо отдельного приложения. Ядро системы обеспечивает системную одновремен­ность при помощи распознавания нескольких нитей внутри процесса (также называемых горячими» нитями, hot threads) и планирования их выполнения независимо. Ядро разделяет такие нити между доступными процессорами.

17 Укажите на характерные отличия между однонитевой и многонитевой реализацией процессов.

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

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

однонитевые процессы на однопроцессорной машине

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

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

Многонитевые процессы на однопроцессорной машине

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

Многонитевые процессы в многопроцессорной системе

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]