Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
• идентификатор процесса (Process Identifier, PID);
• тип (или класс) процесса, который определяет для супервизора некоторые пра-
вила предоставления ресурсов;
• приоритет процесса, в соответствии с которым супервизор предоставляет ре-
сурсы (в рамках одного класса процессов в первую очередь обслуживаются бо-
лее приоритетные процессы);
• переменную состояния, которая определяет, в каком состоянии находится про-
цесс (готов к работе, выполняется, ожидает устройства ввода-вывода и т. д.);
• контекст задачи, то есть защищенную область памяти (или адрес такой обла-
сти), в которой хранятся текущие значения регистров процессора, когда про-
цесс прерывается, не закончив работы;
• информацию о ресурсах, которыми процесс владеет и/или имеет право пользо-
ваться (указатели на открытые файлы, информация о незавершенных опера-
циях ввода-вывода и др.);
• место (или его адрес) для организации общения с другими процессами;
• параметры времени запуска (момент времени, когда процесс должен активизи-
роваться, и периодичность этой процедуры);
• в случае отсутствия системы управления файлами адрес задачи на диске в ее
исходном состоянии и адрес на диске, куда она выгружается из оперативной па-
мяти, если ее вытесняет другая задача (последнее справедливо для диск-резидент-
ных задач, которые постоянно находятся во внешней памяти на системном маг-
нитном диске и загружаются в оперативную память только на время выполнения).
Описатели задач, как правило, постоянно располагаются в оперативной памяти
с целью ускорить работу супервизора, который организует их в списки (очереди)
и отображает изменение состояния процесса перемещением соответствующего опи-
сателя из одного списка в другой. Для каждого состояния (за исключением состо-
яния выполнения для однопроцессорной системы) операционная система ведет
соответствующий список задач, находящихся в этом состоянии. Однако для со-
стояния ожидания обычно имеется не один список, а столько, сколько различных
видов ресурсов могут вызывать состояние ожидания. Например, состояний ожи-
дания завершения операции ввода-вывода может быть столько, сколько устройств
ввода-вывода имеется в системе.
В ныне широко распространенных системах Windows NT/2000/X P количество
описателей нигде в явном виде не задается. Это переменная величина, и она опре-
деляется самой операционной системой.
В операционных системах реального времени чаще всего количество процессов
фиксируется, и, следовательно, целесообразно заранее определять (на этапе гене-
рации или конфигурирования ОС) количество дескрипторов.
ОЗУ-резидентная задача, или просто резидентная задача независимо от того,
выполняется в данный момент или нет всегда находится в памяти
Процессы и задачи
Хотя понятия мультипрограммного и мультизадачного режимов работы достаточ-
но близки, это все-таки не одно и то же. К сожалению, здесь до сих пор имеется
некоторая путаница.
Мультипрограммный режим предполагает, что операционная система организует
параллельное выполнение нескольких вычислительных процессов на одном ком-
пьютере. Мультипрограммный режим обеспечивает для процессов их независимость.
Каждому процессу операционная система выделяет затребованные ресурсы, он выполняется как бы на отдельной виртуальной машине. Средства защиты системы должны обеспечить невмешательство одного вычислительного процесса в другой вычислительный процесс. И если такую защиту обеспечить невозможно, то система не может считаться надежной.
Термин мультизадачный режим работы стали применять как раз для тех случаев,
когда необходимо обеспечить взаимодействие между вычислениями. Мультиза-
дачный режим означает, что операционная система позволяет организовать парал-
лельное выполнение вычислений, и имеются специальные механизмы для передачи
данных, синхросигналов, каких-либо сообщений.
При мультизадачном режиме разработчик программы должен позаботиться о разделении ресурсов между его задачами. Операционная система будет всего лишь разделять процессорное время между задачами.
для реализации мультизадачноти в ее исходном толковании необходимо было ввести соответствующую сущность. Такой сущностью стали легковесные (thin) процессы, или, как их теперь преимущественно называют, потоки выполнения нити, или треды (threads).
Когда говорят о процессах (process), то тем самым хотят отметить, что операцион-
ная система поддерживает их обособленность: у каждого процесса имеется свое
виртуальное адресное пространство, каждому процессу назначаются свои ресур-
сы — файлы, окна, семафоры и т. д. Такая обособленность нужна для того, чтобы
защитить один процесс от другого, поскольку они, совместно используя все ресур-
сы вычислительной системы, конкурируют друг с другом за доступ к ресурсам.
сущность «поток выполнения» была введена для того, чтобы именно с помо-
щью этих единиц распределять процессорное время между возможными работа-
ми. Сущность «процесс» предполагает, что при диспетчеризации нужно учиты-
вать все ресурсы, закрепленные за ним. При манипулировании задачами-потоками
можно менять только контекст задачи, если мы переключаемся с одной задачи на
другую в рамках одного процесса.
кроме разделения адресного пространства, все потоки разделяют также набор открытых файлов, устройства, выделенные процессу, имеют одни и те же наборы сигналов, семафоры и т. п. Собственными являются программный счетчик, стек, рабочие регистры процессора, потоки-потомки, состояние.
Для того чтобы можно было эффективно организовать параллельное выполнение
рассмотренных сущностей (процессов и потоков), в архитектуру современных про-
цессоров включены средства для работы со специальной информационной структурой, описывающей ту или иную сущность.
Для хранения контекста задачи в микропроцессорах с архитектурой i32 имеется специальный сегмент состояния задачи (Task State Segment, TSS). А для отображения информации о процессе используется уже иная информационная структура, однако она включает в себя TSS. Другими словами, сегмент состояния задачи, подробно рассматриваемый в разделе «Адресация в 32-разрядных микропроцессорах i80x86 при работе в защищенном режиме» главы 4, используется как основа для дескриптора процесса. Таким образом, дескриптор процесса больше по размеру, чем TSS, и включает в себя такие традиционные поля, как идентификатор процесса, его имя, тип, приоритет и проч.
В завершение можно привести несколько советов по использованию потоков вы-
полнения при создании приложений, заимствованных из [28].
• В случае однопроцессорной системы множество параллельных потоков часто
не ускоряет работу приложения, поскольку в каждый отдельно взятый проме-
жуток времени возможно выполнение только одного потока. Кроме того, чем
больше у вас потоков, тем больше нагрузки на систему, относящиеся к пере-
ключению между ними. Мультизадачность из более двух постоянно работаю-
щих потоков в вашем проекте не сделает программу быстрее, если каждый из
потоков не будет требовать частого ввода-вывода.
• Вначале нужно попять, для чего необходим поток. Поток, осуществляющий
обработку, может помешать системе быстро реагировать на запросы ввода-вы-
вода. Потоки позволяют программе отзываться на просьбы пользователя и уст-
ройств, но при этом (в том числе) сильно загружают процессор. Потоки позволя-
ют компьютеру одновременно обслуживать множество устройств, и созданный
вами поток, отвечающий за обработку специфического устройства, как мини-
мум может потребовать столько времени, сколько системе необходимо для об-
работки запросов от всех устройств.
• Потокам можно назначать разные приоритеты для того, чтобы наименее значи-
мые процессы выполнялись в фоновом режиме. Это путь честного разделения
ресурсов процессора. Однако необходимо осознать тот факт, что процессор один
на всех, а потоков много. Если в вашей программе главная процедура передает
нечто для обработки в низкоприоритетный поток, то сама программа становит-
ся просто неуправляемой.
• Потоки хорошо работают, когда они независимы. Но они начинают работать
непродуктивно, когда вынуждены часто синхронизироваться для доступа к об-
щим ресурсам. Взаимные блокировки и критические секции отнюдь не добав-
ляют скорости работы системы, хотя без использования этих механизмов взаи-
модействующие вычисления организовывать нельзя.
• Помните, что память виртуальна. Механизм виртуальной памяти (см. раз-
дел «Память и отображения, виртуальное адресное пространство» в главе 3) сле-
дит за тем, какая часть виртуального адресного пространства должна находить-
ся в оперативной памяти, а какая должна быть сброшена в файл подкачки.
Потоки усложняют ситуацию, если они обращаются в одно и то же время к раз-
ным адресам виртуального адресного пространства приложения. Это значи-
тельно увеличивает нагрузку на систему, особенно при небольшом объеме кэш-
памяти. Помните, что реально память не всегда «свободна», как это пишут
в информационных окошках «О системе». Всегда отождествляйте доступ к па-
мяти с доступом к файлу на диске и создавайте приложение с учетом вышеска-
занного.
-Всякий раз, когда любой из ваших потоков пытается воспользоваться общим
ресурсом вычислительного процесса, которому он принадлежит, вы обязаны
каким-то образом легализовать и защитить вашу деятельность. Хорошим сред-
ством для этого являются критические секции, семафоры и очереди сообще-
ний (см. главу 7). Если вы протестировали ваше приложение и не обнаружили
ошибок синхронизации, то это еще не значит, что их там нет. Пользователь мо-
жет создавать самые непредсказуемые ситуации. Это очень ответственный мо-
мент в разработке многопоточных приложений.
-Не возлагайте на поток несколько функций. Сложные функциональные отно-
шения затрудняют понимание общей структуры приложения, его алгоритм. Чем
проще и однозначнее каждая из рассматриваемых ситуаций, тем больше веро-
ятность, что ошибок удастся избежать.
Основные виды ресурсов и возможности их разделения
1) процессорное время
2) память
3) Внешняя память Когда говорят о внешней памяти (например, памяти на магнитных дисках), то собственно память и доступ к ней (процесс обращения к данным) считаются разными видами. Каждый из этих ресурсов может предоставляться, независимо от другого.
Но для полноценной работы с внешней памятью необходимо иметь оба этих ресурса. Собственно внешняя память может разделяться и одновременно, а вот доступ к ней всегда разделяется попеременно.
4) программные модули считаются программными ресурсами и поэтому в принципе могут распределяться между выполняющимися процессами.
Могут быть однократно используемыми и многократно (или повторно) используемыми. Однократно используемыми называют такие программные модули, которые могут быть правильно выполнены только один раз, то есть в процессе своего выполнения они могут испортить себя: либо повреждается часть кода, либо исходные данные, от которых зависит ход вычислений. Очевидно, что однократно используемые программные модули являются неделимым ресурсом. Более того, их, как правило, вообще не распределяют как ресурс
системы. Системные однократно используемые программные модули, как правило, задействуются только на этапе загрузки операционной системы. При этом следует иметь в виду тот очевидный факт, что собственно двоичные файлы, которые обычно хранятся на системном диске и в которых и записаны эти модули, не портятся, а потому могут быть повторно использованы при следующем запуске операционной системы.
Повторно используемые программные модули, в свою очередь, могут быть непривилегированными, привилегированными и реентерабельными. Все они допускают корректное повторное выполнение программного кода при обращении к нему из другой программы.
Привилегированные программные модули работают в так называемом привилегированном режиме, то есть при отключенной системе прерываний (часто говорят, что прерывания закрыты), когда никакие внешние события не могут нарушить естественный порядок вычислений. Программный модуль выполняется до своего конца, после чего он может быть вновь вызван на исполнение из другой задачи (другого вычислительного процесса). Это попеременно разделяемый ресурс.
Непривилегированные программные модули — это обычные программные модули, которые могут быть прерваны во время своей работы. Их нельзя считать разделяемыми, потому что если после прерывания выполнения такого модуля промежуточные результаты для прерванных вычислений могут быть потеряны.
Реентерабельные (допускающие повторные прерывания) программные модули допускают повторное многократное прерывание своего исполнения и повторный их запуск по обращению из других задач (вычислительных процессов). Для этого реентерабельные программные модули должны быть созданы таким образом, чтобы было обеспечено сохранение промежуточных результатов для прерываемых вычислений и возврат к ним. Это может быть реализовано двумя способами: с помощью статических и динамических методов выделения памяти под сохраняемые значения. Основным и наиболее часто используемым является динамический способ. Статический способ выделения памяти – заранее для фиксированного числа вычислительных процессов резервируются области памяти, в которых будут располагаться переменные реентерабельных программных модулей: для каждого процесса — своя область памяти. Чаще всего в качестве таких процессов выступают процессы ввода-вывода, и речь идет о реентерабельных драйверах.
Кроме реентерабельных программных модулей существуют еще повторно входимые (re-entrance). Этим термином называют программные модули, которые тоже допускают свое многократное параллельное использование, но, в отличие от реентерабельных, их нельзя прерывать. Повторно входимые программные модули состоят из привилегированных секций, и повторное обращение к ним возможно только после завершения какой-нибудь из таких секций. В повторно входимых программных модулях четко предопределены все допусти-
мые (возможные) точки входа.
4) Информационные ресурсы –данные. Существуют в виде переменных, находящихся в оперативной памяти, так и в виде файлов. Если процессы используют данные только для чтения, то такие информационные ресурсы можно разделять. Если же процессы могут изменять информационные ресурсы, то необходимо специальным образом организовывать работу с такими данными.
Классификация операционных систем
Основным предназначением ОС является организация эффективных и надежных вычислений, создание различных интерфейсов для взаимодействия с этими вычислениями и с самой вычислительной системой.
Виды классификаций: по назначению, по режиму обработки задач, по способу взаимодействия с системой и, наконец, по способам построения (архитектурным особенностям системы).
1. ОС общего назначения
2. ОС специального назначения.
2.1. ОС для носимых микрокомпьютеров и различных встроенных систем
2.2. Организации и ведения баз данных, решения задач реального времени и т. п.
По режиму обработки задач различают ОС, обеспечивающие однопрограммный и мультипрограммный (мультизадачный) режимы.
Муьтипрограммный режим обеспечивает параллельное выполнение нескольких приложений, и при этом программисты, создающие эти программы, не должны заботиться о механизмах организации их параллель ной работы (эти функции берет на себя сама ОС).
Мультизадачный режим, наоборот, предполагает, что забота о параллельном выполнении и взаимодействии приложений ложится как раз на прикладных программистов.
По способу взаимодействия с компьютером: диалоговые системы и системы пакетной обработки.
В мультитерминальных ОС с одной вычислительной системой одновременно могут работать несколько пользователей, каждый со своего терминала (необходим мультипрограммный режим).
Основной особенностью операционных систем реального времени (ОСРВ) является обеспечение обработки поступающих заданий в течение заданных интервалов времени, которые нельзя превышать.
По основному архитектурному принципу операционные системы разделяются на микроядерные и макроядерные (монолитные).
Глава 2. Управление задачами
Один из основных модулей супервизора операционной системы — диспетчер задач — переводит процессы в одно из состояний в зависимости от того, доступен тот или иной ресурс или не доступен.
В мультизадачной (многопоточной) системе любой процесс содержит хотя бы один поток, то потоку (то есть задаче) ставится в соответствие дескриптор задачи, в котором сохраняется контекст этих вычислений. Сказанное справедливо для мультипрограммных систем, поддерживающих мультизадачный режим.
В мультипрограммных системах, не поддерживающих мультизадачность, контекст
прерванного процесса хранится в дескрипторе этого процесса.
Когда говорят о диспетчеризации, то всегда в явном или неявном виде подразумевают понятие задачи (потока выполнения). Если операционная система не поддерживает механизм потоковых вычислений, то можно заменять понятие задачи понятием процесса.
Ко всему прочему, часто понятие задачи используется в таком контексте, что для его трактовки приходится использовать термин «процесс».
Задача подбора такого множества процессов, которые при своем выполнении будут как можно реже конфликтовать за имеющиеся в системе ресурсы. Такая задача называется планированием вычислительных процессов.
Задачи динамического (или краткосрочного) планирования, то есть текущего наиболее эффективного распределения ресурсов, возникающего практически по каждому событию. Задачи динамического планирования называют диспетчеризацией.
Еще одним доводом в пользу термина «задача» при рассмотрении вопросов организации распределения процессорного времени между выполняющимися вычислениями является аналогичный выбор этой сущности разработчиками процессора.
Для решения вопросов распределения процессорного времени разработчики процессоров вводят специальные информационные структуры и аппаратную поддержку для работы с задачами. Во многих современных микропроцессорах, предназначенных для построения на их основе мощных мультипрограммных и мультизадачных систем, имеются дескрипторы задач.
Микропроцессоры, совместимые с архитектурой ia32. В этих процессорах имеется специальная аппаратная поддержка организации мультизадачного (и мультипрограммного) режима. Речь идет о сегменте состояния задачи (Task State Segment, TSS), который предназначен, прежде всего, для сохранения контекста потока или процесса и который легко позволяет организовать и мультипрограммный, и мультизадачный режимы.
На практике оказалось, что для сохранения контекста потоков эффективнее использовать программные механизмы, хотя они и не обеспечивают такой же надежности, как аппаратные.
Основные функции, связанные с управлением процессами и задачами:
• создание и удаление задач; (формированием и расформирование соответствующей информационной структуры)
• планирование процессов и диспетчеризация задач;
• синхронизация задач, обеспечение их средствами коммуникации.
Создание и удаление задач осуществляется по соответствующим запросам от пользователей или от самих задач. Задача может породить новую задачу. При этом между задачами появляются «родственные» отношения. Порождающая задача называется «отцом», «родителем», а порожденная — «потомком». Отец может приостановить или удалить свою дочернюю задачу, тогда как потомок не может управлять «отцом».
Планирование процессов и диспетчеризация задач.
При распределении процессорного времени между задачами также используется механизм очередей.
Решение вопросов, связанных с тем, какой задаче следует предоставить процессорное время в данный момент, возлагается на специальный модуль операционный системы, чаще всего называемый диспетчером задач.
Вопросы же подбора вычислительных процессов, которые не только можно, но и целесообразно решать параллельно, возлагаются на планировщик процессов.
Планирование и диспетчеризация процессов и задач
Подбор такого множества процессов, которые при своем выполнении будут как можно реже
конфликтовать за имеющиеся в системе ресурсы – планированием вычислительных процессов.
Задачи динамического планирования – диспетчеризация.
Основное различие между долгосрочным и краткосрочным планировщиками заключается в частоте их запуска, например: краткосрочный планировщик может запускаться каждые 30 или 100 мс, долгосрочный – один раз в несколько минут (или чаще; тут многое зависит от общей длительности решения заданий пользователей).
Долгосрочный планировщик выбирает процесс из входной очереди с целью создания неоднородной мультипрограммной смеси. Это означает, что в очереди готовых к выполнению процессов должны находиться в разной пропорции как процессы, ориентированные на ввод-вывод, так и процессы, ориентированные преимущественно на активное использование центрального процессора.
Краткосрочный планировщик решает, какая из задач, находящихся в очереди готовых к выполнению, должна быть передана на исполнение. В большинстве современных операционных систем, с которыми мы сталкиваемся, долгосрочный планировщик отсутствует.
Планирование вычислительных процессов и стратегии планирования
При рассмотрении стратегий планирования, как правило, идет речь о краткосрочном планировании, то есть о диспетчеризации.
Стратегии планирования (обслуживания) определяет, какие процессы мы планируем на выполнение для того, чтобы достичь поставленной цели:
• по возможности заканчивать вычисления (вычислительные процессы) в том же самом порядке, в котором они были начаты;
• отдавать предпочтение более коротким вычислительным задачам;
• предоставлять всем пользователям (процессам пользователей) одинаковые услуги, в том числе и одинаковое время ожидания.
Однопользовательская система должна обеспечить хорошую реакцию системы на запросы от того приложения, с которым сейчас пользователь работает. Для задачи, с которой пользователь непосредственно работает и которую называют задачей переднего плана (foreground task), система устанавливает более высокий уровень приоритета.
Для обеспечения надлежащей работы коммуникационных процессов и для возможности выполнять системные функции приоритет задач пользователя должен быть ниже, чем у тех задач, которые реализуют операции ввода-вывода и иные управляющие функции (для Windows устанавливается в свойствах системы).
Дисциплины диспетчеризации
Существующие дисциплины диспетчеризации процессов могут быть разбиты на два класса: вытесняющие (preemptive) и не вытесняющие (non-preemptive). В первых пакетных операционных системах часто реализовывали параллельное выполнение заданий без принудительного перераспределения процессора между задачами. В большинстве современных ОС для мощных вычислительных систем, а также в ОС для персональных компьютеров, ориентированных па высокопроизводительное выполнение приложений (Windows 9x/NT/2000/XP, Linux, OS/2), реализованы вытесняющие дисциплины диспетчеризации (вытесняющая многозадачность).
дисциплины диспетчеризации (обслуживания) – правила формирования очереди готовых к выполнению задач, в соответствии с которыми формируется эта очередь (список). Речь идет о распределении процессорного времени.
Различают два больших класса дисциплин обслуживания: бесприоритетные и приоритетные.
При бесприоритетном обслуживании выбор задач производится в некотором заранее установленном порядке без учета их относительной важности и времени обслуживания.
При реализации приоритетных дисциплин обслуживания отдельным задачам предоставляется преимущественное право попасть в состояние исполнения.

