Главная » Просмотр файлов » Ю. Вахалия - UNIX изнутри (2003)

Ю. Вахалия - UNIX изнутри (2003) (1114670), страница 28

Файл №1114670 Ю. Вахалия - UNIX изнутри (2003) (Ю. Вахалия - UNIX изнутри (2003)) 28 страницаЮ. Вахалия - UNIX изнутри (2003) (1114670) страница 282019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 28)

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

Когда блокирующая операция завершается, ядро производит еше один обратный вызов, указывающий библиотеке на произошедшее событие. Такой вызов требует новой активации. Ядро может назначить новый процессор для выполнения этой активации или вытеснить одну из текущих активаций данного процесса. В последнем случае вызов оповестит библиотеку о двух событиях: во-первых, о том, что можно продолжить выполнение изначальной нити (которая была блокирована), и во-вторых, о том, что нить, выполняющаяся ранее на этом процессоре, была вытеснена. Библиотека поместит обе нити в список нитей, готовых к выполнению, и затем решит, какая из них будет выполняться первой. Технология активаций планировщика обладает рядом преимуществ.

Прежде всего, активации происходят очень быстро, так как большинство операций не требует участия ядра. В работе 11] приведены измерения, которые показа- 3.6. Многонитевость в 6о!аг!з и 3!Гй4 121 ли, что пакеты функций работы с нитями, основанные на активациях, функционируют производительнее, чем другие типы нитевых библиотек. Так как ядро системы информирует библиотеку о событиях блокирования или вытеснения, библиотека может самостоятельно принимать решения по планированию и синхронизации, а также избегать взаимных блокировок и некорректной семантики.

Например, если ядро заберет процессор, который в текущий момент занят нитью, находящейся в состоянии циклической блокировки, библиотека может переключить выполнение этой нити на другой процессор и выполнять ее там до тех пор, пока ожидаемый нитью ресурс не снимет блокировку. Оставшаяся частылавы посвящена описанию реализаций нитей в системах Бо!аг!э, ЯЧВА, МасЬ и 1)!й!га! 13)ч11Х. 3.6.

Многонитевость в Зо!апв и 8ЧЯ4 Корпорация Бпп М!сгозузгешз начала поддерживать нити на уровне ядра в системе Бо!аЬ версий 2.х'. Компания 1)!ч!1Х Зузгеш 1лЬогагог!ез для своей ОС ЯУК4.2ггМР приняла технологию нитей системы Яо!айз. Разработанная архитектура предлагает большое количество базовых элементов как для уровня ядра, так и на прикладном уровне, что позволяет создавать приложения с широкими возможностями. Система 301аг!з поддерживает нити ядра, легковесные процессы и прикладные нити.

Процесс может обладать несколькими сотнями нитей, сохраняя параллельность выполнения программы. Нитевая библиотека проведет мультиплексирование этих нитей в меньшее количество легковесных процессов. Существует возможность управления количеством 1ЛЪ'Р для оптимизации использования ресурсов системы. Также существует возможность группирования некоторых нитей в отдельные легковесные процессы (см. подробнее в разделе 3.6.3). 3.6.1. Нити ядра Нить ядра в системе 501агЬ вЂ” это основной легковесный объект, который может независимо планироваться и отправляться на выполнение одному из процессоров системы. Такой объект не нуждается в ассоциации с каким-либо процессом, он может быть создан, запущен и уничтожен ядром при помощи специальных функций. В результате ядру системы не нужно переотображать виртуальное адресное пространство при переключении нитей ядра 116).

Следовательно, переключение контекста нити ядра менее затратно, чем переключение контекста процесса. ' Нити ядра были представлены в Яо!аг!з 2.0, а доступный разработчикам иитерфейс в оо!аг!а 2.2. 122 Глава 3. Нити и легковесные процессы Нить ядра требует минимального количества ресурсов в виде небольшой структуры данных и стека. Структура данных нити ядра содержит следующую информацию: + сохраненная копия регистров ядра; + приоритет и информация, связанная с расписанием; + указатели на местонахождение нити в очереди планировщика или, если выполнение нити блокировано, в очереди ожидания ресурсов; + указатель на стек; + указатели на связанные с нитью структуры Ьр и ргос (равны Х()Е1, если нить выполняется не в рамках 1ЛЪгР); + указатели на очередь всех нитей процесса и очередь всех нитей в системе; + информация об 1ЛЪ'Р, связанном с нитью, если таковой существует (см. раздел 3.6.2). Ядро системы Бо!анз организовано как набор внутренних нитей.

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

