12.Архитектура ОС. Ядро и вспомогательные модули ОС. Режимы работы ОС
12.Архитектура ОС. Ядро и вспомогательные модули ОС. Режимы работы ОС.
В состав ОС входят исполняемые и объектные модули стандартных для данной ОС форматов, библиотеки разных типов, модули исходного текста программ, программные модули специального формата (например, загрузчик ОС, драйверы ввода-вывода), конфигурационные файлы, файлы документации, модули справочной системы и т. д.
Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Ядро и вспомогательные модули ОС
Модули ОС делятся на две группы:
— ядро — модули, выполняющие основные функции ОС;
— модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Ядро является движущей силой всех вычислительных процессов в компьютерной системе, и крах ядра равносилен краху всей системы. Поэтому разработчики операционной системы уделяют особое внимание надежности кодов ядра, в результате процесс их отладки может растягиваться на многие месяцы.
Обычно ядро оформляется в виде программного модуля некоторого специального формата, отличающегося от формата пользовательских приложений.
Термин «ядро» в разных ОС трактуется по-разному. Одним из определяющих свойств ядра является работа в привилегированном режиме.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования данных на магнитной ленте, дефрагментации диска, текстового редактора. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур.
Поскольку некоторые компоненты ОС оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями
Решение о том, является ли какая-либо программа частью ОС или! нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС.
Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows NT 4.0 и Windows 95/98, а сегодня существует большая вероятность того, что по решению суда этот браузер снова превратится в самостоятельное приложение.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
— утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
— системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
— программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;
— библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов
Разделение операционной системы на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Постоянно в оперативной памяти располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит оперативную память компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных операционной системы за счет выполнения функций ядра в привилегированном режиме.
Ядро в привилегированном режиме
Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Все усилия разработчиков операционной системы окажутся напрасными, если их решения воплощены в незащищенные от приложений модули системы, какими бы элегантными и эффективными эти решения ни были. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.
Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode), или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.
Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме (рис. 3.3). Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».
Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некоторых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Например, инструкции ввода-вывода могут быть запрещены приложениям при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и всех приложений, но разрешены при доступе к последовательному порту, который выделен в монопольное владение для определенного приложения. Важно, что условия разрешения выполнения критичных инструкций находятся под полным контролем ОС и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима.
Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти. Например, выполнение инструкции доступа к памяти для приложения разрешается, если инструкция обращается к области памяти, отведенной данному приложению операционной системой, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями. Полный контроль ОС над доступом к памяти достигается за счет того, что инструкция или инструкции конфигурирования механизмов защиты памяти (например, изменения ключей защиты памяти в мэйнфреймах IBM или указателя таблицы дескрипторов памяти в процессорах Pentium) разрешается выполнять только в привилегированном режиме.
Очень важно, что механизмы защиты памяти используются операционной системой не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и операционную систему.
Между количеством уровней привилегий, реализуемых аппаратно, и количеством уровней привилегий, поддерживаемых ОС, нет прямого соответствия. Так, на базе четырех уровней, обеспечиваемых процессорами компании Intel, операционная система OS/2 строит трехуровневую систему привилегий, а операционные системы Windows NT, UNIX и некоторые другие ограничиваются двухуровневой системой.
С другой стороны, если аппаратура поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты.
Эта система может, например, поддерживать несколько уровней привилегий, образующих иерархию. Наличие нескольких уровней привилегий позволяет более тонко распределять полномочия как между модулями операционной системы, так и между самими приложениями. Появление внутри операционной системы более привилегированных и менее привилегированных частей позволяет повысить устойчивость ОС к внутренним ошибкам программных кодов, так как такие ошибки будут распространяться только внутри модулей с определенным уровнем привилегий. Дифференциация привилегий в среде прикладных модулей позволяет строить сложные прикладные комплексы, в которых часть более привилегированных модулей может, например, получать доступ к данным менее привилегированных модулей и управлять их выполнением.
На основе двух режимов привилегий процессора ОС может построить сложную систему индивидуальной защиты ресурсов, примером которой является типичная система защиты файлов и каталогов. Такая система позволяет задать для любого пользователя определенные права доступа к каждому из файлов и каталогов.
Повышение устойчивости операционной системы, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского ‘режима в- привилегированный, а при возврате к приложению — переключение из привилегированного режима в пользовательский (рис. 3.4). Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.
Архитектура ОС, основанная на привилегированном ядре и приложениях пользовательского режима, стала, по существу, классической. Ее используют многие популярные операционные системы, в том числе многочисленные версии UNIX, VAX VMS, IBM OS/390, OS/2, и с определенными модификациями — Windows NT.
В некоторых случаях разработчики ОС отступают от этого классического варианта архитектуры, организуя работу ядра и приложений в одном и том же режиме. Так, известная специализированная операционная система NetWare компании Novell использует привилегированный режим процессоров Intel x86/ Pentium как для работы ядра, так и для работы своих специфических приложений — загружаемых модулей NLM (рис. 3.5). При таком построении ОС обращения приложений к ядру выполняются быстрее, так как нет переключения режимов, однако при этом отсутствует надежная аппаратная защита памяти, занимаемой модулями ОС, от некорректно работающего приложения. Разработчики NetWare пошли на такое потенциальное снижение надежности своей операционной системы, поскольку ограниченный набор ее специализированных приложений позволяет компенсировать этот архитектурный недостаток за счет тщательной отладки каждого приложения.
В одном режиме работают также ядро и приложения тех операционных систем, которые разработаны для процессоров, вообще не поддерживающих привилегированного режима работы. Наиболее популярным процессором такого типа был процессор Intel 8088/86, послуживший основой для персональных компьютеров компании IBM. Операционная система MS-DOS, разработанная компанией Microsoft для этих компьютеров, состояла из двух модулей msdos.sys и io.sys, составлявших ядро системы (хотя название «ядро» для этих модулей не употреблялось, по своей сути они им являлись), к которым с системными вызовами обращались командный интерпретатор command.com, системные утилиты и приложения. Архитектура MS-DOS соответствует архитектуре ОС, приведенной на рис. 3.2. Некорректно написанные приложения вполне могли разрушить основные модули MS-DOS, что иногда и происходило, но область использования MS-DOS (и многих подобных ей ранних операционных систем для персональных компьютеров, таких как MSX, СР/М) и не предъявляла высоких требований к надежности ОС.
studfiles.net
Ядро и вспомогательные модули ос — Информатика, информационные технологии
Любая сложная система должна иметь понятную и рациональную структуру, то есть разделятся на модули, имеющие законченное функциональное назначение с четко оговоренными правилами взаимодействия. Ясное понимание роли каждого отдельного модуля существенно упрощает работу по модификации и развитию системы, а вот сложную систему, не обладающую хорошей структурой, но с понятной, логичной организацией бывает проще разработать заново, чем модернизировать. Качественная проработка структуры и внутренних межмодульных взаимодействий ОС является одной из важнейших задач, встающих перед разработчиками системы. Ошибки на этом этапе могут оказать решающее влияние на дальнейшую судьбу системы.
Функциональная сложность ОС неизбежно приводит к сложности ее архитектуры, под которой понимают структурную организацию ОС на основе различных программных модулей.
Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Не существует какой-либо единой архитектуры, но есть универсальные подходы к структурированию ОС.
Наиболее общим подходом к структуризации ОС является разделение всех её модулей на две группы:
1)ядро – модули, выполняющие основные функции ОС;
2) модули ОС, выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции, как управление процессами, памятью, устройствами ввода-вывода и т.д. Ядро составляет самую главную часть ОС, без которой она является полностью неработоспособной и не может выполнять ни одну из своих функций. В ядре решаются внутрисистемные задачи организации вычислительного процесса, недоступные для приложений. Особый класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами –системным вызовамидля выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т.д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования – API (Application Programming Interface).
В соответствии со своим назначением функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения влияет на общую производительность вычислительной системы. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными модулями ОС. Вследствие ограниченности такого ресурса системы, как оперативная память, важное значение имеет размер этих постоянно размещенных в памяти модулей. Если разработчик по каким-либо причинам сделает их слишком большими и громоздкими, то производительность ОС резко снизится, поскольку значительная часть ресурсов будет использоваться самой системой для обеспечения собственной работы.
Ядро – это основной элемент всех вычислительных процессов в системе, поэтому крах ядра приводит к краху всей вычислительной системы. Следовательно, разработчики ОС должны уделять надежности кодов ядра особое внимание, даже если при этом процесс их написания и отладки занимает очень длительное время. Как правило, ядро ОС оформляется в виде программного модуля специального формата, отличного от формата обычных пользовательских приложений.
Вспомогательные модули ОС выполняют не столь важные, как ядро, функции. Например, это могут быть программы архивирования данных, редактирования текстов и многое другое. Вспомогательные функции ОС, как правило, оформляются либо в виде пользовательских приложений, либо в виде библиотек процедур и функций. Вследствие того, что часть компонентов ОС разрабатывается в виде обычных приложений, имеющих стандартный для данной ОС формат, то зачастую очень сложно отделить вспомогательные модули ОС от обычных пользовательских приложений. По этой причине возникает некоторая размытость границ ОС. Решение о принадлежности какой-либо программы операционной системе принимает производитель ОС. Примером этого может являться web-браузер Internet Explorer компании Microsoft, который сначала поставлялся как отдельное приложение, а впоследствии стал частью ОС Windows 98 и Windows NT 4.0.
Вспомогательные модули ОС, в свою очередь, делятся на следующие основные группы:
1) утилиты – программы, решающие отдельные задачи управления и сопровождения вычислительной системы, например программы архивации данных, сжатия дисков, тестирования дисков;
2) системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики и другие программы, входящие в комплект поставки данной ОС;
3) программы предоставления пользователю дополнительных услуг – нестандартный вариант пользовательского интерфейса, включающий вспомогательные и даже игровые программы;
4) библиотеки процедур и функций различного назначения, облегчающие разработку пользовательских приложений, например библиотека математических функций, функций работы с устройствами ввода-вывода и т.д.
Как и обычные пользовательские приложения, все перечисленные группы вспомогательных модулей при выполнении своих задач обращаются к функциям ядра ОС. Схема взаимодействия ядра, вспомогательных модулей ОС и пользовательских приложений приведена на рисунке 1.
За счет разделения ОС на ядро и вспомогательные модули обеспечивается легкая расширяемость ОС. Действительно, для добавления новой высокоуровневой функции достаточно разработать соответствующее приложение, при этом не требуется модифицировать функции, составляющие ядро системы. С учетом того, что вспомогательные модули системы, как правило, оформляются в виде стандартных пользовательских приложений, их модификация или замена старых версий на более новые производится достаточно просто и может быть выполнена даже обычным пользователем с применением специальной системной утилиты – мастера обновлений. Достаточно только получить от производителя ОС файлы с обновленными модулями, запустить мастер обновления и указать ему расположение этих файлов. Гораздо более сложным является внесение изменений в функции ядра. Произвести такие действия по силам только квалифицированному специалисту, причем в зависимости от структурной организации ядра для этого может потребоваться даже полная его перекомпиляция.
Вспомогательные модули ОС обычно загружаются в оперативную память вычислительной системы только на время выполнения своих функций, то есть являются транзитными модулями ОС. Постоянно в оперативной памяти находятся лишь наиболее важные программы ОС, составляющие ее ядро. Применение подобной организации позволяет рационально использовать такой ресурс вычислительной системы, как оперативная память.
Требование обеспечения надежности выполнения приложений приводит к необходимости наличия у ОС некоторых привилегий. Необходимо предотвратить возможность вмешательства в работу ОС или разрушения какой-либо ее части вследствие выполнения некорректно работающих приложений. ОС должна обладать исключительными правами по отношению к другим приложениям. В мультипрограммных системах это просто необходимо для разрешения споров из-за ресурсов вычислительной системы между приложениями. Ни одно приложение не должно иметь возможности получать область оперативной памяти, занимать процессор или управлять другими ресурсами вычислительной системы без ведома ОС.
Несомненно, что обеспечение соответствующих привилегий ОС требует не только соответствующей программной, но и аппаратной поддержки. Аппаратура компьютера должна иметь возможность работать как минимум в двух режимах – пользовательском режиме (user mode) и привилегированном режиме, который также называется режимом ядра (kernel mode), или режимом супервизора (supervisor mode). В пользовательском режиме работы запрещено выполнение некоторых критичных для системы команд, связанных с переключением процессора между задачами, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Некоторые команды в пользовательском режиме запрещено выполнять безусловно (например, команду перехода к привилегированному режиму работы), тогда как выполнение других запрещено только при определенных условиях. Однако контроль за выполнением этих условий находится в ведении ОС и обеспечивается за счет набора команд, которые безусловно запрещены для пользовательского режима. Например, контроль за доступом к памяти достигается за счет того, что команды конфигурирования механизмов защиты памяти разрешается выполнять только в привилегированном режиме, при этом пользовательскому приложению запрещается обращение к областям памяти, занимаемым ОС или другими приложениями. Таким образом становится возможной локализации некорректно работающего приложения в собственной области памяти, и его ошибки не влияют на остальные приложения и ОС.
Поддержка хотя бы двух уровней привилегий на уровне аппаратуры позволяет ОС программным путем построить многоуровневую иерархическую систему привилегий, обеспечивающую более качественное распределение полномочий между модулями ОС. Такой подход применяется для повышения устойчивости ОС к внутренним ошибкам программных кодов. Кроме того, многоуровневая система привилегий позволяет разработчикам ОС создавать более сложные алгоритмы управления вычислительным процессом с целью повышения рациональности использования разделяемых ресурсов.
Как уже было сказано, в ядре ОС осуществляются все основные функции. Вследствие этого именно ядро становится той частью ОС, которая выполняется в привилегированном режиме, а пользовательские приложения, соответственно, – в пользовательском режиме. Повышение устойчивости и надежности ОС, обеспечиваемое за счет работы ядра в привилегированном режиме, тем не менее приводит к замедлению выполнения приложений, поскольку для переключения процессора из пользовательского режима в привилегированный и обратно требуется некоторое, пусть и небольшое, время (рис. 2). Следовательно, во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.
Описанная выше архитектура, основанная на привилегированном ядре и приложениях пользовательского режима, стала классической. Ее применяют многие популярные ОС, в том числе версии UNIX, VAX VMS, IBM OS/390, OS/2.
В процессорах Intel, используемых в персональных компьютерах, возможность работы в привилегированном режиме появилась уже начиная с процессора 80286. Однако разработчики широко распространенной ОС MS-DOS не использовали это свойство и их ОС всегда работает в так называемом реальном режиме. Некорректно написанные приложения вполне могут разрушить основные модули MS-DOS, что приведет к краху системы.
Многослойная структура ОС
Любая ОС является комплексом аппаратных и программных средств со сложными внутрисистемными связями. Поэтому разработка подобных систем требует применения специальных подходов и методов, позволяющих хотя бы в какой-то мере облегчить процесс проектирования и уменьшить количество ошибок взаимодействия между различными компонентами системы.
Существует универсальный и эффективный подход к построению сложной системы любого типа – многослойный подход. В соответствии с ним система делится на иерархию слоев, каждый из которых обслуживает вышележащий слой, выполняя для него некоторый набор функций, образующих так называемый межслойный интерфейс. Основываясь на функциях, предоставляемых нижележащим слоем, вышележащий слой строит свои более мощные функции, являющиеся основой для создания функций еще более высокого в иерархии слоя. Межслойные интерфейсы, с помощью которых происходит взаимодействие слоев, строго оговорены, тогда как связи между модулями внутри одного слоя могут быть произвольными.
Описанная организация системы существенно упрощает разработку, поскольку позволяет сначала определить “сверху вниз” функции слоев и межслойные интерфейсы, а затем при детальной реализации постепенно нарастить мощность функций слоев, двигаясь “снизу вверх”. Также важную роль играет возможность модификации модулей внутри слоя без изменения связанных с ним слоев при условии, что межслойные интерфейсы останутся неизменными. Разработчик, например, может усовершенствовать алгоритм какого-либо модуля одного из слоев, обеспечив тем самым повышение надежности или скорости его работы. При этом ему не придется вносить никаких изменений ни в один из выше или нижележащих слоев.
Если применить описанный подход к вычислительной системе, работающей под управлением ОС, построенной по классической архитектуре, то ее можно представить как систему, состоящую из трех иерархически связанных слоев, каждый из которых взаимодействует только со смежным ему слоем (рис. 3). При этом нижний слой составляет аппаратура, средний включает в себя ядро, а самый верхний – утилиты, системные обрабатывающие программы и приложения.
Однако не только система в целом, но и ядро ОС является сложным многофункциональным комплексом программ, а значит к нему, в свою очередь, также можно применить многослойный подход. Как правило, в ядре классической ОС выделяют следующие основные слои (рис. 4):
— средства аппаратной поддержки ОС, к которым относятся аппаратные средства системы, напрямую участвующие в вычислительном процессе: средства поддержки привилегированного режима и защиты областей памяти, система прерываний и т.д. Их можно считать составляющей частью ОС. Набор и функциональные возможности аппаратных средств могут меняться и определяются разработчиком конкретной системы;
— машинно-зависимые компоненты ОС, включающие в себя программные модули, отражающие специфику аппаратной платформы компьютера. Теоретически именно этот слой должен делать вышележащие слои ядра полностью независимыми от особенностей аппаратуры, что позволяет разрабатывать машинно-независимые вышележащие слои и обеспечивать тем самым возможность переносимости ОС;
— базовые механизмы ядра, выполняющие наиболее примитивные операции ядра, например контекстное переключение процессов, перемещение участков памяти на диск и обратно и т.д. Модули данного ядра не принимают решения о распределении ресурсов вычислительной системы, а только отрабатывают принятые вышележащими слоями решения;
— менеджеры ресурсов, реализующие задачи по стратегическому управлению основными ресурсами вычислительной системы. Слой состоит из сложных и мощных функциональных модулей. Каждый менеджер ресурсов(называемый также диспетчером) ведет учет свободных и используемых ресурсов соответствующего типа и планирует их распределение в соответствии с запросами приложений. Менеджер должен отслеживать интенсивность обращений к ресурсу, длительность его применения и многие другие параметры с целью рационального планирования использования ресурсов. Взаимосвязь модулей внутри данного слоя обусловлена необходимостью доступа процесса к нескольким ресурсам одновременно. Например, при создании процесса менеджер процессов обращается к менеджеру памяти, который должен выделить этому процессу определенную область памяти для размещения его кодов и данных. Для управления ресурсами менеджеры ресурсов используют функции нижележащего слоя – базовых механизмов ядра;
— интерфейс системных вызовов непосредственно взаимодействует с приложениями и системными утилитами, образуя прикладной программный интерфейс операционной системы (API). Является самым верхним слоем в иерархи слоев ядра. Обслуживающие системные вызовы функции API предоставляют доступ к ресурсам вычислительной системы в удобной и компактной форме без указания деталей их физического расположения.
Приведенное деление ядра на слои является достаточно условным и в реальных ОС количество слоев, а также распределение функций между ними может быть несколько иным. Это обусловлено аппаратной платформой, для которой разрабатывается ОС, сферой использования ОС, соображениями разработчиков и т.п. Задача деления ядра на слои является крайне ответственной и важной. В самом деле, неоправданное увеличение числа слоев приводит к замедлению работы системы из-за увеличения времени межслойных взаимодействий. В целях ускорения работы ядра и ОС в целом разработчики могут прибегать к нарушению иерархии слоев, при этом возможны ситуации, когда вышележащий слой обращается к функциям нижних слоев, минуя промежуточные. Уменьшение количества слоев ядра оказывает отрицательное влияние на логичность и расширяемость ОС. Особенно сильно такие нарушения могут сказаться на переносимости ОС, если какой-либо из вышележащих слоев содержит машинно-зависимые функции. В этом случае особенности конкретной аппаратной платформы не локализуются в пределах одного из нижних слоев, и перенос такой системы с одного типа аппаратуры на другой является весьма трудновыполнимой задачей.
Статьи к прочтению:
01 — Модули ядра Linux. Введение
Похожие статьи:
csaa.ru
Ядро и вспомогательные модули ОС
Архитектура операционной системы
Функциональная сложность ОС неизбежно приводит к сложности ее архитектуры, под которой понимают структурную организацию ОС на основе различных программных модулей. Обычно в состав ОС входят исполняемые и объектные модули стандартных для данной ОС форматов, библиотеки разных типов, модули исходного текста программ, программные модули специального формата (например, загрузчик ОС, драйверы ввода-вывода), конфигурационные файлы, файлы документации, модули справочной системы и т.д.
Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, к расширению и переносу на новые платформы. Какой-либо единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Ядро и вспомогательные модули ОС
Наиболее общим подходом к структуризации ОС является разделение всех её модулей на две группы:
· ядро – модули, выполняющие основные функции ОС( управление процессами, памятью, устройствами ввода-вывода и т.п.)
· модули, выполняющие вспомогательные функции.
Термин “ядро” в разных ОС трактуется по-разному. Одним из определяющих свойств является работа в привилегированном режиме. Ядро ОС – это часть ОС, как правило, постоянно находящаяся в ОП, выполняющая основные функции ОС в привилегированном режиме работы процессора.
В состав ядра входят функции
· решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции не доступны для приложений.
· для поддержки приложений, создавая для них прикладную программную среду. Приложения могут обращаться к ядру с запросами – системными вызовами – для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызывать приложения, образуют интерфейс прикладного программирования – API.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями ОС, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или их часть постоянно находится в ОП, т. е. являются резидентными.
Ядро является движущей силой всех вычислительных процессов в компьютерной системе, и крах ядра равносилен краху всей системы. Поэтому разработчики ОС уделяют особое внимание надежности кодов ядра, в результате процесс их отладки может растягиваться на многие месяцы. Обычно ядро оформляется в виде программного модуля некоторого специального формата.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур. Поскольку некоторые компоненты ОС оформлены как обычные приложения, т. е. в виде исполняемых модулей стандартного для данного ОС формата, то часто бывает очень сложно провести четкую грань между ОС и приложениями (рис. 1).
Решение о том, является ли какая-либо программа частью ОС или нет, принимает производитель ОС. Среди многих фактов, способных повлиять на это решение, немало важными являются перспективы того, будет программа иметь массовый спрос у потенциальных пользователей данной ОС. Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью ОС Windows NT 4.0 и Windows 95/98,
dfd
— Вспомогательные модули ОС. — Пользовательские приложения.
Рис. 1. Нечеткость границы между ОС и приложениями.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
· Утилиты – программы, решающие отдельные задачи управления и сопровождения компьютерной системы, например, программы сжатия дисков, архивирование данных
· Системные обрабатывающие программы – текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
· Программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор и даже игры;
· Библиотеки процедур разного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системны вызовов.
Разделение ОС на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной компиляции.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в ОП только на время выполнения своих функций, т. е. являются транзитными. Постоянно в ОП располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит ОП компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных ОС за счет выполнения функций ядра в привилегированном режиме.
Похожие статьи:
poznayka.org
3. 1. Ядро и вспомогательные модули ос
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
ядро модули ОС, выполняющие основные функции;
модули,выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы. Без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие, как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами системными вызовами для выполнения тех или иных действий, например, для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования API.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Ядро является движущей силой всех вычислительных процессов в компьютерной системе, и крах ядра равносилен краху всей системы. Поэтому разработчики операционной системы уделяют особое внимание надежности кодов ядра, в результате процесс их отладки может растягиваться на многие месяцы.
Обычно ядро оформляется в виде программного модуля некоторого специального формата, отличающегося от формата пользовательских приложений. Термин «ядро» в разных ОС трактуется по-разному. Одним из определяющих свойств ядра является работа в привилегированном режиме.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования данных на магнитной ленте, дефрагментации диска, текстового редактора. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек про-цедур.
Поскольку некоторые компоненты ОС оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями. Решение о том, является какая-либо программа частью ОС или нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
утилиты программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
системные обрабатывающие программы текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор и даже игры;
библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, утилиты, обрабатывающие программы и библиотеки ОС для выполнения своих задач, обращаются к функциям ядра посредством системных вызовов.
Разделение операционной системы на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Постоянно в оперативной памяти располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит оперативную память компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных операционной системы за счет выполнения функций ядра в привилегированном режиме.
studfiles.net
Ядро и вспомогательные модули ОС — КиберПедия
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
— ядро — модули, выполняющие основные функции ОС;
— модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы, без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие как переключение контекстов, загрузка/выгрузка станиц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Ядро является движущей силой всех вычислительных процессов в компьютерной системе, и крах ядра равносилен краху всей системы. Поэтому разработчики операционной системы уделяют особое внимание надежности кодов ядра, в результате процесс их отладки может растягиваться на многие месяцы.
Обычно ядро оформляется в виде программного модуля некоторого специального формата, отличающегося от формата пользовательских приложений.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования данных на магнитной ленте, дефрагментации диска, текстового редактора. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур.
Поскольку некоторые компоненты ОС оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями (рис. 10.12).
Решение о том, является ли какая-либо программа частью ОС или!нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС.
Некоторая программа может существовать определенное время как пользовательское приложение, а потом стать частью ОС, или наоборот. Ярким примером такого изменения статуса программы является Web-браузер компании Microsoft, который сначала поставлялся как отдельное приложение, затем стал частью операционных систем Windows NT 4.0 и Windows 95/98, а сегодня существует большая вероятность того, что по решению суда этот браузер снова превратится в самостоятельное приложение.
Рис. 10.12. Нечеткость границы между ОС и приложениями
Вспомогательные модули ОС обычно подразделяются на следующие группы:
— утилиты — программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
— системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
— программы предоставления пользователю дополнительных услуг — специальный вариант пользовательского интерфейса, калькулятор и даже игры;
— библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, для выполнения своих задач утилиты, обрабатывающие программы и библиотеки ОС, обращаются к функциям ядра посредством системных вызовов (рис. 10.13).
Разделение операционной системы на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.
Рис. 10.13. Взаимодействие между ядром и вспомогательными модулями ОС
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Постоянно в оперативной памяти располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит оперативную память компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных операционной системы за счет выполнения функций ядра в привилегированном режиме.
Ядро в привилегированном режиме
Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Все усилия разработчиков операционной системы окажутся напрасными, если их решения воплощены в незащищенные от приложений модули системы, какими бы элегантными и эффективными эти решения ни были. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.
Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (usermode) и привилегированный режим, который также называют режимом ядра (kernelmode), или режимом супервизора (supervisormode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.
Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме (рис. 10.14). Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».
Рис. 10.14.Архитектура операционной системы с ядром в привилегированном режиме
Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некоторых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Например, инструкции ввода-вывода могут быть запрещены приложениям при доступе к контроллеру жесткого диска, который хранит данные, общие для ОС и всех приложений, но разрешены при доступе к последовательному порту, который выделен в монопольное владение для определенного приложения. Важно, что условия разрешения выполнения критичных инструкций находятся под полным контролем ОС и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима.
Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти. Очень важно, что механизмы защиты памяти используются операционной системой не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и операционную систему.
cyberpedia.su
Ядро и вспомогательные модули операционной системы
При функциональной декомпозиции ОС модули разделяются на две группы:
ядро – модули, выполняющие основные функции ОС;
модули, выполняющие вспомогательные функции ОС.
Модули ядра ОС
Модули ядра ОС выполняют следующие базовые функции
ОС:
управление процессами
управление памятью
управление устройствами ввода-вывода
Ядро обеспечивает решение задачи организации вычислительного процесса: переключение контекстов,
загрузка/выгрузка страниц, обработка прерываний и т.п.
Другая задача – поддержка приложений, создание для них прикладной программной среды. Приложения
обращаются к ядру с запросами (системными вызовами) для выполнения базовых операций (открытие и чтение файла, вывод информации на дисплей и т.п.)
Функции выполняемые ядром ОС требуют высокой
скорости выполнения и для этого размещаются постоянно
воперативной памяти (резидентные модули).
Вспомогательные модули операционной системы
Вспомогательные модули выполняют полезные, но менее обязательные функции. Например:
архивирование информации;
дефрагментация данных на диске;
поиск необходимого файла и т.п.
Вспомогательные модули часто оформляются как обычные приложения и провести границу между ними и обычными приложениями сложно.
Деление на основные и вспомогательные модули ОС условно. Некоторые программы переходят из разряда вспомогательных модулей в основные и наоборот.
Вспомогательные модули операционной системы
Вспомогательные модули ОС условно разделяются на следующие группы:
Утилиты – приложения, решающие отельные задачи управления и сопровождения ОС
Системные обрабатывающие программы – текстовые и графические редакторы, компиляторы, компоновщики и т.п.
Программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор, игры и т.п.
Библиотеки процедур – модули различного назначения, упрощающие разработку приложений.
Вспомогательные модули обращаются к функциям ядра ОС посредством системных вызовов.

Ядро и вспомогательные
модули операционной системы
утилиты | Системные | |
обрабатывающие | ||
| ||
| программы |
Ядро ОС
пользовательские приложения
Привилегированный режим процессора
Для надежного управления работой приложений ядро ОС должно обладать некоторыми привилегиями по отношению к остальным приложениям.
Обеспечивается привилегированный режим специальными средствами аппаратной поддержкой. Процессор компьютера поддерживает как минимум два режима работы –
пользовательский (user mode) и привилегированный(kernel mode).
Приложения в пользовательском режиме не могут выполнять некоторые критичные команды (переключение процессора с задачи на задачу, доступ к механизму выделения и защиты областей памяти и т.п.).
Привилегированный режим работы
Между числом привилегий, поддерживаемых аппаратурой и операционной системой нет однозначного соответствия:
процессор Intel поддерживает 4 режима работы процессора – операционные системы Windows используют два из них.
Для реализации привилегированного режима достаточно поддержки двух режимов работы
Повышение устойчивости ОС, обеспечивающееся использованием работы в привилегированном режиме, достигается за счет некоторого замедления, вызванного необходимостью переключения работы ядра.
Архитектура ОС, основанная на разделении привилегированного режима для ядра и пользовательского режима для приложений – стала классической.

Многослойная структура ОС
Вычислительная система под управлением ОС можно рассматривать как состоящую из нескольких слоев:
Нижний слой – аппаратура;
Средний – ядро ОС;
Верхний – утилиты, приложения и т.п.
Аппаратура
Ядро ОС
Приложения
Детализация структуры ядра
Ядро, являясь структурным элементом ОС, может быть логически разложен на ряд слоев:
Средства аппаратной поддержки ОС
Машинно-зависимыекомпоненты ОС (включает модули, отражающие специфику аппаратной платформы компьютера)
Базовые механизмы ядра (включает наиболее примитивные операции ядра – переключение контекстов процессов, диспетчеризация прерываний), модули выполняют решения принятые на более высоких уровнях
Менеджеры ресурсов (реализует задачи стратегического управления), включает менеджеры – диспетчеры процессов, ввода-выводаи т.п.
Интерфейсы системных вызовов (включает модули взаимодействия с приложениями и системными утилитами, функции API.
Аппаратная зависимость ОС
Операционная система в процессе работы взаимодействует с аппаратными средствами компьютера:
Средства поддержки привилегированного режима
Средства трансляции адресов
Средства переключения процессов
Защита областей памяти
Система прерываний
Системный таймер
Это делает ОС привязанной к определенной аппаратной платформе
studfiles.net
Ядро и вспомогательные модули ОС. Ядро в привилегированном режиме
Любая хорошо организованная сложная система имеет понятную и рациональную структуру, то есть разделяется на части — модули, имеющие вполне законченное функциональное назначение с четко оговоренными правилами взаимодействия. Ясное понимание роли каждого отдельного модуля существенно упрощает работу по модификации и развитию системы, а сложную систему без хорошей структуры чаще проще разработать заново, чем модернизировать.
Функциональная сложность операционной системы неизбежно приводит к сложности ее архитектуры, под которой понимают структурную организацию ОС на основе различных программных модулей. Обычно в состав ОС входят исполняемые и объектные модули стандартных для данной ОС форматов, библиотеки разных типов, модули исходного текста программ, программные модули специального формата (например, загрузчик ОС, драйверы ввода-вывода), конфигурационные файлы, файлы документации, модули справочной системы и т. д.
Большинство современных операционных систем представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые платформы. Какой-либо единой архитектуры ОС не существует, но существуют универсальные подходы к структурированию ОС.
Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:
· ядро — модули ОС, выполняющие основные функции;
· модули, выполняющие вспомогательные функции ОС.
Модули ядра выполняют такие базовые функции ОС, как управление процессами, памятью, устройствами ввода-вывода и т. п. Ядро составляет сердцевину операционной системы. Без него ОС является полностью неработоспособной и не сможет выполнить ни одну из своих функций.
В состав ядра входят функции, решающие внутрисистемные задачи организации вычислительного процесса, такие, как переключение контекстов, загрузка/выгрузка страниц, обработка прерываний. Эти функции недоступны для приложений. Другой класс функций ядра служит для поддержки приложений, создавая для них так называемую прикладную программную среду. Приложения могут обращаться к ядру с запросами — системными вызовами — для выполнения тех или иных действий, например, для открытия и чтения файла, вывода графической информации на дисплей, получения системного времени и т. д. Функции ядра, которые могут вызываться приложениями, образуют интерфейс прикладного программирования — API.
Функции, выполняемые модулями ядра, являются наиболее часто используемыми функциями операционной системы, поэтому скорость их выполнения определяет производительность всей системы в целом. Для обеспечения высокой скорости работы ОС все модули ядра или большая их часть постоянно находятся в оперативной памяти, то есть являются резидентными.
Ядро является движущей силой всех вычислительных процессов в компьютерной системе, и крах ядра равносилен краху всей системы. Поэтому разработчики операционной системы уделяют особое внимание надежности кодов ядра, в результате процесс их отладки может растягиваться на многие месяцы.
Обычно ядро оформляется в виде программного модуля некоторого специального формата, отличающегося от формата пользовательских приложений. Термин «ядро» в разных ОС трактуется по-разному. Одним из определяющих свойств ядра является работа в привилегированном режиме.
Остальные модули ОС выполняют весьма полезные, но менее обязательные функции. Например, к таким вспомогательным модулям могут быть отнесены программы архивирования данных на магнитной ленте, дефрагментации диска, текстового редактора. Вспомогательные модули ОС оформляются либо в виде приложений, либо в виде библиотек процедур.
Поскольку некоторые компоненты ОС оформлены как обычные приложения, то есть в виде исполняемых модулей стандартного для данной ОС формата, то часто бывает очень сложно провести четкую грань между операционной системой и приложениями. Решение о том, является какая-либо программа частью ОС или нет, принимает производитель ОС. Среди многих факторов, способных повлиять на это решение, немаловажными являются перспективы того, будет ли программа иметь массовый спрос у потенциальных пользователей данной ОС.
Вспомогательные модули ОС обычно подразделяются на следующие группы:
· утилиты -программы, решающие отдельные задачи управления и сопровождения компьютерной системы, такие, например, как программы сжатия дисков, архивирования данных на магнитную ленту;
· системные обрабатывающие программы — текстовые или графические редакторы, компиляторы, компоновщики, отладчики;
· программы предоставления пользователю дополнительных услуг – специальный вариант пользовательского интерфейса, калькулятор и даже игры;
· библиотеки процедур различного назначения, упрощающие разработку приложений, например библиотека математических функций, функций ввода-вывода и т. д.
Как и обычные приложения, утилиты, обрабатывающие программы и библиотеки ОС для выполнения своих задач, обращаются к функциям ядра посредством системных вызовов.
Разделение операционной системы на ядро и модули-приложения обеспечивает легкую расширяемость ОС. Чтобы добавить новую высокоуровневую функцию, достаточно разработать новое приложение, и при этом не требуется модифицировать ответственные функции, образующие ядро системы. Однако внесение изменений в функции ядра может оказаться гораздо сложнее, и сложность эта зависит от структурной организации самого ядра. В некоторых случаях каждое исправление ядра может потребовать его полной перекомпиляции.
Модули ОС, оформленные в виде утилит, системных обрабатывающих программ и библиотек, обычно загружаются в оперативную память только на время выполнения своих функций, то есть являются транзитными. Постоянно в оперативной памяти располагаются только самые необходимые коды ОС, составляющие ее ядро. Такая организация ОС экономит оперативную память компьютера.
Важным свойством архитектуры ОС, основанной на ядре, является возможность защиты кодов и данных операционной системы за счет выполнения функций ядра в привилегированном режиме.
Для надежного управления ходом выполнения приложений операционная система должна иметь по отношению к приложениям определенные привилегии. Иначе некорректно работающее приложение может вмешаться в работу ОС и, например, разрушить часть ее кодов. Операционная система должна обладать исключительными полномочиями также для того, чтобы играть роль арбитра в споре приложений за ресурсы компьютера в мультипрограммном режиме. Ни одно приложение не должно иметь возможности без ведома ОС получать дополнительную область памяти, занимать процессор дольше разрешенного операционной системой периода времени, непосредственно управлять совместно используемыми внешними устройствами.
Обеспечить привилегии операционной системе невозможно без специальных средств аппаратной поддержки. Аппаратура компьютера должна поддерживать как минимум два режима работы — пользовательский режим (user mode) и привилегированный режим, который также называют режимом ядра (kernel mode) или режимом супервизора (supervisor mode). Подразумевается, что операционная система или некоторые ее части работают в привилегированном режиме, а приложения — в пользовательском режиме.
Так как ядро выполняет все основные функции ОС, то чаще всего именно ядро становится той частью ОС, которая работает в привилегированном режиме. Иногда это свойство — работа в привилегированном режиме — служит основным определением понятия «ядро».
Приложения ставятся в подчиненное положение за счет запрета выполнения в пользовательском режиме некоторых критичных команд, связанных с переключением процессора с задачи на задачу, управлением устройствами ввода-вывода, доступом к механизмам распределения и защиты памяти. Выполнение некоторых инструкций в пользовательском режиме запрещается безусловно (очевидно, что к таким инструкциям относится инструкция перехода в привилегированный режим), тогда как другие запрещается выполнять только при определенных условиях. Важно, что условия разрешения выполнения критичных инструкций находятся под полным контролем ОС, и этот контроль обеспечивается за счет набора инструкций, безусловно запрещенных для пользовательского режима.
Аналогичным образом обеспечиваются привилегии ОС при доступе к памяти. Например, выполнение инструкции доступа к памяти для приложения разрешается, если инструкция обращается к области памяти, отведенной данному приложению операционной системой, и запрещается при обращении к областям памяти, занимаемым ОС или другими приложениями. Полный контроль ОС над доступом к памяти достигается за счет того, что инструкции конфигурирования механизмов защиты памяти разрешается выполнять только в привилегированном режиме.
Очень важно, что механизмы защиты памяти используются операционной системой не только для защиты своих областей памяти от приложений, но и для защиты областей памяти, выделенных ОС какому-либо приложению, от остальных приложений. Говорят, что каждое приложение работает в своем адресном пространстве. Это свойство позволяет локализовать некорректно работающее приложение в собственной области памяти, так что его ошибки не оказывают влияния на остальные приложения и операционную систему. Между количеством уровней привилегий, реализуемых аппаратно, и количеством уровней привилегий, поддерживаемых ОС, нет прямого соответствия. Так, на базе четырех уровней, обеспечиваемых процессорами компании Intel, операционные системы Windows NT, UNIX и некоторые другие ограничиваются двухуровневой системой.
С другой стороны, если аппаратура поддерживает хотя бы два уровня привилегий, то ОС может на этой основе создать программным способом сколь угодно развитую систему защиты. На основе двух режимов привилегий процессора ОС может построить сложную систему индивидуальной защиты ресурсов, примером которой является типичная система защиты файлов и каталогов. Такая система позволяет задать для любого пользователя определенные права доступа к каждому из файлов и каталогов.
Однако, повышение устойчивости операционной системы, обеспечиваемое переходом ядра в привилегированный режим, достигается за счет некоторого замедления выполнения системных вызовов. Системный вызов привилегированного ядра инициирует переключение процессора из пользовательского режима в привилегированный, а при возврате к приложению — переключение из привилегированного режима в пользовательский. Во всех типах процессоров из-за дополнительной двукратной задержки переключения переход на процедуру со сменой режима выполняется медленнее, чем вызов процедуры без смены режима.
Архитектура ОС, основанная на привилегированном ядре и приложениях пользовательского режима, стала, по существу, классической. Ее используют многие популярные операционные системы, в том числе многочисленные версии UNIX, OS/2, и с определенными модификациями — Windows NT.
В некоторых случаях разработчики ОС отступают от этого классического варианта архитектуры, организуя работу ядра и приложений в одном и том же режиме. Так, известная специализированная операционная система NetWare компании Novell использует привилегированный режим процессоров Intel x86/ Pentium как для работы ядра, так и для работы своих специфических приложений – загружаемых модулей NLM. При таком построении ОС обращения приложений к ядру выполняются быстрее, так как нет переключения режимов, однако при этом отсутствует надежная аппаратная защита памяти, занимаемой модулями ОС, от некорректно работающего приложения. Разработчики NetWare пошли на такое потенциальное снижение надежности своей операционной системы, поскольку ограниченный набор ее специализированных приложений позволяет компенсировать этот архитектурный недостаток за счет тщательной отладки каждого приложения.
Похожие статьи:
poznayka.org