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

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

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

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

Это уменьшает его производительность, так как доступ к памяти является значительно более медленной процедурой, чем доступ к кашу. Также стоит упомянуть о конвейерных архитектурах, таких как процессоры с сокращенным набором команд (Кедпсед 1пзсгцсг(оп Бег Сошрпсегз, К15С), в которых ядро перед переключением контекста должно очистить конвейер команд. Упомянутые факторы могут влиять не только на реализацию планировщика, но и на его политику. Эта глава начинается описанием обработки прерываний таймера и заданий, основанных на его работе.

Таймер является важным компонентом функционирования планировщика, так как последнему часто необходимо вытеснять выполняющийся процесс по окончанию выделенного ему кванта времени. Остальная часть главы рассказывает об устройстве различных планировшиков и о том, как их функционирование влияет на работу системы. 5.2. Обработка прерываний таймера На каждой (11ч'1Х-машине существует аппаратный таймер, который вырабатывает прерывание в системе через фиксированные промежутки времени. В некоторых машинах операционная система должна увеличивать значение времени, отсчитываемого каждым прерыванием таймера, в других таймер это делает самостоятельно.

Период времени между двумя последующими преры- 188 Глава 5. Планирование процессов ваниями таймера называется тиком процессора, тиком таймера или просто тиком. Большинство компьютеров поддерживают переменные тиковые интервалы. В системах 111ь(1Х продолжительность тика составляет обычно 10 миллисекунд'. Во многих реализациях 111ь)1Х частота таймера (количество тиков в секунду) хранится в специальной константе Н2, которая обычно определена в файле рагат.й. Для тика продолжительностью 10 миллисекунд значение НЕ будет равно 100.

Функции ядра чаще всего измеряют время в количестве тиков, редко используя для этого секунды или миллисекунды. Обработка прерываний сильно зависит от используемой системы. Этот раздел рассказывает о стандартной реализации, которую можно встретить во многих традиционных версиях 131ь(1Х. Обработчик прерываний таймера запускается в ответ на возникновение аппаратного прерывания таймера, являющегося вторым по приоритету событием в системе (после прерывания по сбою питания). Следовательно, обработчик должен запускаться как можно быстрее, а его время работы желательно сводить к минимуму. Обработчик прерываний таймера выполняет следующие задачи: + ведет счет тиков аппаратного таймера по необходимости; + обновляет статистику использования процессора текущим процессом; + выполняет функции, относящиеся к работе планировщика, такие как пересчет приоритетов и действия, выполняющиеся по истечении выделенного кванта времени; + посылает текущему процессу сигнал 516ХСР0, если тот превысил выделенную ему квоту использования процессора; + обновляет часы и другие таймеры системы.

Например, в 5ЧК4 имеется переменная 1оо11, хранящая количество тиков, отсчитанных с момента загрузки системы; + обрабатывает отложенные вызовы (см. раздел 5.2.1); + пробуждает в нужные моменты системные процессы, такие как згнаррег и радедаепгоп; + обрабатывает сигналы тревоги (см. раздел 5.2.2). Некоторые из перечисленных задач не требуют выполнения на каждом тике.

В большинстве систем 111ч1Х определено понятие основного тиха, который равен и тикам таймера (число и зависит от конкретного варианта системы). Планировщик выполняет некоторые из своих задач только с приходом основного тика. Например, в 4.ЗВЯК пересчет приоритетов происходит на каждый четвертый тик, в то время как 5'ьгК4 обрабатывает сигналы тревоги и возобновляет по необходимости работу системных процессов с частотой один раз в секунду. ' Это число не является универсальным и зависит от конкретного варианта сЛ'ПХ.

Продолжительность тика также зависит от разрешения аппаратного таймера. 5.2. Обработка прерываний таймера 189 5.2.1. Отложенные вызовы Отложенный вгязов (са11оцг) представляет собой запись функции, которую ядро системы должно будет вызвать через определенный промежуток времени. Например, в системе зЪ'24 любая подсистема ядра может зарегистрировать отложенный вызов следующим образом: 1пт Го 10 - Ггнеоцс 1уо)г) 1*то)1), саМг 1 агц, )опо г)е)та): где Гп() — функция ядра, которую необходимо запустить, агй — аргумент, который следует передать Гпо. бе(га — временной интервал, через который эта функция должна быть вызвана, выраженный в тиках процессора. Ядро выполняет функцию, определенную в отложенном вызове, в системном контексте.

Следовательно, такая функция не должна переходить в режим ожидания или осуществлять доступ к контексту процесса. Возвращаемое значение 1о 10 может быть использовано для отмены выполнения отложенного вызова: чо)г) цпГ)кеоцс Опт Го 10): Отложенные вызовы могут быть использованы для выполнения различных повторяющихся задач, таких как: + повторная пересылка сетевых пакетов; + некоторые функции планировщика и управления памятью; + мониторинг устройств для предотвращения потери прерываний; + периодический опрос устройств, не поддерживающих прерывания. Отложенные вызовы считаются обычными процедурами ядра и не должны выполняться с приоритетами прерываний. Поэтому обработчик прерываний таймера не выполняет эти вызовы напрямую.

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