В концепции приоритетов имеем следующие варианты:
• приоритет, присвоенный задаче, является величиной постоянной;
• приоритет изменяется в течение времени решения задачи (динамический приоритет).
Дисциплина абсолютных приоритетов – позволяет сократить время реакции системы на очередное событие, однако требует детального анализа всей системы для правильного присвоения соответствующих приоритетов всем исполняющимся задачам с тем, чтобы гарантировать обслуживание.
Самой простой в реализации является дисциплина FCFS (First Come First Served — первым пришел, первым обслужен), согласно которой задачи обслуживаются «в порядке очереди», то есть в порядке их появления. Те задачи, которые были заблокированы в процессе работы (например, из-за операций ввода-вывода), после перехода в состояние готовности вновь
ставятся в эту очередь готовности: 1) в конец очереди готовых ( самый простой, применяется чаще всего), 2) диспетчер помещает разблокированную задачу перед теми задачами, которые еще не выполнялись.
Стратегия «по возможности заканчивать вычисления в порядке их появления» относится к не вытесняющим дисциплинам. Преимущество – простота, недостаток – короткие и трудоемкие задания ожидают одинаково. Избежать этого недостатка позволяют дисциплины SJN и SRT.
Правило FCFS (First Come First Served – первым пришел, первым обслужен), применяется и в более сложных дисциплинах диспетчеризации. Например, в приоритетных дисциплинах диспетчеризации, если имеется несколько задач с одинаковым приоритетом, которые стоят в очереди готовых к выполнению задач, то попадают они в эту очередь с учетом времени.
Дисциплина обслуживания SJN (Shortest Job Next — следующим выполняется самое короткое задание) требует, чтобы для каждого задания была известна оценка в потребностях машинного времени. О потребностях сообщает программист язык JCL (Job Control Language — язык управления заданиями). Использовался подсчет реальных потребностей. Диспетчер задач сравнивал заказанное время и время выполнения (в случае превышения указанной оценки ставил данное задание не в начало, а в конец очереди, или использовалась система штрафов),
SJN предполагает, что имеется только одна очередь заданий. Заблокированые – вновь попадали в конец. Задания, которым требовалось очень немного времени для своего завершения, вынуждены были ожидать процессор наравне с длительными работами, что не всегда хорошо.
Для устранения этого недостатка и была предложена дисциплина SRT (Shortest Remaining Time) следующее задание – с самым малым оставшимся временем выполнения.
Все эти три дисциплины обслуживания могут использоваться для пакетных режимов обработки, когда пользователю не нужно ждать реакции системы — он просто сдает свое задание и через несколько часов получает результаты вычислений.
Для интерактивных главное – приемлемое время реакции системы.
Для мультитерминальной – кроме малого времени реакции системы на запрос пользователя желательно, чтобы она обеспечивала и равенство в обслуживании. Стратегия обслуживания, согласно которой главным является равенство обслуживания при приемлемом времени обслуживания, является главной для систем разделения времени. Кстати, UNIX-системы реализуют дисциплины обслуживания, соответствующие именно этой стратегии.
Однопользовательская система с возможностью мультипрограммной обработки: 1) программы, с которыми непосредственно работает пользователь, имели лучшее время реакции, нежели фоновые задания, 2) желательно, чтобы фоновые задания гарантированно получали необходимую им долю процессорного времени.
Для решения перечисленных проблем используется дисциплина обслуживания, называемая карусельной (Round Robin, RR), и приоритетные методы обслуживания.
RR –каждая задача получает процессорное время порциями или, как говорят, квантами времени (time slice). После окончания кванта времени задача снимается с процессора, и он передается следующей задаче. Снятая задача ставится в конец очереди задач, готовых к выполнению. Для оптимальной работы системы необходимо правильно выбрать закон, по которому кванты времени выделяются задачам.
Величина кванта времени выбирается как компромисс между приемлемым временем реакции системы на запросы пользователей (с тем, чтобы их простейшие запросы не вызывали длительного ожидания) и накладными расходами на частую смену контекста задач.
Очевидно, что при прерываниях операционная система вынуждена выполнять большой объем работы, связанной со сменой контекста. Она должна сохранить достаточно большой объем информации о текущем (прерываемом) процессе, поставить дескриптор снятой задачи в очередь, занести в рабочие регистры процессора соответствующие значения для той задачи, которая теперь будет выполняться (ее дескриптор расположен первым в очереди готовых к исполнению задач).
Если величина велика, то при увеличении очереди готовых к выполнению задач реакция системы станет медленной. Если же величина мала, то относительная доля накладных расходов на переключения контекста между исполняющимися задачами увеличится, и это ухудшит производительность системы.
Дисциплина карусельной диспетчеризации более всего подходит для случая, когда все задачи имеют одинаковые права на использование ресурсов центрального процессора.
Если же необходимо ввести механизм приоритетного обслуживания, то это, как правило, делается за счет организации нескольких очередей.
Диспетчеризация без перераспределения процессорного времени, то есть не вытесняющая (non-preemptive multitasking), или кооперативная, многозадачность (cooperative multitasking), — это такой способ диспетчеризации задач, при котором активная задача выполняется до тех пор, пока она сама не отдаст управление диспетчеру задач для того, чтобы тот выбрал из очереди другой, готовый к выполнению процесс или поток. Дисциплины обслуживания FCFS, SJN, SRT относятся к не вытесняющим.
Диспетчеризация с перераспределением процессорного времени между задачами, то есть вытесняющая многозадачность (preemptive multitasking), — это такой способ, при котором решение о переключении процессора с выполнения одной задачи на выполнение другой принимается диспетчером задач, а не самой активной задачей. При вытесняющей многозадачности механизм диспетчеризации задач целиком сосредоточен в операционной системе, и программист может писать свое приложение, не заботясь о том, как оно будет выполняться параллельно с другими задачами (процессами и потоками).
При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения текущей задачи, сохраняет ее контекст в дескрипторе задачи, выбирает из очереди готовых задач следующую и запускает ее на выполнение, загружая ее контекст. Дисциплина RR и многие другие, построенные на ее основе, относятся к вытесняющим.
Разработчики приложений для не вытесняющей операционной среды, возлагая на себя функции диспетчера задач, должны создавать приложения так, чтобы они выполняли свои задачи небольшими частями, чтобы дать время другим задачам.
В системах с вытесняющей многозадачностью такие ситуации, как правило, исключены, так как центральный механизм диспетчеризации, во-первых, обеспечивает все задачи процессорным временем, во-вторых, дает возможность иметь надежные механизмы мониторинга вычислений и, в-третьих, позволяет снять зависшую задачу с выполнения.
распределение функций диспетчеризации между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и достоинством, потому что дает возможность разработчику приложений самому планировать распределение процессорного времени наиболее подходящим для данного фиксированного набора задач образом (разрешаются проблемы совместного использования данных: задача во время каждой итерации использует их монопольно и уверена, что на протяжении этого периода никто другой их не изменит).
Качество диспетчеризации и гарантии обслуживания
гарантия обслуживания. В некоторых дисциплинах, например в дисциплине абсолютных приоритетов, низкоприоритетные процессы получаются обделенными многими ресурсами и, прежде всего, процессорным временем.
Существуют различные дисциплины диспетчеризации, учитывающие жесткие временные ограничения (выполнить к указанному сроку), но не существует дисциплин, которые могли бы предоставить больше процессорного времени, чем может быть в принципе выделено.
Гарантировать обслуживание можно, например, следующими тремя способами.
• Выделять минимальную долю процессорного времени некоторому классу процессов, если по крайней мере один из них готов к исполнению. Например, можно отводить 20 % от каждых 10 мс процессам реального времени, 40 % от каждых 2 с — интерактивным процессам и 10 % от каждых 5 мин — пакетным (фоновым) процессам.
• Выделять минимальную долю процессорного времени некоторому конкретному процессу, если он готов к выполнению.
• Выделять столько процессорного времени некоторому процессу, чтобы он мог выполнить свои вычисления к сроку.
Для сравнения алгоритмов диспетчеризации обычно используются некоторые критерии.
• Загрузка центрального процессора (CPU utilization). В большинстве персональных систем средняя загрузка процессора не превышает 2 - 3 %, доходя в моменты выполнения сложных вычислений и до 100 %. В реальных системах, где компьютеры (например, серверы) выполняют очень много работы, загрузка процессора колеблется в пределах от 15-40 % (для легко загруженного процессора) до 90-100 % (для тяжело загруженного процессора).
• Пропускная способность центрального процессора (CPU throughput). Пропускная способность процессора может измеряться количеством процессов, которые выполняются в единицу времени.
• Время оборота (turnaround time). Для некоторых процессов важным критерием является полное время выполнения, то есть интервал от момента появления процесса во входной очереди до момента его завершения. Это время названо временем оборота и включает время ожидания во входной очереди, время ожидания в очереди готовых процессов, время ожидания в очередях к оборудованию, время выполнения в процессоре и время ввода-вывода.
• Время ожидания (waiting time). Под временем ожидания понимается суммарное время нахождения процесса в очереди готовых процессов.
• Время отклика (response time). Для интерактивных программ важным показателем является время отклика, или время, прошедшее от момента попадания процесса во входную очередь до момента первого обращения к терминалу.
Очевидно, что простейшая стратегия краткосрочного планировщика должна быть направлена на максимизацию средних значений загруженности и пропускной способности, времени ожидания и времени отклика.
Главные причины, приводящие к снижению производительности системы.
• Накладные расходы на переключение процессора. Они определяются не только переключениями контекстов задач, но и (при переключении на потоки другого приложения) перемещениями страниц виртуальной памяти, а также необходимостью обновления данных в кэше (коды и данные одной задачи, находящиеся в кэше, не нужны другой задаче и будут заменены, что приведет к дополнительным задержкам).
• Переключение на другую задачу в тот момент, когда текущая задача выполняет
критическую секцию, а другие задачи активно ожидают входа в свою критическую секцию (см. главу 7). В этом случае потери будут особо велики (хотя вероятность прерывания выполнения коротких критических секций мала).
В случае мультипроцессорных систем применяются следующие методы повыше-
ния производительности системы:
• совместное планирование потоков, при котором все потоки одного приложения (неблокированные) одновременно ставятся на выполнение процессорами и одновременно снимаются с выполнения (для сокращения переключений контекста);
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |


