- •14.Назовите последовательность операций, необходимую для:
- •15 Системные вызовы FreeBsd, реализующие функции управления процессами.
- •16. Охарактеризуйте многонитевые процессы. Поясните понятия параллельности и одновременности выполнения.
- •17 Укажите на характерные отличия между однонитевой и многонитевой реализацией процессов.
- •18 Классификация нитей. Нити ядра. Особенности реализации и рекомендуемая область применения.
- •19 Классификация нитей. Легковесные нити. Особенности реализации и рекомендуемая область применения.
16. Охарактеризуйте многонитевые процессы. Поясните понятия параллельности и одновременности выполнения.
Преимущества многонитевых систем хорошо заметны, если такие системы сочетать с многопроцессорными архитектурами. Если каждая нить будет функционировать на отдельном процессоре, то можно говорить о настоящей параллельности работы приложения. Если количество нитей превышает количество имеющихся процессоров, то такие нити должны быть мультиплексированы на эти процессоры'. В идеальном случае, если приложение имеет n нитей, выполняющихся на n процессорах, то однонитевая версия той же программы на однопроцессорной системе будет тратить на выполнение задачи в n раз больше времени. На практике часть времени занимает создание, управление и синхронизация нитей, однако при использовании многопроцессорной системы эта величина стремится к идеальному соотношению.
Однако существуют и очевидные недостатки .Многонитевые процессы должны следить за каждым объектом в собственном адресном пространстве. Если к объекту имеет доступ более чем одна нить, то с целью предотвращения повреждения данных необходимо применять методы синхронизации.
Одновременность и параллельность
Параллельность многопроцессорного приложения — это достигнутая им степень параллельного выполнения, которая в любом случае будет ограничиваться количеством процессоров, физически доступных приложению. Термин одновременность описывает максимальную степень параллельности, которую теоретически может достигать приложение с неограниченным количеством доступных процессоров. Эта степень зависит от того, как написано конкретное приложение, а также от количества нитей, которые могут выполняться одновременно, с доступными необходимыми им ресурсами.
Одновременность может поддерживаться на уровне либо системы, либо отдельного приложения. Ядро системы обеспечивает системную одновременность при помощи распознавания нескольких нитей внутри процесса (также называемых горячими» нитями, hot threads) и планирования их выполнения независимо. Ядро разделяет такие нити между доступными процессорами.
17 Укажите на характерные отличия между однонитевой и многонитевой реализацией процессов.
Преимущества многонитевых систем хорошо заметны, если такие системы сочетать с многопроцессорными архитектурами. Если каждая нить будет функционировать на отдельном процессоре, то можно говорить о настоящей параллельности работы приложения. Если количество нитей превышает количество имеющихся процессоров, то такие нити должны быть мультиплексированы на эти процессоры. В идеальном случае, если приложение имеет n нитей, выполняющихся на n процессорах, то однонитевая версия той же программы на однопроцессорной системе будет тратить на выполнение задачи в n раз больше времени. На практике часть времени занимает создание, управление и синхронизация нитей, однако при использовании многопроцессорной системы эта величина стремится к идеальному соотношению.
показан набор однонитевых процессов, выполняющихся на однопроцессорной машине. Операционная система создает некоторую иллюзию одновременности при помощи выделения каждому процессу некоторого определенного промежутка времени для работы (квантование времени), после чего происходит переключение на следующий процесс. В приведенномпримере первые три процесса являются задачами серверной части клиент- серверного приложения. Серверная программа при поступлении каждого нового запроса запускает еще один процесс. Все процессы обладают схожими адресными пространствами и совместно используют данные при помощи механизмов межпроцессного взаимодействия. Нижние два процесса созданы другим серверным приложением.
однонитевые процессы на однопроцессорной машине
представлены два сервера, реализованные на нитях. Каждый сервер представляет собой единый процесс, имеющий несколько нитей, разделяющих между собой единое адресное пространство. Переключение контекста нитей в рамках одного процесса может обрабатываться либо ядром системы, либо на уровне прикладных библиотек, в зависимости от версии ОС. В обоих случаях в приведенном примере видны преимущества использования нитей. Исключение нескольких схожих адресных пространств приложений, порожденных для параллельной обработки чего-либо, сокращает нагрузку на подсистему памяти (даже при использовании современными системами такого метода разделения памяти, как копирование при записи, необходимо оперировать раздельными картами трансляции адресов для каждого процесса). Так как все нити приложения разделяют одно и то же адресное пространство, они могут использовать эффективные легковесные механизмы межнитевого взаимодействия и синхронизации.
Однако существуют и очевидные недостатки применения нитей. Однонитевому процессу не нужно заботиться о защите своих данных от других процессов. Многонитевые процессы должны следить за каждым объектом в собственном адресном пространстве. Если к объекту имеет доступ более чем одна нить, то с целью предотвращения повреждения данных необходимо применять методы синхронизации.
Многонитевые процессы на однопроцессорной машине
два многонитевых процесса, выполняющиеся в многопроцессорной системе. Все нити каждого процесса совместно используют одно и то же адресное пространство, однако каждая из них выполняется на отдельном процессоре. Таким образом, все эти нити функционируют параллельно. Такой подход значительно увеличивает производительность системы, но, с другой стороны, существенно усложняет решение проблем синхронизации.
Многонитевые процессы в многопроцессорной системе
Хотя оба средства (многонитевость и многопроцессорность) хорошо сочетаются друг с другом, их вполне можно использовать отдельно друг от друга. Многопроцессорные системы вполне пригодны для однонитевых приложений, так как в этом случае несколько процессов могут работать параллельно. Точно так же, имеются значительные преимущества в использовании многонитевых приложений на однопроцессорных системах. Если одна нить блокируется в ожидании окончания ввода-вывода или освобождения ресурса, другая нить может стать текущей, а приложение, таким образом, продолжит свое выполнение. Понятие нити более подходит для олицетворения встроенной одновременности выполнения в программе, нежели чем подгонки приложений под возможности многопроцессорных аппаратных архитектур.