Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие_Unix.doc
Скачиваний:
4
Добавлен:
26.11.2019
Размер:
2.41 Mб
Скачать

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

Библиотеки C-threads системы Mach и pthreds стандарта POSIX содержат все необходимые функции для создания, синхронизации, планирования и обработки нитей без какой-либо специальной помощи ядра. Вследствие этого функционирование таких нитей является необычайно быстрым.

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

Рисунок 3.7 - Применение пользовательских нитей: а – прикладные нити обычных процессов; б – мультиплексирование прикладных нитей.

Ядро просто планирует выполнение процесса (или LWP). Если процесс или LWP вытеснен кем-то, такой же участи и все его нити. Если процесс обладает всего одним LWP (или если прикладные нити реализованы на однонитевой системе), будут заблокированы все его нити.

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

3.5 Планирование

3.5.1 Задачи планировщика

UNIX&LINUX является системой разделения времени, это означает, что каждому процессу вычислительные ресурсы выделяются на ограниченный промежуток времени, после чего они предоставляются другому процессу и т.д. Максимальный временной интервал, на который процесс может захватить процессор, называется квантом времени (time quantum time или slice). Таким образом, создается иллюзия, что процессы выполняются одновременно, хотя в действительности в каждый момент времени выполняется только один процесс (на однопроцессорной машине).

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

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

Приложения можно условно разбить на несколько классов, в зависимости от их требований к планированию и к производительности работы:

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

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

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

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

Цель алгоритма планирования состоит в том, чтобы обеспечить соответствие качество обслуживания приоритету, т.е. чем выше приоритет, тем меньше должно быть время отклика (реакция ОС) и тем большая доля процессорного времени достанется процессу.