Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Строение ядра операционной системы




Управление системными ресурсами

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

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

Значительная часть управляющих блоков информационных объектов внутри ОС как раз и предназначена для ведения распределения и перераспределения ресурсов.

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

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

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

 

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

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

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

Совместимость операционных систем – это возможность выполнять программы одной операционной системы под управлением другой. Ядро Linux поддерживает совместимость путем выполнения исполняемых файлов классов Java, как будто это обычные исполняемые модули Linux. Именно в ядре реализован механизм, делающий такую поддержку прозрачной для пользователей. Операционная система средствами ядра может обеспечивать совместимость путем автоматической возможности запуска и выполнения исполняемых файлов другой операционной системы. Так, в Windows имеется возможность автоматически запускать приложения для MS-DOS и старых 16-битных версий Windows.

Совместимость с аппаратными средствами принято называть переносимостью (мобильностью). Совместимость с аппаратурой видеокарт обеспечивается широкими наборами драйверов к этим видеокартам для каждой из широко используемых ОС. Совместимость с аппаратурой процессора неизбежно требует усилий разработчиков ядра ОС. Операционная система Linux имеет наиболее широкий спектр таких применений и работает с процессорами семейств Alpha, Intel, Motorola 680x0, MIPS, PowerPC, SPARC и рядом других, менее известных в России. Операционная система Windows NT кроме работы на процессорах Intel функционирует с процессорами Alpha, PowerPC, MIPS.

Очень большое значение для операционной системы, если только она не ориентирована исключительно на персональное применение, имеет живучесть и надежность. Живучесть и надежность Linux гарантирует открытый процесс разработки системы, при котором каждая строка исходного кода и каждое изменение в нем за считанные минуты исследуются огромным числом разработчиков по всему миру. Часть из них инициативно специализируется на выявлении затаившихся ошибок. Таким образом большинство нарушений безопасности исправляются в течение нескольких дней, а то и часов. Среди профессионалов наиболее безопасной до сих пор считается ОС OpenBSD – одна из вариаций Unix, в которой основной целью ставилась именно безопасность.

Любое краткое описание строения ядра ОС является неизбежным упрощением, которое теряет многие существенные детали. Поэтому к структурному описанию ОС не нужно относиться как к точному описанию – оно неизбежно приближенное.

В настоящее время укрупненную структуру ОС принято рассматривать либо как многослойную, либо как модульную. В многослойной структуре обычно выделяют следующие слои: системно-пользовательские приложения (Explorer в Windows, Midnight Commander в Linux и т.п.), системные библиотеки, архитектурно-независимую часть ядра и архитектурно-зависимую часть ядра. В более детальном разбиении можно последовательно выделить слой системных сервисов (реализуемых системными библиотеками), файловую систему, слой управления памятью и устройствами ввода-вывода, а также "полуслой" планирования процессов (предыдущий слой взаимодействует с аппаратурой напрямую).

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

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

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

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

Использование микроядра неизбежно влечет дополнительный вызов (чаще вызовы) подпрограмм, реализующих элементарные действия, но обеспечивает большой функциональный запас для модификации операционной системы. Операционная система Windows NT (в отличие от Windows 9x) с самого начала проектировалась как использующая микроядро. Именно на основе элементарных функций микроядра основана реализация совместимости с программами 16-битной Windows, MS-DOS и минимальным стандартном POSIX.

Монолитное ядро – это один большой системный процесс. Вместо отправки сообщений модули монолитного ядра взаимодействуют за счет обычных вызовов подпрограмм.

В Linux ядро в основном – монолитное. Это определилось авторским решением первой версии Linux (Линусом Торвальдсом – Linus Torvalds) которое объясняется тем, что монолитное ядро имеет более простую и ясную структуру, для него не приходится изобретать средства передачи сообщений, разрабатывать методы загрузки внутренних моделей и т.п. По существу утверждается, что асинхронный порядок взаимодействий в варианте с микроядром динамически слишком сложен, чтобы ожидать высокую надежность достижимого программного решения для всех внутренних функций операционной системы. Вариант микроядра, с одной стороны, дает возможность более высокой гибкости модификации ОС, но используемые дополнительные средства взаимодействий между внутренними процессами принципиально снижают его быстродействие. С другой стороны, микроядро очень небольшого объема может размещаться во внутреннем кэше современного процессора, что, в свою очередь, может существенно повысить быстродействие. Именно такое решение использовано в ОС реального времени QNX.

 

 

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

 




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 1485; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.