12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ
12.2 ГЛАВНЫЙ И ПОДЧИНЕННЫЙ ПРОЦЕССОРЫ
Систему с двумя процессорами, один из которых — главный (master) — может работать в режиме ядра, а другой — подчиненный (slave) — только в режиме задачи, впервые реализовал на машинах типа VAX 11/780 Гобл (см. [Goble 81]). Эта система, реализованная вначале на двух машинах, получила свое дальнейшее развитие в системах с одним главным и несколькими подчиненными процессорами. Главный процессор несет ответственность за обработку всех обращений к операционной системе и всех прерываний. Подчиненные процессоры ведают выполнением процессов в режиме задачи и информируют главный процессор о всех производимых обращениях к системным функциям.
Выбор процессора, на котором будет выполняться данный процесс, производится в соответствии с алгоритмом диспетчеризации (Рисунок 12.3). В соответствующей записи таблицы процессов появляется новое поле, в которое записывается идентификатор выбранного процессора; предположим для простоты, что он показывает, является ли процессор главным или подчиненным. Когда процесс производит обращение к системной функции, выполняясь на подчиненном процессоре, подчиненное ядро переустанавливает значение поля идентификации процессора таким образом, чтобы оно указывало на главный процессор, и переключает контекст на другие процессы (Рисунок 12.4). Главное ядро запускает на выполнение процесс с наивысшим приоритетом среди тех процессов, которые должны выполняться на главном процессоре. Когда выполнение системной функции завершается, поле идентификации процессора перенастраивается обратно, и процесс вновь возвращается на подчиненный процессор.
Если процессы должны выполняться на главном процессоре, желательно, чтобы главный процессор обрабатывал их как можно скорее и не заставлял их ждать своей очереди чересчур долго. Похожая мотивировка приводится в объяснение выгрузки процесса из памяти в однопроцессорной системе после выхода из системной функции с освобождением соответствующих ресурсов для выполнения более насущных счетных операций. Если в тот момент, когда подчиненный процессор делает запрос на исполнение системной функции, главный процесс выполняется в режиме задачи, его выполнение будет продолжаться до следующего переключения контекста. Главный процессор реагировал бы гораздо быстрее, если бы подчиненный процессор устанавливал при этом глобальный флаг; проверяя установку флага во время обработки очередного прерывания по таймеру, главный процессор произвел бы в итоге переключение контекста максимум через один таймерный тик. С другой стороны, подчиненный процессор мог бы прервать работу главного и заставить его переключить контекст немедленно, но данная возможность требует специальной аппаратной реализации.
алгоритм schedule_process (модифицированный)
входная информация: отсутствует
выходная информация: отсутствует
{
do while (для запуска не будет выбран один из процессов) {
if (работа ведется на главном процессоре)
for (всех процессов в очереди готовых к выполнению)
выбрать процесс, имеющий наивысший приоритет среди загруженных в память;
else /* работа ведется на подчиненном процессоре */
for (тех процессов в очереди, которые не нуждаются в главном процессоре)
выбрать процесс, имеющий наивысший приоритет среди загруженных в память;
if (для запуска не подходит ни один из процессов)
не загружать машину, переходящую в состояние простоя; /* из этого состояния машина выходит в результате прерывания */
}
убрать выбранный процесс из очереди готовых к выполнению;
переключиться на контекст выбранного процесса, возобновить его выполнение;
}
Рисунок 12.3. Алгоритм диспетчеризации
алгоритм syscall /* исправленный алгоритм вызова системной функции */
входная информация: код системной функции
выходная информация: результат выполнения системной функции
{
if (работа ведется на подчиненном процессоре) {
переустановить значение поля идентификации процессора в соответствующей записи таблицы процессов;
произвести переключение контекста;
}
выполнить обычный алгоритм реализации системной функции;
перенастроить значение поля идентификации процессора, чтобы оно указывало на "любой" (подчиненный);
if (на главном процессоре должны выполняться другие процессы)
произвести переключение контекста;
}
Рисунок 12.4. Алгоритм обработки обращения к системной функции
Программа обработки прерываний по таймеру на подчиненном процессоре следит за периодичностью перезапуска процессов, не допуская монопольного использования процессора одной задачей. Кроме того, каждую секунду эта программа выводит подчиненный процессор из состояния бездействия (простоя). Подчиненный процессор выбирает для выполнения процесс с наивысшим приоритетом среди тех процессов, которые не нуждаются в главном процессоре.
Единственным местом, где целостность структур данных ядра еще подвергается опасности, является алгоритм диспетчеризации, поскольку он не предохраняет от выбора процесса на выполнение сразу на двух процессорах. Например, если в конфигурации имеется один главный процессор и два подчиненных, не исключена возможность того, что оба подчиненных процессора выберут для выполнения в режиме задачи один и тот же процесс. Если оба процессора начнут выполнять его параллельно, осуществляя чтение и запись, это неизбежно приведет к искажению содержимого адресного пространства процесса.
Избежать возникновения этой проблемы можно двумя способами. Во-первых, главный процессор может явно указать, на каком из подчиненных процессоров следует выполнять данный процесс. Если на каждый процессор направлять несколько процессов, возникает необходимость в сбалансировании нагрузки (на один из процессоров назначается большое количество процессов, в то время как другие процессоры простаивают). Задача распределения нагрузки между процессорами ложится на главное ядро. Во-вторых, ядро может проследить за тем, чтобы в каждый момент времени в алгоритме диспетчеризации принимал участие только один процессор, для этого используются механизмы, подобные семафорам.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Главный конфигурационный файл BIND
Главный конфигурационный файл BIND Основные опции BIND задаются в главном конфигурационном файле с именем named.conf. Этот файл обычно располагается в каталоге /etc. В некоторых дистрибутивных пакетах Linux файл с опциями, установленными по умолчанию, в каталоге /etc отсутствует. В
Главный блоггер на фирме
Главный блоггер на фирме Метки: влияние, репутация, корпоративный блог, большой бизнесИногда владелец бизнеса или топ-менеджер лично ведет блог. Свой сетевой дневник есть у президента и исполнительного директора Sun Microsystems, у вице-председателя General Motors, у директора по
Административный апокалипсис, или Главный рубильник
Административный апокалипсис, или Главный рубильник Довольно часто можно услышать такие вопросы: где находится главный рубильник от Интернета? Существует ли такой рубильник? Можно ли отключить Интернет? Это первейшие вопросы из области администрирования доменов,
И последний — самый главный совет
И последний — самый главный совет И последний — самый главный совет. Не путайте социальные сети с мегафоном. На самом деле социальные сети это телефон. Слушайте своих оппонентов и клиентов. Как настоящих так и потенциальных.Удачи!Автор: Ольга Соломатина osolomatina@gmaiLcom
Сверхновые процессоры: Сверхновые процессоры
Сверхновые процессоры: Сверхновые процессоры По-настоящему новая техника создается лишь на иных физических принципах, нежели те, что использовались ранее.В 50-х годах было построено множество ламповых ЭВМ - кровная заинтересованность военных и ученых давала возможность
5.1. Главный секрет – избегать типичных ошибок
5.1. Главный секрет – избегать типичных ошибок Первая проблема цифровой съемки и первое ее отличие от съемки традиционным фотоаппаратом заключается в том, что матрица менее чувствительна, чем фотопленка. Поэтому регистрация цифрового изображения происходит гораздо
2.2.1.2. Процессоры фирмы AMD
2.2.1.2. Процессоры фирмы AMD Компания AMD — старый конкурент компании Intel — почти с момента основания. Производительность, которую обеспечивают процессоры AMD, равна или даже выше (все зависит от приложений, которые вы хотите использовать) производительности процессоров Intel,
Главный разработчик MeeGo ушёл из Nokia Михаил Карпов
Главный разработчик MeeGo ушёл из Nokia Михаил Карпов Опубликовано 06 октября 2010 года Ари Джакси, вице-президент Nokia по разработке устройств на основе системы MeeGo, ушёл с занимаемой должности. Как раз сейчас в компании готовятся продемонстрировать
Internet Explorer 9 и его главный враг Андрей Письменный
Internet Explorer 9 и его главный враг Андрей Письменный ОпубликованоАндрей Письменный Компания Microsoft провела в Москве мероприятие в честь выхода бета-версии браузера Internet Explorer 9. Целью этого события было познакомить публику с достоинствами нового
Главный ресурс
Главный ресурс Государства рождаются, развиваются, умирают. Почему? Что является причиной, стимулом развития и смерти государств? Только ли пассионарность населения? Всегда можно выделить основной ресурс, который определяет развитие государства. По мере накопления
Главный конструктор «Уралов»
Главный конструктор «Уралов» После завершения работ по «Стреле» он с удвоенной энергией берется за создание машины «Урал-1» (той самой, что на много лет стала потом «рабочей лошадкой» во многих ВЦ страны) с дальним прицелом создать семейство машин, начиная от ЭВМ малой
Главный объект не в фокусе
Главный объект не в фокусе Если главный объект на снимке оказался не в фокусе, снимок уже не исправить, его остается удалить (рис. 13.3). Дальний план может быть передан идеально, а объект, который вы снимали, может выйти нечетко. Не доверяйтесь целиком автоматике фотокамеры.
Главный объект не в фокусе
Главный объект не в фокусе Бывает очень обидно, когда главный объект на редком и интересном, удачно скомпонованном кадре оказался не в фокусе. Дальний план передан идеально, фон получился отличным, а человек, животное, птица вышли нечетко, причем исправить такой кадр уже
13-Я КОМНАТА: Кто тут главный
13-Я КОМНАТА: Кто тут главный Вы меня наверняка не знаете, хотя именно благодаря мне журнал выходит регулярно и вообще выпускается.Потому что журнал - не просто какие-то тексты, написанные какими-то там людьми. Журнал - это верстка. А верстаю его я. И поскольку Владимир