Системное программное обеспечение

Автор работы: Пользователь скрыл имя, 28 Января 2013 в 15:44, шпаргалка

Описание

Работа содержит ответы на вопросы для экзамена (или зачета) по дисциплине "Системное программное обеспечение"

Работа состоит из  1 файл

ОС Шпоры.docx

— 207.00 Кб (Скачать документ)

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

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

  Функционирование системы по принципу «ведущий-ведомый» предполагает выделение одного из процессоров в качестве «ведущего», на котором работает операционная система и который управляет всеми остальными «ведомыми» процессорами. То есть ведущий процессор берет на себя функции распределения задач и ресурсов, а ведомые процессоры работают только как обрабатывающие устройства и никаких действий по организации работы вычислительной системы не выполняют.

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

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

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

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

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

Понятия «процесс» и  «поток»

  Чтобы поддерживать мультипрограммирование, ОС должна определить и оформить для себя те внутренние единицы работы, между которыми будет разделяться процессор и другие ресурсы компьютера. В настоящее время в большинстве операционных систем определены два типа единиц работы. Более крупная единица работы, обычно носящая название процесса, или задачи, требует для своего выполнения нескольких более мелких работ, для обозначения которых используют термины «поток», или «нить».

  1. Вытесняющие и не вытесняющие алгоритмы планирования.

С самых общих позиций все  множество алгоритмов планирования можно разделить на два класса: вытесняющие и невытесняющие алгоритмы планирования.

 Невытесняющие  (non-preemptive) алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению поток.

  Вытесняющие (preemptive) алгоритмы — это такие способы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого потока принимается операционной системой, а не активной задачей.

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

Для пользователей это означает, что управление системой теряется на произвольный период времени, который  определяется приложением (а не пользователем). Если приложение тратит слишком много  времени на выполнение какой-либо работы, например на форматирование диска, пользователь не может переключиться с этой задачи На другую задачу, например на текстовый  редактор, в то время как форматирование продолжалось бы в фоновом режиме.

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

  Однако распределение функций планирования потоков между системой и приложениями не всегда является недостатком, а при определенных условиях может быть и преимуществом, потому что дает возможность разработчику приложений самому проектировать алгоритм планирования, наиболее подходящий для данного фиксированного набора задач. Так как разработчик сам определяет в программе момент возвращения управления, то при этом исключаются нерациональные прерывания программ в «неудобные» для них моменты времени. Кроме того, легко разрешаются проблемы совместного использования данных: задача во время каждого цикла выполнения использует их монопольно и уверена, что на протяжении этого периода никто другой не изменит данные. Существенным преимуществом невытесняющего планирования является более высокая скорость переключения с потока на поток.

Понятия вытесняющих и невытесняющих алгоритмов планирования иногда отождествляют с понятиями приоритетных и бесприоритетных дисциплин, что, возможно, связано со звучанием соответствующих англоязычных терминов «preemptive» и «non-preemptive». Однако это совершенно неверно, так как приоритеты в том и другом случаях могут как использоваться, так и не использоваться.

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

  Примером эффективного использования невытесняющего планирования являются файл-серверы NetWare 3.x и 4.x, в которых в значительной степени благодаря такому планированию достигнута высокая скорость выполнения файловых операций. В соответствии с концепцией невытесняющего планирования, чтобы не занимать процессор слишком долго, поток в NetWare сам отдает управление планировщику ОС, используя следующие системные вызовы:

 ThreadSwitch — поток, вызвавший эту функцию, считает себя готовым к немедленному выполнению, но отдает управление для того, чтобы могли выполняться и другие потоки;

 ThreadSwitchWithDelay — функция аналогична предыдущей, но поток считает, что будет готов к выполнению только через определенное количество переключений с потока на поток;

 Delay — функция аналогична предыдущей, но задержка дается в миллисекундах;

 ThreadSwitchLowPriority — функция отдачи управления, отличается от Thread-Switch тем, что поток просит поместить его в очередь готовых к выполнению, но низкоприоритетных потоков.

  1. Алгоритмы планирования потоков, основанные на квантовании и на приоритетах. Смешанные алгоритмы планирования потоков.

Алгоритмы планирования, основанные на квантовании

В основе многих вытесняющих алгоритмов планирования лежит концепция квантования. В соответствии с этой концепцией каждому потоку поочередно для выполнения предоставляется ограниченный непрерывный  период процессорного времени —  квант. Смена активного потока происходит, если:

 1.поток завершился и покинул систему;

 2.произошла ошибка;

 3.поток перешел в состояние ожидания;

 4.исчерпан квант процессорного времени, отведенный данному потоку.

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

Кванты, выделяемые потокам, могут  быть одинаковыми для всех потоков  или различными. Рассмотрим, например, случай, когда всем потокам предоставляются  кванты одинаковой длины q. Если в системе имеется п потоков, то время, которое поток проводит в ожидании следующего кванта, можно грубо оценить как q(n-l). Чем больше потоков в системе, тем больше время ожидания, тем меньше возможности вести одновременную интерактивную работу нескольким пользователям. Но если величина кванта выбрана очень небольшой, то значение произведения q(n-l) все равно будет достаточно мало для того, чтобы пользователь не ощущал дискомфорта от присутствия в системе других пользователей. Типичное значение кванта в системах разделения времени составляет десятки миллисекунд.

Алгоритмы планирования, основанные на приоритетах

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

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

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

Информация о работе Системное программное обеспечение