Ядро системы поддерживает список ожидающих отложенных вызовов, Организация такого списка влияет на производительность системы, так как он может содержать несколько вызовов. Г1оскольку список проверяется на каждом тике с высоким приоритетом прерывания, проверяющий алгоритм должен оптимизировать время проверки.

Время, затрачиваемое на вставку ' Во многих реализациях 1))ч1Х обеспечена некоторая оптимизация механизма обработки прерываний для случая, когда никакие иные прерывания не находятся в ожидании завершения работы наиболее приоритетного обработчика. В такой ситуации обработчик таймера напрямую уменьшает приоритет прерывания и запускает обработчик отложенного вызова. 190 Глава 5.

Планирование процессов 1=1 всьвасрп 1=2 гоппапзЬ|п 1=4 11 1=0 12 Заголовок Порядок выполнения 2 1=1 зсьвосро 1=4 и 1=1 гооппгоЬ|п 1=0 Я Заголовок Порядок выполнения 1 Рис. 5.1. Реализация отложенных вызовов в 580 0ЬПХ: в — начальное состояние списка отложенных вызовов; б — состояние через один тик таймера Еше одним применяемым методом является использование сходного сортированного списка, но хранится в нем абсолютное время запуска для каждого элемента. В таком случае на каждом тике ядро системы сравнивает текущее абсолютное время со временем первого элемента списка и запускает отложенный вызов, если значения совпадут.

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

Если в текущей очереди находятся отложенные вызовы, то происходит проверка их времени запуска. Новые вызовы добавляются в очередь, отстоящую на !ч! элементов от текущей, где !ч'— время до запуска отложенного вызова, выраженное в тиках'. ' Скорее всего, Х вЂ” зто не просто смешение от текущего злемента, а остаток отделения времени запуска на длину массива; например, при длине массива в 100 злементов н времени запуска через 535 тиков 1ч будет равняться 35. — Прим.

ред. нового отложенного вызова в список, является менее критичным, так как вставка обычно происходит при более низких приоритетах и с меныпей частотой, чем одна операция на каждый тик. Существует несколько способов реализации списка отложенных вызовов. Метод, используемый в 4.ЗВЯК !12$ сортирует список в порядке возрастания времени запуска вызовов (типе 10 йге). Каждый элемент списка содержит разницу между временем своего запуска и запуска предыдущего отложенного вызова, Ядро системы уменьшает время первого элемента списка на каждом тике и запускает вызов после того, как это значение станет равным нулю.

Если другие вызовы должны выполниться в это же время, то и они запускаются ядром. Описанная технология графически проиллюстрирована на рис. 5.1. 5.2. Обработка прерываний таймера 191 В результате циклического планирования хэшируются отложенные вызовы на основе времени истечения их ожидания, то есть времени, через которое они должны отработать. Внутри каждой очереди отложенные вызовы могут храниться как в упорядоченном, так и в не сортированном виде. Сортировка сокращает время на обработку непустых очередей, но увеличивает затраты на внесение нового элемента в список. В работе [18] описываются способы улучшения продуктивности этого метода путем использования нескольких иерархически связанных временных колес с целью оптимизации производительности таймера, 5.2.2. Будильники Процесс может запросить ядро системы послать ему сигнал через определенный промежуток времени, что похоже на работу обычного будильника.

Существуют три типа будильников: реального времени, виртуального времени и профиля процесса. Будильник реалы<ого времени работает в действительном времени, по истечении заданного промежутка которого ядро посылает процессу сигнал 516АИМ.

Будильник профиля процесса измеряет время работы процесса и использует сигнал 516РкОЕ. Будильник виртуального времени следит только за количеством времени работы процесса в режиме задачи и посылает сигнал 5167ТАИМ. В ВЗР 111ч1Х существует системный вызов эенс1тег, который позволяет процессу запросить будильник любого типа, указывая интервал времени в микросекундах.

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

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

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

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