Такие средства системы будут подробно описаны в разделе 5.6. Нити ядра используются при проведении асинхронных операций, таких как отложенная зались на диск, выполнение обслуживающих процедур 5ТКЕАМ5 и отложенные вызовы (са11оцсз, см. раздел 5.2.1). Это позволяет ядру системы задавать приоритет каждой из подобных операций (посредством установки приоритета нити) и исходя из этих приоритетов планировать их выполнение.

Нити также используются для поддержки легковесных процессов. Для этого каждый процесс 1ЛЪгР «прикреплен» к ядру нитью ядра (однако не все нити ядра имеют свой 1ЛЪ'Р). 3.6.2. Реализация легковесных процессов Легковесные процессы обеспечивают многонитевое выполнение внутри одного процесса. Планирование выполнения 1ЛЪ'Р происходит независимо, и такие процессгя могут выполняться параллельно на многопроцессорных системах. Каждый 1ЛЪгР связан со своей собственной нитью ядра, такая связь не прерывается на протяжении всего жизненного цикла процесса. З.Б. многонитевость в Зо!апа и ЬМР4 123 Традиционные структуры ргос и цзег недостаточны для представления многонитевых процессов. Данные в этих структурах должны быть разделены на информацию, касающуюся каждого процесса и каждого 1.ЪЪ'Р.

В системе Бо!агЬ структура рюс используется для хранения всех данных каждого процесса, в том числе и процессо-зависимой части традиционной области щ Вдобавок к структурам, описывающим процесс в ядре, появляется новая структура — Ьтр, которая хранит информацию о каждой 1ЛЧР-составляющей контекста процесса. Структура Кчр содержит следующую информацию: + сохраненные значения регистров прикладного уровня (когда ьЮР не выполняется); + аргументы системного вызова, результаты работы и код ошибки; + информацию об обработке сигналов; + данные об использовании ресурсов и данные профиля процесса; + время подачи сигналов тревоги; + значения времени работы в режиме задачи и использования процессора; + указатель на нить ядра; + указатель на структуру ргос.

Структура !ар может быть выгружена вместе с легковесным процессом, поэтому невыгружаемая по определению информация, например маски некоторых сигналов, хранится в структуре нити, связанной с 1.ЮР. В реализации системы под архитектуру 5рагс для хранения указателя на текущую нить используется глобальный регистр '/ой7, что дает возможность быстрого доступа к текущему 1ЛЧР и процессу. Для легковесных процессов (и нитей ядра) доступны основные средства синхронизации, такие как взаимные исключения, условные переменные, семафг)ры и защелки чтения-записи.

Эти средства будут более подробно описаны в разделе 7. Каждое из приведенных средств может определять различные варианты поведения нитей. Например, если нить попытается получить доступ к объекту пшгех, удерживаемому другой нитью, то она либо перейдет в цикл активного ожидания освобождения объекта пшгех, либо блокируется до момента этого события. Когда объект синхронизации инициализируется, источник вызова этого объекта должен указать, какое поведение для него ожидается. Все 1.ЮР используют общий набор обработчиков сигналов. Однако каждый 1ЖР может обладать собственной маской сигналов, решая самостоятельно, какие из полученных сигналов нужно игнорировать или блокировать. Любой ЫЧР также имеет возможность определить свой собственный альтернативный стек для обработки сигналов.

Все сигналы делятся на две категории: ловушки и прерывания. Ловушки представляют собой сигналы, вырабатываемые в ходе действий самого 1ЛГггР (например, 5165Е6Ч, 516ЕРЕ и 5165т5). Такие сигналы всегда передаются легковесному процессу, действия которого при- 124 Глава 3. Нити и легковесные процессы вели к их появлению. Сигналы прерываний (такие как 5165ТОР и 5161йТ) могут быть доставлены любому 1.ЪЪ'Р, который не маскирует эти сигналы. Легковесные процессы не имеют глобального пространства имен и вследствие этого невидимы для других процессов.

Процесс не может направить сигнал напрямую определенному 1.'йгР, принадлежащему другому процессу, а также знать, какой 1.)тгр послал ему сообщение. 3.6.3. Прикладные нити Прикладные нити реализованы в системе при помощи нитевой библиотеки, Они могут создаваться, уничтожаться и обрабатываться без участия ядра. Библиотека также предоставляет средства синхронизации и планирования нитей. Это позволяет процессу использовать большое количество нитей, не потребляя при этом ресурсы ядра и не загружая систему лишними вызовами. Хотя в системе Яо!анз прикладные нити реализованы на основе 1.%Р, нитевая библиотека скрывает эти детали, позволяя разработчикам приложений иметь дело только с прикладными нитями.

Характеристики

Тип файла
PDF-файл
Размер
8,36 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6367
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее