Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем.Стр 1 из 17Следующая ⇒
Лекция 1. Тема: Операционная система. Определение. Уровни операционной системы. Функции операционных систем. Понятие операционной системы Причиной появления операционных систем была необходимость создания удобных в использовании компьютерных систем (т.е. КС – совокупность аппаратного и программного обеспечения компьютера). КС создавались для решения практических задач пользователей, но делать это только с помощью аппаратных средств было неудобно, и были созданы прикладные программы. Такие программы выполняли общие операции управления аппаратными средствами, распределением аппаратных ресурсов и т.д. Эти операции были сгруппированы в рамках отдельного уровня программного обеспечения, которые и стали называть операционными системами. Операционная система (ОС) – это программное обеспечение, которое реализует связь между прикладными программами и аппаратными средствами компьютера.
Назначение ОС Операционные системы обеспечивают, во-первых удобство использования КС, во-вторых, эффективность и надежность ее работы. Первая функция свойственна ОС как расширенной машине, вторая – ОС как распределителя аппаратных средств.
ОС как расширенная машина С помощью ОС у прикладного программиста ( а через его программы и у пользователя) должно создаваться впечатление, что он работает с расширенной машиной. Аппаратное обеспечение компьютера недостаточно приспособлено для непосредственного использования в программах. Например, если рассмотреть работу с устройствами ввода-вывода на уровне команд соответствующих контроллеров, то видно, что набор таких команд ограничен и примитивен. ОС скрывает такой интерфейс программного обеспечения, вместо него программисту предлагают интерфейс прикладного программирования (см. рис.1), который использует понятие верхнего уровня – абстракции.
Рисунок 1 – Взаимодействие ОС с аппаратным обеспечением и применениями
Например, при работе с винчестером типовой абстракцией является файл. Работать с файлом проще чем непосредственно с контроллером винчестера (не нужно учитывать перемещения головок дисковода, запускать и останавливать мотор и т.д.), в следствии чего программист может сосредоточиться на сути своего прикладного задания. Взаимодействие с контроллером винчестера осуществляет ОС. Выделение абстракций дает возможность достичь того, что код ОС и прикладных программ не будет требовать изменений при переходе на новое аппаратное обеспечение. Например, если установить на компьютере дисковое устройство нового типа (при условии, что оно поддерживается ОС), все его особенности будут учитаны на уровне ОС, а прикладные программы будут продолжать использовать файл, как и раньше. Такая характеристика системы называется аппаратной независимостью. Можно сказать, что ОС предоставляют аппаратно-независимую среду для прикладных программ.
ОС как распределитель ресурсов ОС должна эффективно распределять ресурсы. Под ресурсами подразумеваются: процессорное время, дисковое пространство, память, средства доступа к внешним устройствам. ОС выступает в роли менеджера этих ресурсов и предоставляет их прикладным программам по требованию. Различают два основных вида распределения ресурсов. В случае пространственного распределения ресурс доступен нескольким пользователям одновременно, при этом каждый из них может использовать часть ресурса (так распределяется память). В случае временного распределения система ставит пользователей в очередь и в соответствии с ней дает им возможность пользоваться ресурсом ограниченное время (так распределяется процессор в однопроцессорных системах). При распределении ресурсов ОС разрешает возможные конфликты, предотвращает несанкционированный доступ программ к тем ресурсам, на которые они не имеют прав, обеспечивает эффективную работу компьютерной системы. Задачи ОС Задачи ОС по управлению ресурсами КС: планирование ресурса; удовлетворение запросов на ресурсы; отслеживание состояния ресурса; учет использования ресурса; разрешение конфликтов между процессами. Управление памятью Во время выполнения программного кода процессор берет инструкции и данные из оперативной (основной) памяти компьютера. При этом такая память отображается в виде массива байт, каждый из которых имеет адрес. ОС отвечает за выделение памяти под защищенное адресное пространство процесса и освобождение памяти после завершения выполнения процесса. Объем памяти, доступный процессу, может изменяться в ходе выполнения – это динамическое распределение памяти. ОС должна обеспечивать возможность выполнения программ, которые отдельно или в совокупности превышают по объему доступную основную память. Для этого в ней должна быть реализована технология виртуальной памяти. Такая технология дает возможность размещать в основной памяти только те инструкции и данные процесса, которые нужны в текущий момент времени, при этом содержимое другой части адресного пространства сохраняется на диске. ОС должна отслеживать свободную и занятую память; выделять память процессам; защищать память; освобождать память при завершении процесса; настраивать адреса программы на конкретную область физической памяти; вытеснять процессы из оперативной памяти на диск и обратно. Задачи подсистемы управления процессами: планирование выполнение процессов; создание и уничтожение процессов; обеспечение процессов необходимыми ресурсами; поддержка синхронизации процессов; обеспечение взаимодействия между процессами. Управление вводом-выводом ОС отвечает за управлениями устройствами ввода-вывода, подключенными к компьютеру. Поддержка таких устройств в ОС обычно выполняется на двух уровнях. К первому, нижнему, уровню относятся драйверы устройств – программные модули, которые управляют устройствами конкретного типа с учетом всех их особенностей. Ко второму уровню относится универсальный интерфейс ввода-вывода, удобный для использования в прикладных программах. ОС должна реализовывать общий интерфейс драйверов ввода-вывода, через который они взаимодействуют с другими компонентами системы. Такой интерфейс дает возможность упростить добавление в систему драйверов для других устройств. Современные ОС предоставляют большой выбор готовых драйверов для конкретных периферийных устройств. Чем больше устройств поддерживает ОС, тем больше у нее шансов на практическое использование. Сетевая поддержка Сетевые системы Современные ОС приспособлены для работы в сети, их называют сетевыми ОС. Средства сетевой поддержки дают ОС возможность: - предоставлять локальные ресурсы (дисковое пространство, принтеры и т.д.); - обращаться к ресурсам других компьютеров по сети, т.е. функционировать как клиент. Реализация функциональности сервера и клиента базируется на транспортных средствах, ответственных за передачу данных между компьютерами в соответствии сетевому протоколу. Распределенные системы Сетевые ОС не скрывают от пользователя наличие сети, сетевая поддержка не определяет в них структуру системы, а дает ей дополнительные возможности. Есть ОС, которые объединяют ресурсы нескольких компьютеров в распределенную систему. Для пользователя такая система выглядит как компьютер с несколькими процессорами. Безопасность данных Под защитой данных подразумевается обеспечение надежности системы (защиту данных от утраты в случае сбоев) и защиту данных от несанкционированного доступа, а так же аудит ОС, резервное копирование файлов и обеспечение отказоустойчивости аппаратуры и ПО. Для защиты от несанкционированного доступа ОС должна обеспечивать наличие средств аутентификации пользователей (система паролей) и их авторизации (проверка прав пользователя).
Интерфейс пользователя Есть два типа средств взаимодействия пользователя с ОС: командный интерпретатор и графический интерфейс пользователя. Командный интерпретатор дает возможность общения с ОС в командном режиме: интерактивно или через запуск командных файлов. Графический интерфейс пользователя дает возможность взаимодействовать с ОС, открывая окна и выполняя команды с помощью меню или кнопок. Подходы к реализации графического интерфейса различны: в Windows-системах средства его поддержи встроены в систему, а в Unix они являются внешними для системы и базируются на стандартных средствах управления вводом-выводом.
Классификация ОС Классификация ОС в зависимости от области их применения: ОС больших ЭВМ (мейнфреймов). Основной характеристикой аппаратного обеспечения, для которого их разрабатывают, является производительность ввода-вывода: большие ЭВМ оснащают значительным количеством периферийных устройств (дисплеев, терминалов, принтеров и т.д.). Такие ОС используют для надежной обработки значительных объемов данных, при этом ОС должна эффективно поддерживать эту обработку (в пакетном режиме или в режиме распределения времени). Примером такой ОС может быть OS/390 фирмы IBM. Серверные ОС. Главная характеристика таких ОС – способность обслуживать большое число запросов пользователей к совместно используемым ресурсам. Для таких систем важна сетевая поддержка. Сейчас для реализации серверов используют универсальные ОС Unix или системы линии Windows XP. Персональные ОС – самая массовая категория. Некоторые ОС этой категории разрабатыва с расчетом на непрофессионального пользователя (линия Windows 2000/ XP/7), другие являются упрощенными версиями универсальных ОС. Особенностью персональных ОС является поддержка графического интерфейса пользователя и мультимедиа-технологии. ОС реального времени. В такой системе каждая операция должна быть гарантированно выполнена в заданном временном интервале. Такие ОС могут управлять полетом космического корабля, технол. процессом и т.д. Существуют специализированные ОС реального времени, такие как QNX и VxWorks. Встроенные ОС. К ним относятся управляющие программы для разнообразных микропроцессорных систем, которые используют в военной технике, системах бытовой электроники, смарт-картах и др. устройствах. К таким системам предъявляют особые требования: размещение в малом объеме памяти, поддержка специализированных средств ввода-вывода, возможность прошивки в ПЗУ. Часто встроенные ОС разрабатывают под конкретное устройство. К универсальным встроенным ОС принадлежат Embedded Linux и Windows CE.
Лекция 2. Лекция 3. Механизмы и политика В ОС прежде всего необходимо выделить набор фундаментальных возможностей, которые предоставляют ее компоненты; эти базовые возможности являются механизмом. С другого бака, необходимо принимать решения относительно использования указанных возможностей; такие решения определяют политику. Т.о., механизм показывает, что реализовано компонентом, а политика – как это можно использовать. Когда за реализацию механизма и политики отвечают разные компоненты, упрощается разработка системы и повышается ее гибкость. Примером отделения механизма от политики является управление вводом-выводом. Базовые механизмы доступа к периферийным устройствам реализуют драйверы. Политику использования этих механизмов задает ПО, которое осуществляет ввод-вывод.
Монолитные системы ОС, в которых все базовые функции сконцентрированы в ядре, называют монолитными системами. В случае реализации монолитного ядра ОС становится производительнее ( процессор не переключается между режимами во время взаимодействия между ее компонентами), но менее надежной (весь ее код выполняется в привилегированном режиме, и ошибка в каждом из компонентов является критичной). Монолитность ядра не означает, что все его компоненты должны постоянно находиться в памяти. Современные ОС дают возможность динамично размещать в адресном пространстве ядра фрагменты кода (модули ядра). Реализация модулей ядра дает возможность так же достичь его расширяемости (для добавления новой функциональности достаточно разработать и загрузить в память соответствующий модуль).
Многоуровневые системы Компоненты многоуровневых систем создают иерархию уровней, каждый из которых основывается на функции предшествующего уровня. Низший уровень непосредственно взаимодействует с аппаратным обеспечением, на высшем уровне реализуются системные вызовы. В традиционных многоуровневых ОС передача управления с верхнего уровня на нижний реализуется как системный вызов. Верхний уровень должен иметь права на выполнение этого вызова, поверка этих прав выполняется с помощью аппаратного обеспечения. Примером такой системы является ОС Multics, разработанная в 60-е годы. Практическое применение именно этого подхода сегодня ограничено из-за низкой продуктивности. Чисто программные ОС сейчас не существуют. Как правило, в современных системах всегда есть средства аппаратной поддержки ОС, которые прямо участвуют в организации вычислительных процессов. К ним относятся: система прерываний, средства поддержки привилегированного режима, средства поддержки виртуальной памяти, системный таймер, средства переключения контекстов процессов (информация о состоянии процесса в момент его приостановки), средства защиты памяти и др. Уровни могут выделяться и в монолитном ядре; в этом случае они поддерживаются программно и дают возможность упростить реализацию системы. Уровни монолитного ядра: 1. Средства абстрагирования от оборудования, которые взаимодействуют с аппаратным обеспечением непосредственно, освобождая от реализации такого взаимодействия другие компоненты системы. 2. Базовые средства ядра, которые отвечают за самые фундаментальные, простейшие действия ядра, такие как запись блока данных на диск. С помощью этих средств выполняются указания верхних уровней, связанных с управлением ресурсами. 3. Средства управления ресурсами (или менеджер ресурсов), которые реализуют основные функции ОС (управление процессами, памятью, вводом-выводом и т.д.). На этом уровне принимаются важнейшие решения по управлению ресурсами, которые выполняются с использованием базовых средств ядра. 4. Интерфейс системных вызовов, который служит для реализации связи с системным и прикладным ПО. Размежевание базовых средств ядра и менеджеров ресурсов соответствует отделению механизмов от политик в архитектуре системы. Базовые средства ядра определяют механизмы функционирования системы, менеджеры ресурсов реализуют политику. Рис. 2.1 – Обработка системного вызова Недостатки многоуровневых ОС: значительные изменения одного из уровней могут иметь трудно предвидимое влияние на смежные уровни; многочисленные взаимодействия между соседними уровнями усложняют обеспечение безопасности.
Системы с микроядром Одно из направления развития современных ОС состоит в том, что в привилегированном режиме реализована только малая часть функций ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В его состав входят машинно-зависимые модули, а также модули, выполняющие базовые механизмы обычного ядра. Все остальные более высокоуровневые функции ядра оформляются как модули, и выполняются процессами в пользовательском режиме (сервера). Поскольку назначением этих компонентов ОС является обслуживание запросов приложений пользователей, утилит и системных обрабатывающих программ, менеджеры ресурсов, вынесенные в пользовательский режим, называются серверами ОС, т.е. модулями, основным назначением которых является обслуживание запросов локальных приложений и других модулей ОС. Серверы могут отвечать за поддержку файловой системы, за работу с процессами, памятью и т.д. Внешние по отношению к микроядру компоненты ОС реализуются как обслуживающие процессы. Между собой они взаимодействуют как равноправные партнеры с помощью обмена сообщениями, которые передаются через микроядро. Микроядро осуществляет связь между компонентами системы и выполняет базовое распределение ресурсов. Чтобы выполнить системный вызов, процесс (клиент) обращается к микроядру. Микроядро отсылает серверу запрос, сервер выполняет работу и пересылает ответ назад, а микроядро пересылает его клиенту (см. рис. 2.2). Клиентами могут быть как процессы пользователя, так и модули ОС. Рисунок 2.2 – Системный вызов в архитектуре с микроядром
Достоинства микроядерного подхода: 1. Небольшие размеры микроядра, что упрощает его разработку и настройку. 2. Высокая надежность системы, вследствие того, что серверы работают в режиме пользователя, и у них нет прямого доступа к аппаратному обеспечению. 3. Большая гибкость и расширяемость системы (ненужные компоненты не занимают место в памяти, расширение функциональности системы сводится к добавлению в нее нового сервера). 4. Возможность адаптации к условиям сети (способ обмена данными между клиентом и сервером не зависти от того, связаны они сетью или находятся на одном компьютере). Главным недостатком микроядерного подхода является снижение продуктивности. Вместо двух переключений режима процессора в случае системного вызова происходит четыре (два – во время обмена между клиентом и микроядром, два – между сервером и микроядром). Данный недостаток является скорее теоретическим, на практике продуктивность и надежность микроядра зависит от качества его реализации.
Системы с гибридным ядром Гибридное ядро (англ. Hybrid kernel) – модифицированные микроядра (минимальная реализация основных функций ядра операционной системы компьютера), позволяющие для ускорения работы запускать «несущественные» части в пространстве ядра. Имеют «гибридные» достоинства и недостатки. Рисунок 2.3 – ОС с разными ядрами
Все рассмотренные подходы к построению операционных систем имеют свои достоинства и недостатки. В большинстве случаев современные операционные системы используют различные комбинации этих подходов. Так, например, сейчас, ядро «Linux» представляет собой монолитную систему с отдельными элементами модульного ядра. При компиляции ядра можно разрешить динамическую загрузку и выгрузку очень многих компонентов ядра – так называемых модулей. В момент загрузки модуля его код загружается на уровне системы и связывается с остальной частью ядра. Внутри модуля могут использоваться любые экспортируемые ядром функции. Существуют варианты ОС GNU (Debian GNU/Hurd), в которых вместо монолитного ядра применяется ядро Mach (такое же, как в Hurd), а поверх него в пользовательском пространстве работают те же самые процессы, которые при использовании Linux были бы частью ядра. Другим примером смешанного подхода может служить возможность запуска операционной системы с монолитным ядром под управлением микроядра. Так устроены 4.4BSD и MkLinux, основанные на микроядре Mach. Микроядро обеспечивает управление виртуальной памятью и работу низкоуровневых драйверов. Все остальные функции, в том числе взаимодействие с прикладными программами, осуществляется монолитным ядром. Данный подход сформировался в результате попыток использовать преимущества микроядерной архитектуры, сохраняя по возможности хорошо отлаженный код монолитного ядра. Наиболее тесно элементы микроядерной архитектуры и элементы монолитного ядра переплетены в ядре Windows NT. Хотя Windows NT часто называют микроядерной операционной системой[1], это не совсем так. Микроядро NT слишком велико (более 1 Мбайт, кроме того, в ядре системы находится, например, ещё и модуль графического интерфейса), чтобы носить приставку «микро». Компоненты ядра Windows NT располагаются в вытесняемой памяти и взаимодействуют друг с другом путем передачи сообщений[1][2], как и положено в микроядерных операционных системах. В то же время все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Причина проста: чисто микроядерный дизайн коммерчески менее выгоден, поскольку менее эффективен (за счет накладных расходов на передачу сообщений там, где можно было обойтись вызовами функций)[источник не указан 363 дня]. Таким образом, Windows NT можно с полным правом назвать гибридной операционной системой. Смешанное ядро, в принципе, должно объединять преимущества монолитного ядра и микроядра: казалось бы, микроядро и монолитное ядро — крайности, а смешанное — золотая середина. В них возможно добавлять драйвера устройств двумя способами: и внутрь ядра, и в пользовательское пространство. Но на практике концепция смешанного ядра часто подчёркивает не только достоинства, но и недостатки обоих типов ядер.
Концепция виртуальных машин В системах виртуальных машин программным путем создают копии аппаратного обеспечения (происходит его эмуляция). Эти копии (виртуальные машины) работают параллельно, на каждой из них функционирует ПО, с которым взаимодействуют прикладный программы и пользователи. Рисунок 2.4 – Архитектура ВМ
См рисунок 2.4. Ядро системы, называемое монитором виртуальных машин (МВМ), выполняется на физической машине, непосредственно взаимодействуя с ее аппаратным обеспечением. Монитор реализует набор виртуальных машин (ВМ). Каждая ВМ является точной копией аппаратного обеспечения, на ней может быть запущена любая ОС, разработанная для данной архитектуры. На разных ВМ одновременно могут функционировать разные ОС. Когда программа из под ОС ВМ выполняет системный вызов, его перехватывает соответствующая ВМ, и выполняет соответствующие аппаратные инструкции (например, ввод-вывод для чтения диска). Эти аппаратные инструкции перехватывает монитор (МВМ) и преобразовывает их на аппаратные инструкции физической машины. ВМ совмесно используют ресурсы реального компьютера (например, дисковое пространство разделяется между ними в виде виртуальных дисков).
Базовая архитектура UNIX UNIX является примером довольно простой архитектуры ОС. Большая часть функциональности этой системы находится в ядре, ядро общается с прикладными программами с помощью системных вызовов (см рис 2.5). Рисунок 2.5 – Базовая архитектура UNIX
Система состоит из трех основных компонентов: подсистемы управления процессами, файловой подсистемы и подсистемы ввода-вывода. Подсистема управления процессами контролирует создание и удаление процессов, распределение системных ресурсов между ними, межпроцессовое взаимодействие, управление памятью. Файловая подсистема обеспечивает единый интерфейс доступа к данным, размещенных на дисковых накопителях и к периферийным устройствам. Такой интерфейс является одной из важнейших особенностей UNIX. Одни и те же системные вызовы используют как для обмена данными с диском, так и для вывода на терминал или принтер (программа работает с принтером так же, как и с файлом). При этом файловая система переадресовывает вызовы соответствующим модулям подсистемы ввода-вывода, и те – непосредственно периферийным устройствам. Кроме того, файловая подсистема контролирует права доступа к файлам, которые в значительной степени определяет привилегии пользователя в системе. Подсистема ввода-вывода выполняет запросы файловой подсистемы, взаимодействуя с драйверами устройств. В UNIX различают два типа устройств: символьные (например, принтер) и блоковые (например, жесткий диск). Основное их отличие в том, что блоковое устройство допускает прямой доступ. Для повышения продуктивности работы с блоковыми устройствами используют буферный кэш – область памяти, в которой сохраняются данные, считанные с диска последними. Во время следующих обращений к этим данным, они могут быть получены из кэша. Современные UNIX-системы несколько отличаются по своей архитектуре. Ø В них выделен отдельный менеджер памяти, отвечающий за поддержку виртуальной памяти. Ø Стандартом для реализации интерфейса файловой подсистемы является виртуальная файловая система, которая абстрагирует этот интерфейс и дает возможность организовать поддержку разных типов файловых систем. Ø В этих системах поддерживается многопроцессорная обработка, а так же многопотоковость. Базовые архитектурные решения, такие как доступ ко всем устройств ввода-вывода через интерфейс файловой системы или организация системных вызовов, остаются неизменными во всех реализациях UNIX. Архитектура Linux В ОС Linux можно выделить три основные части: Ø ядро, которое реализует основные функции ОС (управление процессами, памятью, вводом-выводом и т.д.); Ø системные библиотеки, которые определяют стандартный набор функций для использования в применениях ( выполнение таких функций не требует перехода в привилегированный режим); Ø системные утилиты (прикладные программы, которые выполняют специализированные задачи). Модули ядра Ядро Linux дает возможность по требованию загружать в память и выгружать из нее отдельные секции кода. Такие секции называются модулями ядра и выполняются в привилегированном режиме. Модули ядра дают ряд преимуществ: 1. Код модулей может загружаться в память в процессе работы системы, что упрощает настройку компонентов ядра, прежде всего драйверов. 2. Есть возможность изменять набор компонентов ядра во время выполнения: те из них, которые в этот момент не используются, можно не загружать в память. 3. Модули являются исключением из правила, по которому код, который расширяет функции ядра, в соответствии лицензии Linux должен быть открытым. Это дает возможность производителям аппаратного обеспечения разрабатывать драйверы под Linux, даже если не запланировано давать доступ к их коду. Поддержка драйверов в Linux состоит из трех компонентов: 1. Средства управления модулями дают возможность загружать модули в память и реализовывать обмен данными между модулями и остальной частью ядра. 2. Средства реализации драйверов позволяют модулям сообщать остальной части ядра о том, что новый драйвер стал доступным. 3. Средства разрешения конфликтов дают возможность драйверам устройств резервировать аппаратные ресурсы и защищать их от случайного использования другими драйверами. Один модуль может зарегистрировать несколько драйверов, если это необходимо (например, для двух разных механизмов доступа устройства). Модули могут быть загружены заранее – во время старта системы (загрузочные модули) или в процессе выполнения программы, которая вызывает их функции. После загрузки код модуля находится в том же адресном пространстве, где и остальной код ядра. Ошибка в модуле является критичной для системы. Применения пользователя Применения пользователя в Linux используют функции из системных библиотек и через них взаимодействуют с ядром с помощью системных вызовов.
Компоненты режима ядра Лекция 4. Тема: Процессы и программы. Определения. Состояния процессов Одним из основных понятий, связанных с операционными системами, является процесс – абстрактное понятие, описывающее работу программы. Все функционирующее на компьютере программное обеспечение, включая и операционную систему, можно представить набором процессов. Задачей ОС является управление процессами и ресурсами компьютера или, точнее, организация рационального использования ресурсов в интересах наиболее эффективного выполнения процессов. Для решения этой задачи операционная система должна располагать информацией о текущем состоянии каждого процесса и ресурса. Универсальный подход к предоставлению такой информации заключается в создании и поддержке таблиц с информацией по каждому объекту управления. Общее представление об этом можно получить из рис. 4.1, на котором показаны таблицы, поддерживаемые операционной системой: для памяти, устройств ввода-вывода, файлов (программ и данных) и процессов. Хотя детали таких таблиц в разных ОС могут отличаться, по сути, все они поддерживают информацию по этим четырем категориям. Располагающий одними и теми же аппаратными ресурсами, но управляемый различными ОС, компьютер может работать с разной степенью эффективности. Наибольшие сложности в управлении ресурсами компьютера возникают в мультипрограммных ОС.
Рис. 4.1. Таблицы ОС
Мультипрограммирование (многозадачность, multitasking) – это такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ. Чтобы поддерживать мультипрограммирование, ОС должна определить для себя внутренние единицы работы, между которыми будут разделяться процессор и другие ресурсы компьютера. В ОС пакетной обработки, распространенных в компьютерах второго и сначала и третьего поколения, такой единицей работы было задание. В настоящее время в большинстве операционных систем определены два типа единиц работы: более крупная единица – процесс, или задача, и менее крупная – поток, или нить. Причем процесс выполняется в форме одного или нескольких потоков. Вместе с тем, в некоторых современных ОС вновь вернулись к такой единице работы, как задание (Job), например, в Windows. Задание в Windows представляет собой набор из одного или нескольких процессов, управляемых как единое целое. В частности, с каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соответствующем объекте задания. Квоты включают такие пункты, как максимальное количество процессов (это не позволяет процессам задания создавать бесконтрольное количество дочерних процессов), суммарное время центрального процессора, доступное для каждого процесса в отдельности и для всех процессов вместе, а также максимальное количество используемой памяти для процесса и всего задания. Задания также могут ограничивать свои процессы в вопросах безопасности, например, получать или запрещать права администратора (даже при наличии правильного пароля). Процессы рассматриваются операционной системой как заявки или контейнеры для всех видов ресурсов, кроме одного – процессорного времени. Это важнейший ресурс распределяется операционной системой между другими единицами работы – потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. Каждый процесс начинается с одного потока, но новые потоки могут создаваться (порождаться) процессом динамически. В простейшем случае процесс состоит из одного потока, и именно таким образом трактовалось понятие " процесс" до середины 80-х годов (например, в ранних версиях UNIX). В некоторых современных ОС такое положение сохранилось, т.е. понятие " поток" полностью поглощается понятием " процесс". Как правило, поток работает в пользовательском режиме, но когда он обращается к системному вызову, то переключается в режим ядра. После завершения системного вызова поток продолжает выполняться в режиме пользователя. У каждого потока есть два стека, один используется в режиме ядра, другой – в режиме пользователя. Помимо состояния (текущие значения всех объектов потока) идентификатора и двух стеков, у каждого потока есть контекст (в котором сохраняются его регистры, когда он не работает), приватная область для его локальных переменных, а также может быть собственный маркер доступа (информация о защите). Когда поток завершает работу, он может прекратить свое существование. Процесс завершается, когда прекратит существование последний активный поток. Взаимосвязь между заданиями, процессами и потоками показана на рис. 4.2. Рис. 4.2. Задания, процессы, потоки
Переключение потоков в ОС занимает довольно много времени, так как для этого необходимы переключение в режим ядра, а затем возврат в режим пользователя. Достаточно велики затраты процессорного времени на планирование и диспетчеризацию потоков. Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 (и последующих версиях) используются волокна (Fiber), подобные потокам, но планируемые в пространстве пользователя создавшей их программой. У каждого потока может быть несколько волокон, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон, после чего для работы выбирается другое волокно в контексте того же потока. При этом ОС " не знает" о смене волокон, так как все тот же поток продолжает работу. Таким образом, существует иерархия рабочих единиц операционной системы, которая применительно к Windows выглядит следующим образом (рис. 4.3). Возникает вопрос: зачем нужна такая сложная организация работ, выполняемых операционной системой? Ответ нужно искать в развитии теории и практики мультипрограммирования, цель которой – в обеспечении максимально эффективного использования главного ресурса вычислительной системы – центрального процессора (нескольких центральных процессоров).
Поэтому прежде чем переходить к рассмотрению современных принципов управления процессором, процессами и потоками, следует остановиться на основных принципах мультипрограммирования. Рис. 4.3. Иерархия рабочих единиц ОС
Лекция 5. Лекция 6. Лекция 7. Лекция 8. Тема: Семафоры. Определения. Реализация. Задача взаимодействия производителя и потребителя данных и ее решение с помощью блокировок и семафоров Семафоры могут применяться для различных целей. Их можно использовать для взаимного исключения, синхронизации взаимодействия процессов и управления выделением ресурсов. В зависимости от конкретного применения используются разные начальные значения семафора и различные последовательности вызова методов SImWait() и SimSignal(). 1. Взаимоисключения – с помощью семафора, инициализированного значением 1 можно обеспечить монопольный доступ к общему ресурсу (например, к совместно используемой структуре данных). В описанном применении первым в критическую секцию входит процесс, который первым запросил ее использование с помощью вызова SimWait(). Способ планирования процессов зависит от конкретной реализации и не является частью концепции семафора. Например, при выполнении одним из процессов вызова SimSignal() можно освободить все ожидающие процессы и тогда в критическую секцию войдет тот из них, который первым снова выполнит вызов SimWait(). В этом случае выбор процесса будет определятся алгоритмом планирования, используемым в ОС. Еще одна альтернатива заключается в организации планирования для очередей семафора на основе приоритета процессов, которые в этом случае должны быть известны семафору.
Популярное:
|
Последнее изменение этой страницы: 2016-05-28; Просмотров: 5150; Нарушение авторского права страницы