
Операционная система компьютера — это комплекс взаимосвязанных программ, который действует как интерфейс между приложениями и пользователями, с одной стороны, и аппаратурой компьютера, с другой стороны.
С этой точки зрения функцией ОС является предоставление пользователю некоторой расширенной или виртуальной машины, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальную машину.
В соответствии с этим определением ОС выполняет две группы функций:
■ предоставление пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины, с которой удобней работать и которую легче программировать
■ управление ресурсами компьютера с целью повышения эффективности его использования.
ОС должна управлять всеми ресурсами вычислительной машины таким образом, чтобы обеспечить максимальную эффективность ее функционирования. Критерием эффективности может быть, например, пропускная способность или реактивность системы. Управление ресурсами включает решение двух общих, не зависящих от типа ресурса задач:
планирование ресурса - то есть определение, кому, когда, а для делимых ресурсов и в каком количестве, необходимо выделить данный ресурс;
отслеживание состояния ресурса - то есть поддержание оперативной информации о том, занят или не занят ресурс, а для делимых ресурсов - какое количество ресурса уже распределено, а какое свободно.
2.
Первый период (1945 -1955)
Известно, что компьютер был изобретен английским математиком Чарльзом Бэбиджем в конце восемнадцатого века. Его "аналитическая машина" так и не смогла но-настоящему заработать, потому что технологии того времени не удовлетворяли требованиям по изготовлению деталей точной механики, которые были необходимы для вычислительной техники. Известно также, что этот компьютер не имел операционной системы.
Некоторый прогресс в создании цифровых вычислительных машин произошел после второй мировой войны. В середине 40-х были созданы первые ламповые вычислительные устройства.
Второй период (1955 - 1965)
С середины 50-х годов начался новый период в развитии вычислительной техники, связанный с появлением новой технической базы - полупроводниковых элементов. Компьютеры второго поколения стали более надежными, теперь они смогли непрерывно работать настолько долго, чтобы на них можно было возложить выполнение действительно практически важных задач. Именно в этот период произошло разделение персонала на программистов и операторов, эксплуатационщиков и разработчиков вычислительных машин.
В эти годы появились первые алгоритмические языки, а следовательно и первые системные программы - компиляторы. Стоимость процессорного времени возросла, что потребовало уменьшения непроизводительных затрат времени между запусками программ. Появились первые системы пакетной обработки, которые просто автоматизировали запуск одной программ за другой и тем самым увеличивали коэффициент загрузки процессора.
Третий период (1965 - 1980)
Следующий важный период развития вычислительных машин относится к 1965-1980 годам. В это время в технической базе произошел переход от отдельных полупроводниковых элементов типа транзисторов к интегральным микросхемам, что дало гораздо большие возможности новому, третьему поколению компьютеров.
Для этого периода характерно также создание семейств программно-совместимых машин. Первым семейством программно-совместимых машин, построенных на интегральных микросхемах, явилась серия машин IBM/360. Построенное в начале 60-х годов это семейство значительно превосходило машины второго поколения по критерию цена/производительность. Вскоре идея программно-совместимых машин стала общепризнанной.
Программная совместимость требовала и совместимости операционных систем.
Однако, несмотря на необозримые размеры и множество проблем, OS/360 и другие ей подобные операционные системы машин третьего поколения действительно удовлетворяли большинству требований потребителей. Важнейшим достижением ОС данного поколения явилась реализация мультипрограммирования. Мультипрограммирование - это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ.
Другое нововведение - спулинг (spooling). Спулинг в то время определялся как способ организации вычислительного процесса, в соответствии с которым задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел.
Четвертый период (1980 - настоящее время)
Следующий период в эволюции операционных систем связан с появлением больших интегральных схем (БИС). В эти годы произошло резкое возрастание степени интеграции и удешевление микросхем. Компьютер стал доступен отдельному человеку, и наступила эра персональных компьютеров. Компьютеры стали широко использоваться неспециалистами, что потребовало разработки "дружественного" программного обеспечения, это положило конец кастовости программистов.
На рынке операционных систем доминировали две системы: MS-DOS и UNIX. Однопрограммная однопользовательская ОС MS-DOS широко использовалась для компьютеров, построенных на базе микропроцессоров Intel 8088, а затем 80286, 80386 и 80486. Мультипрограммная многопользовательская ОС UNIX доминировала в среде "не-интеловских" компьютеров, особенно построенных на базе высокопроизводительных RISC-процессоров.
В середине 80-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых или распределенных ОС.
3.
Поддержка многозадачности. По числу одновременно выполняемых задач операционные системы могут быть разделены на два класса:
однозадачные (например, MS-DOS, MSX) и
многозадачные (OC EC, OS/2, UNIX, Windows 95).
Однозадачные ОС в основном выполняют функцию предоставления пользователю виртуальной машины, делая более простым и удобным процесс взаимодействия пользователя с компьютером. Однозадачные ОС включают средства управления периферийными устройствами, средства управления файлами, средства общения с пользователем.
Многозадачные ОС, кроме вышеперечисленных функций, управляют разделением совместно используемых ресурсов, таких как процессор, оперативная память, файлы и внешние устройства.
Поддержка многопользовательского режима. По числу одновременно работающих пользователей ОС делятся на:
однопользовательские (MS-DOS, Windows 3.x, ранние версии OS/2);
многопользовательские (UNIX, Windows NT).
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей. Следует заметить, что не всякая многозадачная система является многопользовательской, и не всякая однопользовательская ОС является однозадачной.
Вытесняющая и невытесняющая многозадачность. Важнейшим разделяемым ресурсом является процессорное время. Способ распределения процессорного времени между несколькими одновременно существующими в системе процессами (или нитями) во многом определяет специфику ОС. Среди множества существующих вариантов реализации многозадачности можно выделить две группы алгоритмов:
невытесняющая многозадачность (NetWare, Windows 3.x);
вытесняющая многозадачность (Windows NT, OS/2, UNIX).
Основным различием между вытесняющим и невытесняющим вариантами многозадачности является степень централизации механизма планирования процессов. В первом случае механизм планирования процессов целиком сосредоточен в операционной системе, а во втором - распределен между системой и прикладными программами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам, по собственной инициативе, не отдаст управление операционной системе для того, чтобы та выбрала из очереди другой готовый к выполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается операционной системой, а не самим активным процессом.
Поддержка многонитевости. Важным свойством операционных систем является возможность распараллеливания вычислений в рамках одной задачи. Многонитевая ОС разделяет процессорное время не между задачами, а между их отдельными ветвями (нитями).
Многопроцессорная обработка. Другим важным свойством ОС является отсутствие или наличие в ней средств поддержки многопроцессорной обработки - мультипроцессирование. Мультипроцессирование приводит к усложнению всех алгоритмов управления ресурсами.
Многопроцессорные ОС могут классифицироваться по способу организации вычислительного процесса в системе с многопроцессорной архитектурой: асимметричные ОС и симметричные ОС. Асимметричная ОС целиком выполняется только на одном из процессоров системы, распределяя прикладные задачи по остальным процессорам. Симметричная ОС полностью децентрализована и использует весь пул процессоров, разделяя их между системными и прикладными задачами.
4.
Редиректор - Средства запроса доступа к удаленным ресурсам и услугам и их использования - клиентская часть
клиент - Клиентская часть также осуществляет прием ответов от серверов и преобразование их в локальный формат, так что для приложения выполнение локальных и удаленных запросов неразличимо.
сервер - Средства предоставления собственных ресурсов и услуг в общее пользование - серверная часть ОC
одноранговые (клиент и сервер) - В зависимости от того, как распределены функции между компьютерами сети, сетевые операционные системы, а следовательно, и сети делятся на два класса: одноранговые и двухранговые. Последние чаще называют сетями с выделенными серверами.
В одноранговых сетях все компьютеры равны в правах доступа к ресурсам друг друга. Одноранговые сети проще в организации и эксплуатации, однако они применяются в основном для объединения небольших групп пользователей, не предъявляющих больших требований к объемам хранимой информации, ее защищенности от несанкционированного доступа и к скорости доступа
двухранговые сети, где сервер лучше решает задачу обслуживания пользователей своими ресурсами, так как его аппаратура и сетевая операционная система специально спроектированы для этой цели.
■ сеть на основе клиентов и выделенных серверов — сеть с выделенными серверами;
■ сеть, включающая узлы всех типов, — гибридная сеть.
Каждая из этих схем обладает своими достоинствами и недостатками, определяющими
их области применения.
Гибридные сети сочетают скорость централизованных сетей и надёжность децентрализованных благодаря гибридным схемам с независимыми индексационными серверами, синхронизирующими информацию между собой. При выходе из строя одного или нескольких серверов сеть продолжает функционировать. К частично децентрализованным файлообменным сетям относятся например EDonkey, BitTorrent.
5.
Операционная система избавляет программистов не только от необходимости
напрямую работать с аппаратурой дискового накопителя, предоставляя им
простой файловый интерфейс, но и берет на себя все другие рутинные операции,
связанные с управлением разнообразными аппаратными устройствами
компьютера: физической памятью, таймерами, принтерами и т. д.
■ предоставление пользователю или программисту вместо реальной аппаратуры компьютера расширенной виртуальной машины, с которой удобней работать и которую легче программировать; Ему не обязательно быть в курсе того, как функционируют различные электронные блоки и электромеханические узлы компьютера.
В результате работы операционной системы реальная машина, способная выполнять только небольшой набор элементарных действий, определяемых ее системой команд, превращается в виртуальную машину, выполняющую широкий набор значительно более мощных функций. Таким образом, назначение ОС состоит в предоставлении пользователю/программисту некоторой усовершенствованной (часто говорят — расширенной) виртуальной машины, которую легче программировать и с которой легче работать, чем непосредственно с аппаратурой, составляющей реальный компьютер или реальную сеть.
■ управление ресурсами компьютера с целью повышения эффективности его использования. Управление ресурсами включает решение следующих общих, не зависящих
от типа ресурса задач:
планирование ресурса — то есть определение, какому процессу, когда и в каком количестве (если ресурс может выделяться частями) следует выделить данный ресурс; удовлетворение запросов на ресурсы; отслеживание состояния и учет использования ресурса — то есть поддержание оперативной информации о том, занят или свободен ресурс и какая доля ресурса уже распределена; разрешение конфликтов между процессами.
6.
Управление процессами (ресурсы, синхрон., взаимодействие между, создание и уничтожение), Управление памятью (Механизм виртуальной памяти позволяет программисту писать программу так, как будто в его распоряжении имеется однородная оперативная память большого объема, часто существенно превышающего объем имеющейся физической памяти +Защита памяти+ выделение+swap), Управление файлами и внешними устройствами,
■ средства управления локальными ресурсами компьютера реализуют все функции ОС автономного компьютера (распределение оперативной памяти между процессами, планирование и диспетчеризацию процессов, управление процессорами в мультипроцессорных машинах, управление внешней Памятью, интерфейс с пользователем и т. д.);
■ сетевые средства, в свою очередь, можно разделить на три компонента:
□ средства предоставления локальных ресурсов и услуг в общее пользование — серверная часть ОС;
□ средства запроса доступа к удаленным ресурсам и услугам — клиентская часть ОС;
□ транспортные средства ОС совместно с коммуникационной системой обеспечивают передачу сообщений между компьютерами сети.
7. Расширяемость – модульная структура ОС. Дополнения и изменения вносятся без нарушения целостности системы. Переносимость (многоплатформенность) – должен легко переноситься с одного типа процессора на другой (или способ организации всей аппаратуры компьюьтера). Совместимость – если есть возможность запустить привычные приложения на другой ОС. (Средства для выполнения прикладных программ, написанные для других ОС). Надежность и отказоустойчивость – система должна быть защищена от внутренних, внешних ошибок, от сбоев и отказов. Безопасность данных и ресурсов пользователя. Производительность – должна быть настолько быстро насколько позволяет аппаратная платформа.
8.
Модули ядра выполняют базовые функции ОС, связанные с управлением
процессами, памятью, устройствами ввода-вывода и т. п. Именно ядро занимается
переключением контекстов, загрузкой/выгрузкой страниц, обработкой прерываний. Непосредственное выполнение такого рода действий недоступно для
приложений. При необходимости они могут обращаться к ядру с системными
вызовами, используя для этого имеющийся в их распоряжении интерфейс прикладного
программирования — API.
Функции, отнесенные в ведение ядра, являются наиболее часто используемыми
функциями операционной системы, поэтому скорость их выполнения определяет
производительность системы в целом.
Обычно ядро оформляется в виде программного модуля некоторого специального
формата, отличающегося от формата пользовательских приложений.
Ядро является движущей силой всех вычислительных процессов в компьютерной
системе, и крах ядра равносилен краху всей системы. Поэтому разработчики
операционной системы уделяют особое внимание надежности кодов ядра.
Вспомогательные модули ОС выполняют весьма полезные, но менее обязательные
функции. Например, к таким модулям могут быть отнесены программы
архивирования данных на магнитной ленте, дефрагментации диска, текстового
редактора. Вспомогательные модули ОС оформляются либо в виде приложений,
либо в виде библиотек процедур.
Вспомогательные модули ОС обычно подразделяются на следующие
группы:
■ утилиты — программы, решающие отдельные задачи управления и сопровождения
компьютерной системы, такие, например, как программы сжатия
дисков, архивирования данных на магнитную ленту;
■ системные обрабатывающие программы — текстовые или графические редакторы,
компиляторы, компоновщики, отладчики;
■ программы предоставления пользователю дополнительных услуг — специальный
вариант пользовательского интерфейса, калькулятор и даже игры;
■ библиотеки процедур различного назначения, упрощающие разработку приложений,
например библиотека математических функций, функций ввода-вывода и т. д.
Разделение операционной системы на ядро и модули-приложения обеспечивает
легкую расширяемость ОС.
9
Для надежного управления ходом выполнения приложений операционная система
должна иметь по отношению к приложениям определенные привилегии.
Иначе некорректно работающее приложение может вмешаться в работу ОС
и, например, разрушить часть ее кодов.
Обеспечить, привилегии операционной системе невозможно без специальных
средств аппаратной поддержки. Аппаратура компьютера должна поддерживать
как минимум два режима работы — пользовательский (user mode)
и привилегированный, который также называют режимом ядра (kernel mode),
или супервизора (supervisor mode). Подразумевается, что операционная система
или некоторые ее части работают в привилегированном режиме, а приложения
— в пользовательском режиме.
Очень важно, что механизмы защиты памяти используются операционной
системой не только для защиты своих областей памяти от приложений, но
и для защиты областей памяти, выделенных ОС какому-либо приложению, от
остальных приложений. Говорят, что каждое приложение работает в своем адресном
пространстве. Это свойство позволяет локализовать некорректно работающее
приложение в собственной области памяти, так что его ошибки не оказывают
влияния на остальные приложения и операционную систему
. Свойство архитектуры ОС, основанной на ядре, отвечающее за возможность защиты кодов и данных ОС за счет выполнения функций ядра в привилегированном режиме. Для того, чтобы приложения не вмешивались в работу системы, сама ОС должна отслеживать, какие приложения должны получать те или иные ресурсы. ОС обладает привилегиями. Но это невозможно без аппаратной поддержки. Аппаратура должна поддерживать 2 режима, минимум: пользовательский и привилегированный (или режим ядра). Подразумевается, что ОС или ее часть работает в режиме ядра, а приложения в пользовательском режиме. Т.к. основные функции выполняет ядро, то именно оно чаще всего и работает в привилегированном режиме. Приложения ставятся в подчиненное положение за счет запрета некоторых критичных команд, например переключение процессора с задачи на задачу, управление устройствами ввода/вывода, доступом к механизмам распределения и защиты памяти.
10.
Вычислительную систему, работающую под управлением ОС на основе ядра,
можно рассматривать как состоящую из трех иерархически расположенных
слоев: нижний слой образует аппаратура, промежуточный — ядро, а утилиты,
обрабатывающие программы и приложения, составляют верхний слой системы
Многослойный подход является универсальным и эффективным способом
декомпозиции сложных систем любого типа, в том числе программных. В соответствии
с этим подходом система состоит из иерархии слоев. Каждый слой обслуживает
вышележащий слой, выполняя для него некоторый набор функций,
которые образуют межслойный интерфейс
Поскольку ядро представляет собой сложный многофункциональный комплекс,
то многослойный подход обычно распространяется и на структуру ядра.
Ядро может состоять из следующих слоев
Средства аппаратной поддержки ОС.
Машинно-зависимые компоненты ОС
Базовые механизмы ядра
Менеджеры ресурсов
Интерфейс системных вызовов.
Ядро также многослойная схема: аппаратура, средства аппаратной поддержки (система прерываний, защита областей памяти), машинно-зависимые компоненты (этот слой экранирует верхние от особенностей аппаратуры, позволяет разрабатывать верхние на основе машинно-независимых модулей), базовые механизмы ядра (примитивные команды ядра, переключение процессов, диспетчеризация прерываний, ВЫПОЛНЕНИЕ, НЕ РЕШЕНИЕ), менеджеры ресурсов (решает какие страницы загрузить на диск, какие процессы переключить), интерфейс системных вызовов (Непосредственное взаимодействие с программами пользователя API, open – открывает файл в UNIX, read – читает некоторое количество байтов).
11.
Многие операционные системы успешно работают на различных аппаратных
платформах без существенных изменений в своем составе. Во многом это объясняется
тем, что, несмотря на различия в деталях, средства аппаратной поддержки
ОС большинства компьютеров приобрели сегодня много типовых черт,
а именно эти средства в первую очередь влияют на работу компонентов операционной
системы. В результате в ОС можно выделить достаточно компактный
слой машинно-зависимых компонентов ядра и сделать остальные слои ОС общими
дляразных аппаратных платформ.
Во многом это объясняется тем, что, несмотря на различия в деталях, средства аппаратной поддержки ОС большинства компьютеров приобрели сегодня много типовых черт, а именно эти средства в первую очередь влияют на работу компонентов операционной системы. В результате в ОС можно выделить достаточно компактный слой машинно-зависимых компонентов ядра и сделать остальные слои ОС общими для разных аппаратных платформ. Переносимость – должен легко переноситься с одного типа процессора на другой (или способ организации всей аппаратуры компьюьтера).
13. Одна и та же ОС не может без изменений устанавливаться на систему со значительными различиями в организации ПК. Однако ядро можно спроектировать так, чтобы только часть модулей были машинно-зависимые. Объем таких модулей зависит от отличий в аппаратных платформах (32 и 16 разрядные вынуждают переписывать код полностью). Однопроцессорные и много процессорные ПК требуют разных алгоритмов распределения памяти. Для уменьшения машинно-зависимых модулей производители ОС обычно ограничивают универсальность модулей. Независимость носит условный характер и распространяется на несколько типов процессора. Но сюда также можно отнести низкоуровневые драйвера, которые отражают особенности управляемых внешних устройств, но они входят в состав менеджера ввода-вывода. Наблюдается двойственность. Может использоваться BIOS как помощь разработчикам, но они могут полностью его заменить компонентами ОС.
12. Четкой границы между программной и аппаратной реализацией функций ОС не существует — решение о том, какие функции ОС будут выполняться программно, а какие аппаратно, принимаются разработчиками аппаратного и программного обеспечения компьютера. Тем не менее практически все современные аппаратные платформы имеют некоторый типичный набор средств аппаратной
поддержки ОС, в который входят следующие компоненты:
■ средства поддержки привилегированного режима; (какой режим текущий, проверка допустимости выполнения команды при текущем уровне привилегий).
■ средства трансляции адресов; (Преобразовывает виртуальные адреса в физические).
■ средство переключения процессов; (Для быстрого сохранения приостанавливаемого процесса и восстановления другого процесса).
■ система прерываний; (Позволяет компьютеру реагировать на внешние события, синхронизировать выполнение процессов и работу устройств ввода-вывода, быстрое переключение программ).
■ системный таймер; (Выдерживает интервалы времени, при значении 0 делает прерывание).
■ средства защиты областей памяти. (Обеспечивает на аппаратном уровне проверку возможности программного кода взаимодействовать с данным участком кода).
14. В микроядерных ОС в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. Все остальные высокоуровневые функции ядра оформляются в виде приложений, работающих в пользовательском режиме. Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят Машинно-зависимые модули, а также модули, выполняющие базовые (но не все!) функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью.
Т ак как часть ОС оформлена в виде приложений в пользовательском режиме, то они выстпупают в роли серверов, к которым обращаются приложения пользователя. Таким образом, работа микроядерной операционной системы соответствует известной модели клиент-сервер, в которой роль транспортных средств исполняет микроядро. 15. Плюсы: высокая степень переносимости (большая часть машинно-зависимого кода изолирована в микроядре), расширяемость (позволяет добавлять и сокращать компоненты ОС), надежность (каждый сервер выполняется в виде отдельного процесса в своей собственной памяти, защищен от других серверов ОС). Подходит для распределенных вычислений (серверы могут находиться на разных ПК, а ОС сама решает оставить задачу здесь или передать ее дальше).
Минусы: производительность (Всегда менее производительна чем обычное ядро т.к. схемы при ядре: приложение – ядро – приложение, а при микроядре: приложение – микроядро – сервер – микроядро – приложение.)
16.
При использовании мультипрограммирования для повышения пропускной
способности компьютера главной целью является минимизация простоев веех
устройств компьютера и, прежде всего, центрального процессора.
В системах пакетной обработки переключение процессора с выполнения одной
задачи на выполнение другой происходит по инициативе самой активной
задачи, например, когда она отказывается от процессора из-за необходимости
выполнить операцию ввода-вывода. Поэтому существует высокая вероятность того,
что одна задача может надолго занять процессор, и выполнение интерактивных задач станет невозможным. Взаимодействие пользователя с вычислительной
машиной, на которой установлена система пакетной обработки, сводится к тому,
что он приносит задание, отдает его диспетчеру-оператору, а в конце дня после
выполнения всего пакета заданий получает результат. Очевидно, что такой порядок
повышает эффективность функционирования аппаратуры, но снижает
эффективность работы пользователя.
Мультипрограммирование, или многозадачность — это такой вариант организации вычислительного процесса, при котором на одном процессоре попеременно выполняются сразу несколько программ. Системы пакетной обработки предназначены для решения задач в основном вычислительного характера, не требующих быстрого получения результатов. Главной целью и критерием эффективности систем пакетной обработки является максимальная пропускная способность (количество задач, выполняемых вычислительной системой в единицу времени). В системах пакетной обработки используется следующая схема функционирования: в начале работы формируется пакет заданий, каждое задание содержит требование к системным ресурсам; из этого пакета заданий формируется мультипрограммная смесь, то есть множество одно
временно выполняемых задач. Для одновременного выполнения выбираются задачи, предъявляющие разные требования к ресурсам так, чтобы обеспечивалась сбалансированная загрузка всех устройств вычислительной машины. Например, в мультипрограммной смеси желательно одновременное присутствие вычислительных задач и задач с интенсивным вводом-выводом. Таким образом, выбор нового задания из пакета заданий зависит от внутренней ситуации, складывающейся в системе, то есть выбирается «выгодное» задание. Следовательно, в вычислительных системах, работающих под управлением пакетных ОС, невозможно гарантировать выполнение того или иного задания в течение определенного периода времени. 17. Система разделения времени — это такая форма организации вычислительного процесса, при которой сразу несколько пользователей одновременно работают на компьютере, причем каждому из них кажется, что он получил компьютер в полное свое распоряжение. Главной целью и критерием эффективности систем разделения времени является обеспечение удобства и эффективности работы пользователей. Другими словами, в системах разделения времени пользователям (в частном случае — одному пользователю) предоставляется возможность интерактивной работы сразу с несколькими приложениями. Для этого каждое приложение должно регулярно получать возможность «общения» с пользователем. Понятно, что в пакетных системах возможности диалога пользователя с приложением весьма ограничены. В системах разделения времени эта проблема решается за счет того, что ОС принудительно периодически приостанавливает приложения, не дожидаясь, когда они добровольно освободят процессор. Всем приложениям попеременно выделяется квант процессорного времени, таким образом, пользователи, запустившие программы на выполнение, получают возможность поддерживать
с ними диалог.
Системы разделения времени призваны исправить основной недостаток систем
пакетной обработки — изоляцию пользователя-программиста от процесса
выполнения его задач.
Ясно, что системы разделения времени обладают меньшей пропускной способностью,
чем системы пакетной обработки, так как на выполнение принимается
каждая запущенная пользователем задача, а не та, которая ≪выгодна≫ системе.
Кроме того, производительность системы снижается из-за возросших
накладных расходов вычислительной мощности на более частое переключение
процессора с задачи на задачу.
18. Еще одна разновидность мультипрограммирования используется в системах реального времени, предназначенных для управления от компьютера различными техническими объектами (станком, спутником) или технологическими процессами (доменным процессом). Очень важно, что во всех этих случаях существует предельно допустимое время, в течение которого должна быть выполнена та или иная управляющая объектом программа. В противном случае может произойти авария: спутник выйдет из зоны видимости. Таким образом, критерием эффективности здесь является способность выдерживать заранее заданные интервалы времени между запуском программы и получением результата (управляющего воздействия). Это время называется временем реакции системы, а соответствующее свойство системы — реактивностью.
Операционная система реального времени — это система, предназначенная для управления физическими объектами (процессами), которая способна обеспечить предсказуемое время реакции в ответ на изменение состояния управляемого объекта (процесса). В системах реального времени мультипрограммная смесь представляет собой
фиксированный набор заранее разработанных программ, а выбор программы
на выполнение осуществляется по прерываниям (исходя из текущего состояния
объекта) или в соответствии с расписанием плановых работ.
В системах реального времени не стремятся максимально загружать все устройства,
наоборот, при проектировании программного управляющего комплекса
обычно закладывается некоторый -≪запас≫ вычислительной мощности на
случай пиковой нагрузки
19. Мультипроцессорная обработка — это такой способ организации вычислительного процесса в системах с несколькими процессорами, при котором несколько задач (процессов, потоков) могут одновременно выполняться на разных процессорах системы. Симметричная архитектура мультипроцессорной системы предполагает однородность всех процессоров и единообразие включения процессоров в общую схему мультипроцессорной системы. В асимметричной архитектуре разные процессоры могут отличаться как своими характеристиками (производительностью, надежностью, системой команд и т. д., вплоть до модели микропроцессора), так и функциональной ролью, которая поручается им в системе. Например, одни процессоры могут предназначаться для работы в качестве основных вычислителей, другие — для управления подсистемой ввода-вывода, третьи — еще для каких-то особых целей. Асимметричное мультипроцессирование является наиболее простым способом организации вычислительного процесса в системах с несколькими процессорами. Этот способ часто называют также «ведущий-ведомый». Симметричное мультипроцессирование как способ организации вычислительного процесса может быть реализовано в системах только с симметричной мультипроцессорной архитектурой. Напомним, что в таких системах процессоры работают с общими устройствами и разделяемой основной памятью.
20. Более крупная единица работы, обычно носящая название процесс, или задача, требует для своего выполнения нескольких более мелких работ, для обозначения которых используют термины поток, или нить. В операционных системах, где существуют и процессы, и потоки, процесс рассматривается операционной системой как заявка на потребление всех видов ресурсов кроме одного — процессорного времени. Этот последний важнейший ресурс распределяется операционной системой между другими единицами работы — потоками, которые и получили свое название благодаря тому, что они представляют собой последовательности (потоки выполнения) команд. В простейшем случае процесс состоит из одного потока. В таких системах понятие «поток» полностью поглощается понятием «процесс», то есть остается только одна единица работы и потребления ресурсов — процесс. Мультипрограммирование осуществляется в таких ОС на уровне процессов.
Для каждого процесса существует свое виртуальное адресное пространство(это совокупность адресов,
которыми может манипулировать программный модуль процесса. Операционная
система отображает виртуальное адресное пространство процесса на отведенную
процессу физическую память.), внутри которого он только и может работать (Способ защиты от других процессов). Все данные, которые процесс создает называют образом процесса. При необходимости взаимодействия процессы обращаются к операционной
системе, которая, выполняя функции посредника, предоставляет им средства
межпроцессной связи — конвейеры, почтовые ящики, разделяемые секции памяти
и некоторые другие. Потоки возникли как средство распараллеливания вычислений. Многопоточная обработка представляет собой механизм
распараллеливания вычислений, который учитывает тесные связи между отдельными ветвями вычислений одного и того же приложения. Понятию «поток» соответствует последовательный переход процессора от одной команды программы к другой команде. ОС распределяет процессорное время между потоками. Процессу ОС назначает адресное пространство и набор ресурсов, которые совместно используются всеми его потоками. Итак, мультипрограммирование более эффективно на уровре потоков, а не процессов. Каждый поток имеет собственные счетчик команд и стек.
Создать процесс — это, прежде всего, означает создать описатель процесса,
в качестве которого выступает одна или несколько информационных структур, содержащих все сведения о процессе, необходимые операционной системе для управления им. В число таких сведений могут входить, например, идентификатор процесса, данные о расположении в памяти исполняемого модуля, степень привилегированности процесса (приоритет и права доступа) и т. п.
Создание описателя процесса знаменует собой появление в системе еще одного претендента на вычислительные ресурсы. Начиная с этого момента при распределении ресурсов ОС должна принимать во внимание потребности нового процесса. При создании процесса используется 2 основных типа информационных структур: дескриптор процесса (содержит инф-ю для ОС во время всей жизни процесса). Контекст процесса – менее оперативная, но более объемная инф-я, нужна для возобновления процесса с прерванного места.
21. На протяжении существования процесса выполнение его потоков может быть многократно прервано и продолжено. Работа по определению того, в какой момент необходимо прервать выполнение текущего активного потока и какому потоку предоставить возможность выполняться, называется планированием. Планирование потоков, по существу, требует решения двух задач:
■ определение момента времени для смены текущего активного потока;
■ выбор для выполнения потока из очереди готовых потоков. В большинстве операционных систем универсального назначения планирование
осуществляется динамически (on-line), то есть решения принимаются во
время работы системы на основе анализа текущей ситуации. ОС работает в условиях
неопределенности — потоки и процессы появляются в случайные моменты
времени и также непредсказуемо завершаются. Динамические планировщики
могут гибко приспосабливаться к изменяющейся ситуации и не делают
никаких предположений относительно мультипрограммной смеси. Для того
чтобы оперативно найти в условиях такой неопределенности оптимальный
в некотором смысле порядок выполнения задач, операционная система должна
затрачивать значительные усилия.
Другой тип планирования — статический. Он может быть использован
в специализированных системах, в которых весь набор одновременно выполняемых
задач определен заранее, например в системах реального времени.
Планировщик называется статическим, или предварительным, если он принимает
решения о планировании не во время работы системы, а заранее (offline).
Соотношение между динамическим и статическим планировщиками аналогично
соотношению между диспетчером железной дороги, который пропускает
поезда строго по предварительно составленному расписанию, и регулировщиком
на перекрестке автомобильных дорог, не оснащенном светофорами,
который решает, какую машину остановить, а какую пропустить, в зависимости
от ситуации на перекрестке.
Диспетчеризация заключается в реализации найденного в результате планирования (динамического или статистического) решения, то есть в переключении процессора с одного потока на другой. Прежде чем прервать выполнение потока, ОС запоминает его контекст (сохраняет состояние аппаратуры: момент прерывания, содержимое регистра, а также состояние ОС, например, ссылки на открытые файлы, ошибки потоков), с тем чтобы впоследствии использовать эту информацию для последующего возобновления выполнения данного потока. Диспетчеризация сводится к следующему:
■ сохранение контекста текущего потока, который требуется сменить;
■ загрузка контекста нового потока, выбранного в результате планирования;
■ запуск нового потока на выполнение. Состояния потока
Операционная система выполняет планирование потоков, принимая во внимание
их состояние. В мультипрограммной системе поток может находиться в одном
из трех основных состояний:
■ выполнение — активное состояние потока, во время которого поток обладает
всеми необходимыми ресурсами и непосредственно обрабатывается процессором;
■ ожидание — пассивное состояние потока, находясь в котором поток заблокирован
по своим внутренним причинам (ждет осуществления некоторого события,
например завершения операции ввода-вывода, получения сообщения
от другого потока или освобождения какого-либо необходимого ему
ресурса); ■ ,
■ готовность — также пассивное состояние потока, но в этом случае поток заблокирован
в связи с внешним по отношению к нему обстоятельством (имеет
все требуемые для него ресурсы, готов выполняться, однако процессор занят
выполнением другого потока).
22.
■ Не вытесняющие алгоритмы основаны на том, что активному потоку позволяется выполняться, пока он сам, по собственной инициативе, не отдаст управление операционной системе, чтобы та выбрала из очереди другой готовый к выполнению поток.
■ Вытесняющие алгоритмы — это такие алгоритмы планирования потоков, в которых решение о переключении процессора с выполнения одного потока на выполнение другого принимается операционной системой, а не активной задачей. Основным различием является то, что при вытесняющем мультипрограммировании функции планирования потоков целиком сосредоточены в операционной системе, и программист пишет свое приложение, не заботясь о том, что оно будет выполняться одновременно с другими задачами. При этом операционная система выполняет следующие функции: определяет момент снятия с выполнения активного потока, запоминает его контекст, выбирает из очереди готовых потоков следующий, запускает новый поток на выполнение, загружая его контекст.
При не вытесняющем мультипрограммировании механизм планирования распределен между операционной системой и прикладными программами. Прикладная программа, получив управление от операционной системы, сама определяет момент завершения очередного цикла своего выполнения и только затем передает управление ОС с помощью какого-либо системного вызова. Такой механизм создает проблемы как для пользователей, так и для разработчиков приложений.
23. В основе многих вытесняющих алгоритмов планирования лежит концепция квантования.
Квант — ограниченный непрерывный период процессорного времени, поочередно предоставляемый для выполнения каждому потоку. Смена активного потока происходит, если:
■ поток завершился и покинул систему;
■ произошла ошибка;
■ поток перешел в состояние ожидания;
■ исчерпан квант процессорного времени, отведенный данному потоку.
При поступлении задачи на обработку ОС не имеет никаких сведений о том, является она короткой или длинней, насколько интенсивными будут ее запросы к устройствам ввода-вывода, насколько важно ее быстрое выполнение и т. д. Дифференциация обслуживания при квантовании базируется на «истории существования» потока в системе. Чем больше квант, тем выше вероятность того, что потоки завершатся в результате первого же цикла выполнения, и тем менее явной становится зависимость времени ожидания потоков от времени их выполнения.
Поток, который исчерпал свой квант, переводится в сос+ояние готовности
и ожидает, когда ему будет предоставлен новый квант процессорного времени.
При этом на выполнение в соответствии с определенным правилом выбирается
новый поток из очереди готовых
Если квант короткий, то суммарное время, которое проводит поток в ожидании
процессора, прямо пропорционально времени, требуемому для его выполнения
(то есть времени, которое потребовалось бы для выполнения этого потока
при монопольном использовании вычислительной системы).
25. Во многих операционных системах алгоритмы планирования построены с использованием как квантования, так и приоритетов. Например, в основе планирования лежит квантование, но величина кванта и/или порядок выбора потока из очереди готовых определяется приоритетами потоков.
24. Еще одной важной концепцией, лежащей в основе многих вытесняющих алгоритмов планирования, является приоритетное обслуживание. Приоритетное обслуживание предполагает наличие у потоков некоторой изначально известной характеристики — приоритета, на основании которого определяется порядок их выполнения.
П риоритет — это число, характеризующее степень привилегированности потока при использовании ресурсов вычислительной машины, в частности процессорного времени: чем выше приоритет, тем Выше привилегии, тем меньше времени будет проводить поток в очередях. Приоритет может выражаться целым или дробным, положительным или отрицательным значением. В некоторых ОС принято, что приоритет потока тем выше, чем больше (в арифметическом смысле) число, обозначающее приоритет. В других системах наоборот, чем меньше число, тем выше приоритет. В последнем случае приоритеты называются динамическими, в отличие от неизменяемых фиксированных. В системах с абсолютными приоритетами время ожидания потока в очередях может быть сведено к минимуму, если ему назначить самый высокий приоритет. Такой поток будет вытеснять из процессора все остальные потрки (кроме потоков, тоже имеющих наивысший приоритет). Это делает планирование на основе абсолютных приоритетов подходящим для. систем управления объектами, в которых важна быстрая реакция на событие. Во многих ОС предусматривается возможность изменения приоритетов в течение
жизни потока. Изменение приоритета может происходить по инициативе
самого потока, когда он обращается с соответствующим вызовом к операционной
системе, или по инициативе пользователя, когда он выполняет соответствующую
команду. Кроме того, ОС сама может изменять приоритеты потоков
в зависимости от ситуации, складывающейся в системе. В последнем случае
приоритеты называются динамическими, в отличие от неизменяемых фиксированных.
От того, какие приоритеты назначены потокам, существенно зависит эффективность
работы всей вычислительной системы.
С течением времени приоритет потока, относящегося к классу потоков с переменными
приоритетами, может отклоняться от базового приоритета потока,
причем эти изменения могут быть не связаны с изменениями базового приоритета
процесса. ОС может повышать приоритет потока (который в этом случае
называется динамическим) в тех случаях, когда поток не полностью использовал
отведенный ему квант, или понижать приоритет, если квант был использован
полностью. ОС наращивает приоритет дифференцировано в зависимости
от того, какого типа событие не дало потоку полностью использовать квант.
В частности, ОС повышает приоритет в большей степени потокам, которые
ожидают ввода с клавиатуры (интерактивным приложениям), и в меньшей степени
потокам, выполняющим дисковые операции.
границей является нижняя граница диапазона
приоритетов реального времени. Существует две разновидности приоритетного
планирования: обслуживание с относительными приоритетами и обслуживание
с абсолютными приоритетами.
В обоих случаях выбор потока на выполнение из очереди готовых осуществляется
одинаково: выбирается поток, имеющий наивысший приоритет. Однако
проблема определения момента смены активного потока решается по-разному.
В системах с относительными приоритетами активный поток выполняется до
тех пор, пока он сам не покинет процессор, перейдя в состояние ожидания (или
произойдет ошибка, или поток завершится).
В системах с абсолютными приоритетами время ожидания потока в очередях
может быть сведено к минимуму, если ему назначить самый высокий приоритет.
Такой поток будет вытеснять из процессора все остальные потоки (кроме
потоков, тоже имеющих наивысший приоритет). Это делает планирование
на основе абсолютных приоритетов подходящим для. систем управления объектами,
в которых важна быстрая реакция на событие.
25. Во многих операционных системах алгоритмы планирования построены с использованием
как квантования, так и приоритетов. Например, в основе планирования
лежит квантование, но величина кванта и/или порядок выбора потока
из очереди готовых определяется приоритетами потоков. Именно так реализовано
планирование в ОС семейства Windows NT, где квантование сочетается
с динамическими абсолютными приоритетами. На выполнение выбирается готовый
поток с наивысшим “приоритетов. Ему выделяется квант времени. Если
во время выполнения в очереди готовых появляется поток с бояее высоким
приоритетом, то он вытесняет выполняемый поток. Вытесненный поток возвращается
в очередь готовых, причем он становится впереди всех остальных потоков,
имеющих такой же приоритет.
Процессы реального времени также применяют стратегию фиксированных
приоритетов, но пользователь может их изменять. Так как при наличии готовых
к выполнению процессов реального времени другие процессы не рассматриваются,
то процессы реального времени надо тщательно проектировать, чтобы
они не захватывали процессор на слишком долгое время. Характеристики
планирования процессов реального времени включают две величины: уровень
глобального приоритета и квант времени. Для каждого уровня приоритета по
умолчанию имеется своя величина кванта времени. Процессу разрешается захватывать
процессор на указанный квант времени, а по его истечению планировщик
снимает процесс с выполнения
На множестве потоков определены приоритетные классы — критической (time
critical), серверный (server), стандартный (regular) и остаточный (idle), в каждом
из которых имеется 32 приоритетных уровня. Потоки критического класса
имеют наивысший приоритет. В этот класс могут быть отнесены, например,
системные потоки, выполняющие задачи управления сетью. Следующий по
приоритетности класс предназначен, как это следует из его названия, для потоков,
обслуживающих серверные приложения. К стандартному классу могут быть
отнесены потоки обычных приложений. Потоки, входящие в остаточный класс,
имеют самый низкий приоритет. К этому классу относится, например, поток, выводящий
на экран заставку, когда в системе не выполняется никакой работы.
Поток из менее приоритетного класса не может быть выбран для выполнения,
пока в очереди более приоритетного класса имеется хотя бы один поток. Внутри
каждого класса потоки выбираются также по приоритетам. Потоки, имеющие
одинаковое значение приоритета, обслуживаются в циклическом порядке.
Приоритеты могут изменяться планировщиком в следующих случаях.
■ Если поток находится в ожидании процессорного времени дольше, чем это
задано системной переменной MAXWAIT, его приоритет будет автоматически
увеличен операционной системой. При этом результирующее значение приоритета
не должно превышать нижйей границы диапазона приоритетов критического
класса.
■ Если поток ушел на выполнение операции ввода-вывода, то после ее завершения
он получит наивысший для своего йласйа приоритет.
* Приоритет потока автоматически повышается, когда он поступает на выполнение.
26.
является обеспечение временных характеристик вычислительного процесса,
планирование имеет особое значение. Любая система реальною времени должна
реагировать на сигналы управляемого объекта в течение заданных временных ограничений.
Необходимость тщательного планирования работ облегчается Тем,
что в системах реального времени весь набор выполняемых задач известен заранее.
Кроме того, часто в системе имеется информация о временах выполнения
задач, моментах активизации, предельных допустимых сроках ожидания
ответа и т. д.,Эти данные могут быть использованы планировщиком для создания
статического расписания или для построения адекватного алгоритма динамического
планирования.
При разработке алгоритмов планирования для систем реального времени
необходимо учитывать, какие последствия в этих системах возникают при несоблюдении
временных ограничений. Если эти последствия катастрофичны,
как, например, для системы управления полетами или атомной электростанцией,
то операционная система реального времени, на основе которой строится
управление объектом, называется жесткой (hard). Если же последствия нарушения
временных ограничений не столь серьезны, то есть сравнимы с той пользой,
которую приносит система управления объектом, то система является мягкой
(soft). Примером мягкой системы реального времени является система
резервирования билетов. Если из-за временных нарушений оператору не удается
зарезервировать билет, это не очень страшно — можно просто послать запрос
на резервирование заново.
В жестких системах реального времени время завершения выполнения каждой
из критических задач должно быть гарантировано для всех возможных сценариев
работы системы.
отношении.
В мягких системах реального времени предполагается, что заданные временные
ограничения могут иногда нарушаться, поэтому здесь обычно применяются
менее затратные способы планирования.
В зависимости от характера возникновения запросов на выполнение задач полезно
разделять их на два типа: периодические и спорадические. Начиная с момента
первоначального запроса, все будущие моменты запроса периодической
задачи можно определить заранее путем прибавления к моменту начального
проса величины, кратной известному периоду. Время поступления запросов на выполнение спорадических задач заранее не известно
Существуют также алгоритмы с динамическим изменением приоритетов,
которые назначаются в соответствии с такими текущими параметрами задачи,
как, например, конечный срок выполнения (deadline). При необходимости назначения
некоторой задачи на выполнение выбирается та, у которой текущее
значение разницы между конечным сроком выполнения и временем, требуемым
для ее непрерывного выполнения, является наименьшим.
27. Прерывания являются основной движущей силой любой операционной системы. Отключите систему прерываний, и «жизнь» в операционной системе немедленно остановится. Как верно было замечено: «прерывания названы так весьма удачно, поскольку они прерывают нормальную работу системы». Система прерываний переводит процессор на выполнение потока команд, отличного от того, который выполнялся до сих пор, с последующим возвратом к исходному коду.Механизм прерываний поддерживается аппаратными средствами компьютера и программными средствами операционной системы. В зависимости от источника прерывания делятся на три больших класса: ■ внешние; ■ внутренние; ■ программные.
Внешние прерывания могут возникать в результате:
■ действий пользователя или оператора за терминалом;
■ поступления сигналов от аппаратных устройств (сигналов завершения операций ввода-вывода, вырабатываемых контроллерами внешних устройств компьютера, такими как принтер или накопитель на жестких дисках);
■ поступления сигналов от датчиков управляемых компьютером технических объектов.
Внешние прерывания называют также аппаратными, отражая тот факт, что прерывание возникает вследствие подачи некоторой аппаратурой.
Внутренние прерывания, называемые также исключениями (exeption), происходят синхронно выполнению программы при появлении аварийной ситуации в ходе обработки некоторой инструкции программы. Примерами исключений являются деление на нуль, ошибки защиты памяти, обращения по несуществующему адресу.
Программные прерывания отличаются от предыдущих двух классов тем, что они по своей сути не являются «истинными» прерываниями. Программное прерывание возникает при выполнении особой команды процессора, что имитирует прерывание, то есть переход на новую последовательность инструкций.
Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний, или процедурами обслуживания прерываний . Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств; исключения -специальными модулями ядра, программные прерывания — процедурами ОС, обслуживающими системные вызовы. Помимо этих модулей в операционной системе может находиться так называемый диспетчер прерываний, который координирует работу отдельных обработчиков прерываний.
28. Аппаратная поддержка прерываний осуществляется как на уровне процессора, так и на уровне функциональных блоков компьютера. Функциональный блок компьютера, назначением которого является поддержка прерываний, называется контроллером прерываний. Контроллер прерываний является источником сигналов прерываний по отношению к процессору и обработчиком прерываний по отношению к внешним устройствам компьютера.Существует два основных способа, с помощью которых шины выполняют прерывания: векторный и опрашиваемый. В обоих способах процессору предоставляется информация об уровне приоритета прерывания на шине подключения внешних устройств.
Устройствам, которые используют векторные прерывания, назначается вектор прерываний. Он представляет собой электрический сигнал, выставляемый на соответствующие шины процессора и несущий в себе информацию об определенном, закрепленном за данным устройством номере, который идентифицирует соответствующий обработчик прерываний. Этот вектор может быть фиксированным, конфигурируемым (например, с использованием переключателей) или программируемым. Операционная система может предусматривать процедуру регистрации вектора обработки прерываний для определенного устройства, которая связывает некоторую процедуру обслуживания прерываний с определенным вектором. При получении сигнала запроса прерывания процессор выполняет специальный цикл подтверждения прерывания, в котором устройство должно идентифицировать себя; В течение этого цикла устройство отвечает, выставляя на шину вектор прерываний. Затем процессор использует этот вектор для нахождения обработчика данного прерывания.
При использовании опрашиваемых прерываний процессор получает от запросившего прерывание устройства только информацию об уровне приоритета прерывания
Механизм прерываний чаще всего поддерживает приоритезацию и маскирование прерываний.
Приоритезация означает, что все источники прерываний делятся на классы и каждому классу назначается свой уровень приоритета запроса на прерывание. Приоритеты могут обслуживаться как относительные и абсолютные. Обслуживание запросов прерываний по схеме с относительными приоритетами заключается в том, что при одновременном поступлении запросов прерываний из разных классов выбирается запрос, имеющий высший приоритет.
Собственно говоря, в описанной схеме абсолютных приоритетов тоже выполняется маскирование — при обслуживании некоторого запроса все запросы с равным или более низким приоритетами маскируются, то есть не обслуживаются. Схема маскирования предполагает возможность временного маскирования прерываний любого класса независимо от уровня приоритета.Схема приоритета:
1. При возникновении сигнала (для аппаратных ) или условия (для внутренних) прерывания происходит первичное аппаратное распознавание типа прерывания. Если прерывания данного типа в настоящий момент запрещены, то процессор продолжает поддерживать естественный ход выполнения команд. Иначе в зависимости от поступившей в процессор информации происходит автоматический вызов процедуры обслуживания прерывания.
2. Автоматически сохраняется некоторая часть контекста прерванного потока, которая позволит ядру возобновить исполнение потока процесса после обработки прерывания. Может быть сохранен и полный контекст процесса, если ОС обрабатывает данное прерывание со сменой процесса.
3. Может включиться привилегированный режим. Прерывания практически во всех мультипрограммных ОС обрабатываются в привилегированном режиме модулями ядра, так как при этом обычно нужно выполнить ряд критических операций, от которых зависит жизнеспособность системы — управлять внешними устройствами, перепланировать потоки и т. п.
4. Временно запрещаются прерывания данного типа, чтобы не образовалась очередь вложенных друг в друга потоков одной и той же процедуры.
5. После того как прерывание обработано ядром операционной системы, прерванный контекст восстанавливается, и работа потока возобновляется с прерванного места. При возврате из прерывания блокировка повторных прерываний данного типа снимается.Программные прерывания: при выполнении команды программного прерывания процессор отрабатывает ту же последовательность действий, что и при возникновении внешнего или внутреннего прерывания, но только происходит это в предсказуемой точке программы — там, где программист поместил данную команду.
29. Для упорядочения работы обработчиков прерываний в операционных системах применяется тот же механизм, что и для упорядочения работы пользовательских процессов — механизм приоритетных очередей. Все источники прерываний обычно делятся на несколько классов, причем
к аждому классу присваивается приоритет. В операционной системе выделяется программный модуль, который занимается диспетчеризацией обработчиков прерываний. Этот модуль в разных ОС называется по-разному, но для определенности будем его называть диспетчером прерываний.
При возникновении прерывания диспетчер прерываний вызывается первым. Он запрещает на небольшое время все прерывания, а затем выясняет причину прерывания. После этого диспетчер сравнивает назначенный данному источнику прерывания приоритет и сравнивает его с текущим приоритетом потока команд, выполняемого процессором. В этот момент времени процессор уже может выполнять инструкции другого обработчика прерываний, также имеющего некоторый приоритет. Если приоритет нового запроса выше текущего, то выполнение текущего обработчика приостанавливается, и он помещается в соответствующую очередь обработчиков прерываний. В противном случае в очередь помещается обработчик нового запроса.
30 !!!. Важной особенностью процедур, выполняемых по запросам прерываний, является то, что их работа чаще всего никак не связана с текущим процессом. Например, драйвер диска может получить управление после того, как контроллер диска записал в соответствующие сектора информацию, полученную от процесса А, но этот момент времени, скорее всего, не совпадет с периодом очередной итерации выполнения процесса А или его потока. В наиболее типичном случае процесс А будет находиться в состоянии ожидания завершения операции ввода-вывода.
Системный вызов позволяет приложению обратиться к операционной системе с просьбой выполнить то или иное действие, оформленное как процедура (или набор процедур) кодового сегмента ОС. Для прикладного программиста операционная система выглядит как некая библиотека, предоставляющая некоторый набор полезных функций, с помощью которых можно упростить прикладную программу или выполнить действия, запрещенные в пользовательском режиме, например обменяться данными с устройством ввода-вывода. Реализация системных вызовов должна удовлетворять следующим требованиям:
■ обеспечивать переключение в привилегированный режим;
■ обладать высокой скоростью вызова процедур ОС;
■ обеспечивать по возможности единообразное обращение к системным вызовам для всех аппаратных платформ, на которых работает ОС;
■ допускать легкое расширение набора системных вызовов;
■ обеспечивать контроль со стороны ОС за корректным использованием системных вызовов.Операционная система может выполнять системные вызовы в синхронном или асинхронном режиме.
Синхронный системный вызов означает, что процесс, сделавший такой вызов, приостанавливается (переводится планировщиком ОС в состояние ожидания) до тех пор, пока системный вызов не выполнит всю требующуюся от него работу. После этого планировщик переводит процесс в состояние готовности, и при очередном выполнении процесс гарантированно может воспользоваться результатами завершившегося к этому времени системного вызова. Синхронные вызовы называются также блокирующими, так как вызвавший системное действие процесс блокируется до его завершения.
Асинхронный системный вызов не приводит к переводу процесса в режим ожидания, после выполнения некоторых начальных системных действий, например запуска операции ввода-вывода, управление возвращается прикладному процессу.
Большинство системных вызовов в операционных системах являются синхронными, так как этот режим избавляет приложение от необходимости выяснения момента появления результата вызова.
Системные вызовы, с помощью которых приложения получают обслуживание со стороны ОС, реализуются на основе механизма программных прерываний. Системные вызовы могут выполняться синхронно, когда поток приостанавливается до завершения системного вызова, или асинхронно, когда поток продолжает работу параллельно с системной процедурой, реализующей вызов.
3 1. Функциями ОС по управлению памятью в мультипрограммной системе являются:
■ отслеживание свободной и занятой памяти;
■ выделение памяти процессам и освобождение памяти при завершении процессов;
■ вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти недостаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;
■ настройка, адресов программы на конкретную область физической памяти;
■ защита памяти — запрет .выполняемому процессу записывать данные в память, назначенной другому процессу, или читать их оттуда. Эта функция, как правило, реализуется программными модулями ОС в тесном взаимодействии с аппаратными средствами.
32.
■ Символьные имена (метки) присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.
■ Виртуальные, математические, или логические, адреса вырабатывает транслятор, переводящий программу на машинный язык. Поскольку во время трансляции в общем случае неизвестно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам условные виртуальные адреса, обычно считая по умолчанию, что начальным адресом программы будет нулевой адрес.
■ Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды.
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством.Непрерывная последовательность виртуальных адресов называется плоской.
33. Методы распределения памяти: без использования внешней памяти (распределение физическими разделами, распределение динамическими разделами, распределение перемещаемыми разделами).
с использованием внешней памяти (страничное распределение, сегментное распределение, сегментно-страничное).
34.
Фиксированные разделы
Простейший способ управления оперативной памятью состоит в том, что память разбивается на несколько областей фиксированной величины, называемых разделами. Такое разбиение может быть выполнено вручную оператором во время старта системы или во время ее установки. После этого границы разделов не изменяются.
Очередной новый процесс, поступивший на выполнение, помещается либо в общую очередь, либо в очередь к некоторому разделу.
При распределении памяти фиксированными разделами подсистема управления памятью решает следующие задачи.
■ Сравнивает объем памяти, требуемый для вновь поступившего процесса, с размерами свободных разделов и выбирает подходящий раздел.
■ Осуществляет загрузку программы в один из разделов и настройку адресов. Уже на этапе трансляции разработчик программы может задать раздел, в котором ее следует выполнять. Это позволяет сразу, без использования перемещающего загрузчика получить машинный код, настроенный на конкретную область памяти.
При очевидном преимуществе — простоте реализации, данный метод имеет существенный недостаток — жесткость. Так как в каждом разделе может выполняться только один процесс, то уровень мультипрограммирования заранее ограничен числом разделов. Независимо от размера программы она будет занимать весь раздел.
Динамические разделы:
Сначала вся память, отводимая для приложений, свободна. Каждому вновь поступающему на выполнение приложению на этапе создания процесса выделяется вся необходимая ему память (если достаточный объем памяти отсутствует, то приложение не принимается на выполнение и процесс для нее не создается). После завершения процесса память освобождается, и на это место может быть загружен другой процесс. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера.
Распределение памяти динамическими разделами сводится к выполнению операционной системой следующих функций.
■ Ведение таблиц свободных и занятых областей, в которых указываются начальные адреса и размеры участков памяти.
■ При создании нового процесса — анализ требований к памяти, просмотр таблицы свободных областей и выбор раздела, размер которого достаточен для размещения кодов и данных нового процесса.
■ Загрузка программы в выделенный ей раздел и корректировка таблиц свободных и занятых областей.
■ После завершения процесса — корректировка таблиц свободных и занятых областей.
Выбор раздела для загрузки кодов процесса при его создании может осуществляться по разным правилам, например: «первый попавшийся раздел достаточного размера», «раздел, имеющий наименьший достаточный размер» или «раздел, имеющий наибольший достаточный размер».
Поскольку данный способ предполагает, что программный код не перемещается во время выполнения, то настройка адресов может быть проведена один раз во время загрузки.
По сравнению с методом распределения памяти фиксированными разделами данный метод обладает существенно большей гибкостью, но ему присущ очень серьезный недостаток — фрагментация памяти.
Перемещаемые разделы
Одним из методов борьбы с фрагментацией является перемещение всех занятых участков в сторону старших или младших адресов, так чтобы вся свободная память образовала единую область. В дополнение к функциям, которые выполняет ОС при распределении памяти динамическими разделами, в случае перемещаемых разделов она должна еще время от времени копировать содержимое разделов из одного места памяти в другое, корректируя таблицы свободных и занятых областей. Эта процедура называется сжатием. Сжатие может выполняться либо при каждом завершении процесса, либо только тогда, когда для вновь создаваемого процесса нет свободного раздела достаточного размера. Хотя процедура сжатия и приводит к более эффективному использованию памяти, она может требовать значительного времени, что часто перевешивает преимущества данного метода.
35. При нехватке памяти в оперативной, процесс может быть перемещен на диск (это и есть виртуальная память).
Виртуализация оперативной памяти осуществляется совокупностью программных модулей ОС и аппаратных схем процессора и подразумевает решение следующих задач:
■ размещение данных в запоминающих устройствах разного типа, например часть кодов программы — в оперативной памяти, а часть — на диске;
■ выбор образов процессов или их частей для перемещения из оперативной памяти на диск и обратно;
■ перемещение по мере необходимости данных между памятью и диском;
■ преобразование виртуальных адресов в физические.
Различают два достаточно близких подхода к виртуализации памяти:
■ свопинг — образы процессов выгружаются на диск и возвращаются в оперативную память целиком (но присутствует – избыточность),
■ виртуальная память — между оперативной памятью и диском перемещаются части (сегменты, страницы и т. п.) образов процессов.
авления памятью.
Все множество реализаций виртуальной памяти может быть представлено тремя классами
■ В случае страничной виртуальной памяти перемещение данных между памятью и диском организуется страницами — частями виртуального адресного пространства фиксированного и сравнительно небольшого размера.
■ Сегментная виртуальная память предусматривает перемещение данных сегментами — частями виртуального адресного пространства произвольного размера, полученными с учетом смыслового значения данных.
■ В сегментно-страничной виртуальной памяти используется двухуровневое деление: виртуальное адресное пространство делится на сегменты, а затем сегменты делятся на страницы. Единицей перемещения данных здесь является страница. Этот способ управления памятью объединяет в себе элементы обоих предыдущих подходов.
36.При страничном распределении памяти виртуальное адресное пространство каждого процесса делится на части одинакового, фиксированного для данной системы размера, называемые виртуальными страницами.
Страничное прерывание – если понадобилась страница, которая на диске, происходит прерывание для ее поиска.
Накладные расходы системы на поддержание страничной виртуальной памяти могут быть уменьшены за счет:
■ аппаратного способа преобразования виртуального адреса в физический; (т.к. при обращении происходит преобразование виртуальных адресов в физический).
■ снижения частоты страничных прерываний путем оптимизации размера страницы, а также выбора страниц на загрузку/выгрузку. Интенсивность страничного обмена может быть также снижена в результате так называемой упреждающей загрузки, в соответствие с которой при возникновении страничного прерывания в память загружается не одна страница, содержащая адрес обращения, а сразу несколько прилегающих к ней страниц. При двухуровневом страничном распределении памяти множество виртуальных адресов процесса делится на разделы, а разделы делятся на страницы. Все страницы имеют одинаковый размер, а разделы содержат одинаковое количество страниц.
37(Механизмы). При сегментной организации памяти виртуальное адресное пространство процесса делится на части — сегменты, размер которых определяется с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т. п. Деление виртуального адресного пространства на сегменты осуществляется компилятором на основе указаний программиста или по умолчанию, в соответствии с принятыми в системе соглашениями. (При загрузке процесса с диска, загружается его часть – сегмент, полная копия хранится на диске).
Каждая запись в таблице сегментов содержит следующие характеристики
соответствующего сегмента:
■ базовый физический адрес сегмента в оперативной памяти;
■ размер сегмента;
■ правила доступа к сегменту;
■ признаки модификации, присутствия и обращения к данному сегменту, а также некоторая другая информация.
В сегментарном распределении существует понятие разграничения доступа: один сегмент можно только читать, в другой только записывать, например
Недостатки:
1)ОС заносит в таблицы страниц не полные адреса, а номера физических страниц, которые совпадают со старшими разрядами базовых адресов. Сегмент же может в общем случае располагаться в физической памяти, начиная с любого адреса, следовательно, для определения местоположения в памяти необходимо задать его полный начальный физический адрес. Использование операции сложения вместо конкатенации замедляет процедуру преобразования виртуального адреса в физический по сравнению со страничной организацией.
2)Другим недостатком сегментного распределения является избыточность,
При сегментной организации единицей перемещения между памятью и диском
является сегмент, имеющий в общем случае объем больший, чем страница. Од
нако во многих случаях для работы программы вовсе не требуется загружать
весь сегмент целиком, достаточно было бы одной или двух страниц