МЕЖДУНАРОДНЫЙ БАНКОВСКИЙ ИНСТИТУТ
INTERNATIONAL BANKING INSTITUTE
ТЕМА 2. УПРАВЛЕНИЕ РЕСУРСАМИ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ
Цель темы: раскрыть принципы функционирования современных операционных систем по управлению ресурсами вычислительных систем.
В результате изучения темы обучающиеся должны усвоить:
понятие "мультипрограммирование". Назначение процессов и потоков, планирование и диспетчеризацию потоков в современных операционных системах;
назначение прерываний и их классификацию;
основные алгоритмы распределения оперативной памяти между процессами;
понятие виртуальной памяти и ее использование в современных операционных системах;
принципы кэширования данных;
назначение и функции контроллеров и драйверов устройств ввода-вывода данных;
правила организации внешней памяти на магнитных дисках. Задачи низкоуровневого и высокоуровневого форматирования жесткого диска;
принципы функционирования современных файловых систем;
механизм контроля доступа к объектам, реализуемый в современных операционных системах.
|
Оглавление
Важнейшей функцией операционной системы является организация рационального использования всех ее ресурсов: процессоров, памяти, внешних устройств, данных и программ. Особенно эта задача актуальна в мультипрограммных операционных системах, в которых за ресурсы конкурируют сразу несколько приложений.
2.1. Мультипрограммирование
Мультипрограммирование, или многозадачность, – это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ, совместно использующих все ресурсы компьютера. Мультипрограммирование призвано повысить эффективность использования вычислительной системы.
2.1.1. Классификация мультипрограммных операционных систем
В зависимости от выбранного критерия эффективности операционные системы делятся на системы пакетной обработки, системы разделения времени и системы реального времени.
В системах пакетной обработки критерий эффективности – максимальная пропускная способность компьютера, т. е. решение максимального числа задач в единицу времени. Достигается это за счет минимизация простоев всех устройств компьютера и прежде всего центрального процессора.
Системы пакетной обработки предназначены для решения задач в основном вычислительного характера, не требующих быстрого получения результатов.
Для одновременного выполнения формируется пакет, в который выбираются задачи, предъявляющие разные требования к ресурсам, так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной системы. Выбор нового задания из пакета для его выполнения зависит от текущей ситуации в вычислительной системе, т. е. выбирается самое выгодное для системы задание, которому необходимы ресурсы, наиболее свободные в данный момент.
Переключение процессора с выполнения одной задачи на выполнение другой задачи происходит по инициативе самой активной задачи, например, когда она отказывается от процессора из-за необходимости выполнить операцию ввода-вывода. Поэтому существует высокая вероятность того, что одна задача может надолго занять процессор и выполнение интерактивных задач станет невозможным.
Следовательно, в вычислительной системе, работающей под управлением пакетной ОС, невозможно гарантировать выполнение того или иного задания в определенный период времени. Однако общее время выполнения пакета задач часто оказывается меньше, чем суммарное время их последовательного выполнения.
Операционные системы с пакетной обработкой используются в компьютерах типа мэйнфреймов, процессорное время которых относительно дорого. Работа таких ОС повышает эффективность функционирования аппаратуры, но снижает эффективность работы пользователей.
В системах разделения времени критерий эффективности – повышение удобства работы пользователей, которые могут интерактивно работать одновременно с несколькими приложениями на одной машине.
Для этого каждому приложению попеременно выделяется одинаковый квант времени. Таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать с ними диалог. Если квант времени выбран небольшим, то у всех пользователей складывается впечатление, что каждый из них единолично использует машину.
Такие системы обладают меньшей пропускной способностью, чем системы с пакетной обработкой, и применяются для многотерминальных или многооконных компьютеров, т. е. в большинстве универсальных ОС.
В системах реального времени критерий эффективности – реактивность системы, т. е. ее способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата.
В таких системах мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ, а выбор программы на выполнение осуществляется по прерываниям или в соответствии с расписанием плановых работ.
Операционные системы реального времени применяются в специализированных компьютерах, например, управляющих каким-то технологическим процессом.
Не следует путать мультипрограммирование с мультипроцессорной обработкой. В мультипрограммных системах в процессоре в каждый момент времени выполняется только одна программа (процесс), т. е. параллельность выполнения задач имеет общий характер. В мультипроцессорных системах разные задачи могут действительно параллельно выполняться на разных процессорах.
Мультипроцессорные системы различаются архитектурой на симметричную и асимметричную.
В симметричной архитектуре все процессоры однородны и пользуются одной и той же оперативной памятью, поэтому располагаются в одном корпусе.
При этом вычислительный процесс может быть реализован двумя способами: симметричным и асимметричным мультипроцессированием. Симметричное мультипроцессирование реализуется общей для всех процессоров операционной системой. Все процессоры равноправно участвуют и в управлении вычислительным процессом, и в выполнении прикладных задач.
В случае отказа одного из процессоров системы с симметричным мультипроцессированием, как правило, сравнительно легко реконфигурируются, что является их большим преимуществом.
Асимметричное мультипроцессирование предполагает выделение одного из процессоров в качестве «ведущего», на котором работает операционная система, и который управляет всеми остальными «ведомыми» процессорами. Такая операционная система проще, чем на основе симметричного мультипроцессирования.
В асимметричной архитектуре процессоры могут различаться как своими характеристиками, так и своей функциональной ролью в системе. Например, одни процессоры предназначены для работы в качестве основных вычислителей, другие – для управления подсистемой ввода-вывода, третьи – еще для каких-то целей. При этом вычислительный процесс может быть организован только путем асимметричного мультипроцессирования. На основе асимметричной архитектуры строятся кластерные системы.
Большинство современных персональных компьютеров тоже можно считать многопроцессорными и построенными по ассиметричной архитектуре. У них есть один центральный процессор, на котором работает операционная система, и специализированные процессоры – видеоадаптер, аудиоадаптер и другие, выполняющие самостоятельные задачи.
2.1.2. Управление процессами и потоками
Механизм многопоточной обработки
Подсистема управления процессами и потоками ответственна за обеспечение процессов необходимыми ресурсами компьютера. В последнее время все чаще используются параллельные вычисления в рамках одного процесса. Примером необходимости распараллеливания является сетевой сервер баз данных. В этом случае параллелизм желателен как для обслуживания различных запросов к базе данных, так и для более быстрого выполнения отдельного запроса за счет одновременного просмотра различных записей базы.
Средством распараллеливания вычислений в современных ОС является механизм многопоточной обработки. При этом вводится новая единица работы – поток выполнения.
Понятию поток выполнения соответствует последовательный переход процессора от одной команды программы к другой.
Операционная система распределяет процессорное время между потоками. Процессу назначается адресное пространство и набор ресурсов, которые совместно используются всеми потоками.
Создание потоков требует от ОС меньше накладных расходов, чем процессов. В отличие от процессов, которые принадлежат разным конкурирующим за ресурсы приложениям, все потоки одного процесса всегда принадлежат одному приложению. Вследствие этого операционная система изолирует потоки в гораздо меньшей степени, нежели процессы в традиционной мультипрограммной системе. Чтобы организовать взаимодействие и обмен данными, потокам не требуется обращаться к ОС, им достаточно использовать общую память – один поток записывает данные, а другой их читает.
Таким образом, мультипрограммирование более эффективно на уровне потоков, а не задач. Каждый поток имеет в процессоре собственный счетчик команд и стек. Задача, оформленная в виде нескольких потоков в рамках одного процесса, может быть выполнена быстрее за счет псевдопараллельного (или параллельного в мультипроцессорных системах) выполнения ее отдельных частей. Особенно эффективна многопоточность в мультипроцессорных системах.
Создание процессов и потоков
Создать процесс – это, прежде всего, означает создать описатель процесса (дескриптор процесса), в котором содержатся все сведения о процессе, необходимые операционной системе для управления им. Обычно описатель процесса состоит из двух частей – собственно дескриптора и контекста процесса, которые доступны только ядру ОС.
Дескриптор содержит информацию о процессе, необходимую ядру ОС в течение всего жизненного цикла процесса независимо от того, находится он в активном или пассивном состоянии. Дескрипторы отдельных процессов хранятся в таблице процессов, которая постоянно находится в оперативной памяти ядра операционной системы. В дескрипторе имеется указатель на место расположения контекста процесса.
Контекст процесса содержит менее оперативную, но более объемную часть информации о процессе, необходимую для возобновления процесса с прерванного места: содержимое регистров процессора, информацию о всех открытых данным процессом файлах, незавершенные операции ввода-вывода и другие данные. Контекст находится в оперативной памяти непосредственно рядом с образом процесса и перемещается вместе с ним на диск, если есть в этом необходимость.
Создание процесса включает загрузку кодов и данных исполняемой программы с диска в выделенную область оперативной памяти или в область подкачки – специальную область диска, где хранятся вытесненные из оперативной памяти процессы.
Создание описателя процесса знаменует собой появление в системе еще одного претендента на вычислительные ресурсы. Начиная с этого момента при распределении ресурсов ОС должна принимать во внимание потребности нового процесса.
При выполнении этих действий подсистема управления процессами тесно взаимодействует с подсистемой управления памятью и файловой системой.
В многопоточной системе операционная система при создании процесса создает для каждого процесса как минимум один поток выполнения. При этом так же, как и при создании процесса, операционная система генерирует специальную информационную структуру – описатель потока.
В исходном состоянии поток (или процесс – для систем без многопоточности) находится в приостановленном состоянии. Момент выборки потока на выполнение осуществляется в соответствии с принятым в данной системе правилом предоставления процессорного времени и с учетом всех существующих в системе процессов и потоков.
Планирование и диспетчеризация потоков
На протяжении существования процесса выполнение его потоков может быть неоднократно прервано и продолжено. Переход от выполнения одного потока к другому осуществляется в результате планирования и диспетчеризации.
Планирование – это работа операционной системы по определению того, в какой момент необходимо прервать выполнение текущего активного потока и какому потоку предоставить возможность выполняться.
В большинстве ОС универсального назначения планирование осуществляется динамически, т. е. решения принимаются во время работы системы на основе анализа текущей ситуации.
Почти во всех современных ОС реализованы вытесняющие алгоритмы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на другой принимается операционной системой.
При планировании потоков, как правило, применяются смешанные алгоритмы планирования, основанные как на квантовании (выделении потоку кванта времени использования процессора), так и на приоритетах.
В основе планирования лежит квантование, но величина кванта и/или порядок выбора потока из очереди готовых определяется приоритетом потоков. При этом могут приниматься во внимание не только приоритет потоков, но время их ожидания в очереди, накопленное время выполнения и другие факторы. Часто низкоприоритетным процессам выделяется больший квант времени, чем высокоприоритетным. Поэтому хотя они и реже получают доступ к процессору, но зато дольше его могут занять.
Операционная система планирует выполнение потоков независимо от того, принадлежат ли они одному процессу или разным.
Диспетчеризация – это реализация найденного в результате планирования решения, т. е. сам процесс переключения процессора с одного потока на другой.
Диспетчеризация сводится к следующему:
сохранение контекста текущего потока, который требуется сменить;
загрузка контекста нового потока, выбранного в результате планирования;
запуск нового потока на выполнение.
В контексте потока можно выделить часть, общую для всех потоков процесса, и часть, относящуюся только к данному потоку. Потому часто общую часть выделяют как глобальный контекст, доступный всем потокам процесса и который не надо менять при смене потоков одного процесса. Меняется только локальный контекст, необходимый конкретному потоку. Это ускоряет переключение потоков.
В мультипрограммной системе поток может находиться в одном из трех основных состояний:
выполнение – активное состояние потока, когда он выполняется процессором;
ожидание – пассивное состояние потока, когда он заблокирован по своим внутренним причинам (ждет осуществления некоторого события или освобождения необходимого ресурса, кроме процессора);
готовность – пассивное состояние потока, когда он заблокирован внешними обстоятельствами, т. е. готов использовать процессор, но ему его не дают.
В состоянии выполнения в однопроцессорной системе может находиться не более одного потока, а в других состояниях – по несколько потоков, которые образуют очереди ожидающих и готовых потоков.
2.1.3. Мультипрограммирование на основе прерываний
Система прерываний переводит процессор на выполнение потока команд, отличного от того, который выполнялся до сих пор, с последующим возвратом к исходному потоку.
В зависимости от источника прерывания делятся на три класса:
внутренние;
внешние;
программные.
|