Зкзоядро операционной системы

Экзоядро: хорошо забытое новое

Зкзоядро операционной системы
Экзо (от греч. exo — вне, снаружи) — приставка, означающая: внешний, наружный, указывающая на связь с внешней средой (например, экзосфера).

МотивыРовно десять лет тому назад группой сотрудников всемирно известных лабораторий компьютерных наук Массачусетского технологического института — Д. Энглером (Dawson R. Engler), Ф. Каашуэком (M.

Frans Kaashoek), Дж. О'Тулом мл. (James W. O'Toole Jr.) и др. — были опубликованы материалы, посвященные архитектуре операционных систем с так называемым экзоядром. Мотивацией для новой разработки послужило слишком свободное толкование канонического понятия ОС, приведшее к полному разброду в индустрии.

Напомним, что по определению ОС — это программное обеспечение, которому предписывается выполнение двух главных задач: абстрагирования и защиты системных ресурсов.

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

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

«Абстрагирование физических ресурсов реализуется в значительных объемах сложного, многопоточного кода. Наличие таких высокоуровневых сервисов, как полноценная система виртуальной памяти, ее динамическое распределение, подкачка структур данных ядра и кода и пр., несомненно, усложняет систему и пагубно сказывается на ее надежности.Поскольку ОС — это, как правило, большая и изощренная сущность, изменение какой-либо из ее составляющих частей требует огромных трудозатрат. Наличие сильной зависимости всей ОС и приложений от реализаций абстракций создает преграды для добавления новых сервисов и модификации уже существующих.С одной стороны, абстракции ОС часто слишком общие и избыточные, так как должны отвечать требованиям любого приложения. С другой — всем приложениям приходится использовать каждую предусмотренную ОС абстракцию, и за лишние сервисы приложения (к примеру, СУБД) нередко расплачиваются снижением производительности.Со всеми вышеперечисленными недугами можно было бы справиться, если бы прикладные программисты могли игнорировать эту прослойку (между аппаратурой и прикладным ПО) и реализовывать собственные специальные абстракции. Увы, из-за преобладания высокоуровневых интерфейсов нынешних ОС это невозможно. Кроме того, не удастся добиться чего-либо действенного (т. е. легкого, быстрого и дешевого) посредством эмуляции приложением собственных абстракций над существующим слоем абстракций ОС».Не следует, конечно, думать, что перечисленные проблемы не были известны и индустрия не пыталась найти пути их преодоления. Наибольшие надежды в то время связывались с массовым переходом на микроядерную архитектуру, однако, как видно уже сегодня, этого не произошло, и тому имеются свои объяснения. Так, вынесение реализаций многих высокоуровневых сервисов из ядра в программы пользовательского уровня повышает надежность ОС, но при этом ухудшает ее адаптируемость вследствие того, что при модификации данных программ необходимо обладать высокими привилегиями. На гибкость ОС положительно влияет возможность выбора приложением требуемых абстракций, а негативно, как и в случае с традиционными системами, — присутствие виртуальной машины, хотя и довольно простой. И последнее, по сравнению с монолитным ядром микроядерная архитектура характеризуется более низкой производительностью, из-за накладных расходов на обмен сообщениями между режимами пользовательским и ядра.

Ломая традиции…Все эти противоречия и была призвана разрешить экзоядерная архитектура, основанная на нескольких принципах, с которыми стоит познакомиться более подробно.

1. Экзоядро не должно осуществлять абстрагирования физических ресурсов (далее для краткости будем называть их просто «ресурсами»). Для выполнения этой задачи предназначены непривилегированные прикладные библиотеки, в терминологии экзоядерной архитектуры называемые «библиотечной операционной системой» (libOS, library operating system). В рамках каждого конкретного приложения может быть реализована своя libOS — сугубо в необходимых масштабах.2. Таким образом, ресурсами фактически должны управлять сами приложения. Обязанности экзоядра сведены к выполнению минимума функций, связанных с защитой: именования, выделения, высвобождения и разделения ресурсов, контроль прав доступа.3. Соответственно, интерфейсы ресурсов должны быть как можно ближе к «железу». Чем на более низком уровне функционирует интерфейс, тем меньше требуется вмешательства со стороны экзоядра и тем больший контроль над ресурсом получают приложения. В идеальной ситуации интерфейсы и есть «железо»: страницы физической и виртуальной памяти, блоки дисковой памяти, кванты времени процессора. Виртуализация ресурса экзоядром допускается в двух случаях: либо когда ресурс не может быть распределен без нее, либо когда она требуется для достижения большей эффективности эксплуатации ресурса.4. Прикладное управление ресурсами реализуется посредством операций, обеспечиваемых аппаратной частью. К примеру, для управления виртуальной памятью задействуется весь потенциал механизма прямого доступа к памяти, поддержка которого имеется в оборудовании. Тем самым экзоядро стремится безопасно экспортировать все аппаратные операции.Даже такое поверхностное описание уже позволяет сделать кое-какие выводы. Так как для реализации безопасного распределения ресурсов не нужны ни сложные алгоритмы, ни большой объем кода, экзоядро может быть крохотным и легко понятным. Следовательно, и ошибок оно содержит относительно мало (что имеет большое значение). Также легко устраняется проблема плохой приспособляемости: во-первых, отсутствует сильная зависимость всей ОС и приложений от реализации абстракций; во-вторых, экзоядро с минимумом сервисов проще в модификации. Наконец, благодаря применению сверхспециализированных абстракций разрешается проблема низкой производительности — приложения получают сугубо те ресурсы, в которых у них действительно есть потребность, и манипулируют ими фактически без каких-либо ограничений со стороны ядра ОС.

XOK/ExOSЕстественно, сама по себе теория мало чего стоит, поэтому имеет смысл хотя бы кратко познакомиться с реализацией экзоядерной архитектуры на примере XOK/ExOS — экспериментальной связки собственно экзоядра XOK и библиотечной операционной системы ExOS.

Данный тандем, а вместе с ним разнообразные пользовательские программы и инструментальные средства Unix составляют дистрибутив exopc, альфа-релиз которого (около 53 MB) распространяется с исходными текстами на более чем либеральных условиях и доступен для загрузки по адресу amsterdam.lcs.mit.edu/exo.

Дистрибутив до сих пор не самодостаточен, и чтобы получить «почти» работающую систему (с учетом текущей стадии проекта), необходимо всего лишь обзавестись одним из вариантов Linux или *BSD для выполнения сборки — причем, так как в exopc используется бинарный формат, аналогичный OpenBSD, в Linux придется применять кросс-компилятор. Также заранее стоит выяснить и вопросы совместимости аппаратного обеспечения.

Итак, XOK представляет собой небольшой безопасный распределитель ресурсов x86 совместимых машин. В нем применяется механизм «безопасных связей» (secure bindings), отделяющий процедуру получения разрешения на эксплуатации ресурса от фактического его использования, в результате чего также повышается производительность системы.

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

Поскольку именно прикладное ПО отвечает за многие сложные высокоуровневые объекты (например, файлы, каталоги, сетевые соединения), экзоядро должно «вникать» в их семантику только во время связывания, для реализации же проверок в процессе доступа этого не требуется. Таким образом, экзоядро защищает ресурсы, фактически не имея представления о них.

Библиотечная операционная система ExOS есть не что иное, как «Unix в библиотеке». Реализации Unix-абстракций были вычленены из ядра ОС 4.4BSD, благодаря чему они позволяют запускать без модификации многие приложения, включая достаточно сложные, вроде GCC, Csh, Perl, Vi, Telnet. Для экономии ресурсов используются разделяемые библиотеки.

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

ПрименениеВ полном соответствии с тезисами Роба Пайка (Rob Pike), высказанными им в лекции «Исследования в области системного ПО нерелевантны», IT-сообщество почти не обратило внимания на очередную академическую разработку.

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

Однако не исключено, что такая своеобразная игра «в догонялки» когда-нибудь прекратится и специалисты наконец всерьез задумаются о максимально эффективном использовании имеющихся ресурсов. До тех же пор экзоядерной архитектуре суждено оставаться академической игрушкой, хотя, по большому счету, для нее и сегодня нашлась бы своя ниша — самодостаточные приложения, требующие максимальной производительности, к примеру Web- и NFS-серверы, СУБД, системы автоматического управления, научные расчеты. Компактность и приближенность к оборудованию экзоядра позволяет также надеяться на определенные успехи в сегменте так называемых мобильных вычислений.

К словуНедавно в MIT был организован курс «Проектирование операционных систем» (6.828: Operating System Engineering), где на лабораторных работах студенты пишут собственные клоны ОС семейства экзо-Unix, JOS.

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

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

Вы можете подписаться на наш Telegram-канал для получения наиболее интересной информации

Источник: https://ko.com.ua/jekzoyadro_horosho_zabytoe_novoe_20281

Зкзоядро операционной системы

Зкзоядро операционной системы

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

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

То есть жёсткая структура интерфейсов понижает производительность и делает не очень удобным проектирование новых приложений.

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

Эти абстрактные понятия, по существу, представляют собой некую виртуальную машину, в недрах которой и работают программные приложения.

Фиксированную трактовку таких абстракций нельзя считать удовлетворительной по следующим главным причинам:

  1. Приложения теряют выгоды доменно-зависимой оптимизации.
  2. Нет возможности что-то изменить в уже реализованных абстракциях.
  3. Существенно понижается вариативность при проектировании новых программных приложений, поскольку вновь создаваемые абстракции можно выполнить только с применением уже действующих (если такое в принципе можно сделать).

Ничего непонятно?

Попробуй обратиться за помощью к преподавателям

Замечание 1

Эти проблемные моменты можно разрешить переносом управления оборудованием и ресурсным потенциалом в компетенцию приложений,

Экзоядро операционной системы

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

Абстракции высокого уровня могут быть реализованы специальными библиотеками операционной системы, которые работают на более высоком уровне, чем информационные структуры экзоядра.

Разработчики прикладных программ находят необходимые им библиотечные элементы, или разрабатывают их для себя сами. Подключение вновь созданных библиотек выполняется простой привязкой exe-файлов.

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

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

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

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

Например, экзоядру необходимо обезопасить буфер кадра (framebuffer), не имея представления о системе окон, или обезопасить жёсткий диск, не зная о существовании системы файлов.

Решить эту задачу возможно предоставлением всем прикладным программам собственной виртуальной машины. Правда, при этом, снижается общее быстродействие системы.

Но экзоядро не выполняет эмуляцию аппаратных ресурсов, а только лишь распределяет их, что даёт возможность применять это не сложное и дающее отличный эффект решение. В распоряжении экзоядра есть три метода надёжного распределения ресурсов:

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

Проектировщики реализовали один из типов экзоядерной операционной системы, которая основана на безопасной связи, видимости обнуления ресурсов и протоколе для прекращения работы приложений. Она имеет в своём составе экзоядро (Aegis), и непривилегированные библиотечные блоки операционной системы (ExOS). Эта система наглядно показывает самые главные достоинства экзоядерной структуры:

  1. Зкзоядра имеют в своём составе небольшое число примитивов, которые надо выполнить, что повышает эффективность этих ядер.
  2. Задержка предоставления ресурсов при безопасном мультиплексировании на низком уровне, достаточно мала.
  3. Общепринятые абстракции, например, VM и IPC, можно реализовать на уровне прикладных программ, где их также возможно расширить, сделать специализированными или просто заменить.
  4. Прикладные программы имеют возможность реализовать наиболее специализированные абстракции, что зависит от того, что им нужно.

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

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

Кроме того экзоядро даёт операционной системе ExOS (как и другим прикладным программам) повышенный уровень гибкости, которого нет в системах на основе микроядра. Например, система VM, которая выполнена на уровне прикладных программ, имеет возможность лёгкой интеграции с системами с распределённой базовой памятью и программами сбора «мусора».

Используемый в Aegis протокол, который передаёт управление, даёт возможность прикладным программам сделать очень большое число примитивов IPC, делая выбор между удобным применением и быстродействием.

Источник: https://spravochnick.ru/informacionnye_tehnologii/yadro_operacionnoy_sistemy/zkzoyadro_operacionnoy_sistemy/

Модель экзоядра. Микроядерная архитектура (модель «клиент–сервер»)

Зкзоядро операционной системы

П принцип экзоядра, все отдать пользовательским программам.

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

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

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

  • Серверный процесс (который обрабатывает запросы)
  • Клиентский процесс (который посылает запросы)

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

  • Малый код ядра и отдельных подсистем, и как следствие меньшее содержание ошибок.
  • Ядро лучше защищено от вспомогательных процессов.
  • Легко адаптируется к использованию в распределенной системе.

Недостатки:

  • Уменьшение производительности.

4. Структура операционной системы Windows
Структура операционной системы.
Архитектура операционных систем Windows XP и Windows Server 2003 является модульной.

Структурно ее можно разделить на две части.

Первая часть работает в режиме ядра (kernel mode) и называется исполнительной системой Windows (Windows executive).

Компоненты режима ядра обладают следующими функциональными возможностями:

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

Вторая часть работает в так называемом режиме пользователя (user mode) Эту часть составляют защищенные подсистемы ОС. Особенности процессов пользовательского режима:

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

·

Уровень абстрагирования от оборудования (Hardware Abstraction Layer, HAL). Его задачей является отделение операционной системы от особенностей конкретных реализаций в аппаратном обеспечении компьютера, т. е.

от различий в материнских платах, в модификациях процессоров, в наборах микросхем и др. Благодаря этому уровню управление подсистемами прерываний, прямого доступа к памяти, системными шинами и таймерами для ядра операционной системы является одинаковым.

Уровень HAL реализован в системном файле Hal.dll.

5. Структура операционной системы Linux
Linux — это многопользовательская, многозадачная операционная система с открытым исходным кодом, которая конкурирует с системами Microsoft Windows и Apple Macintosh.

История Linux началась в 1969 году с создания MULTICS. Затем бабушки UNIX, и, наконец, основа — ОС MINIX. За которой и последовала более мощная и при этом абсолютно бесплатная система LINUX, первое ядро которой было написано Линусом Торвальдсом в 1991 году.

Linux состоит из четырех основных частей:

Ядро

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

https://www.youtube.com/watch?v=omt6nKsU0w4

Общее адресное пространство, однако, не препятствует модульности системы. По мере необходимости Linux подгружает в память либо выгружает из нее указанные модули.

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

Программы Тысячи программ для работы с файлами, текстовые редакторы, математические программы, программы для работы с аудио- и видеоинформацией, для создания веб-сайтов, шифрования, записи компакт-дисков и т.д.

Командный процессор (shell)

Пользовательский интерфейс для набора команд, их исполнения и отображения результатов. Существуют различные командные процессоры: Bourne shell, Korn shell, C shell, Bourne Again Shell и др. Тем не менее, все эти командные процессоры имеют схожие основные функции.

GUI

Это графическая система, которая обеспечивает поддержку окон, меню, иконок, мыши и других известных элементов GUI — графического интерфейса пользователя. На основе X строятся более сложные графические среды; наиболее популярные из них — KDE и GNOME.

6. Понятие программного интерфейса, его назначение. Виды интерфейсов.
Интерфейс — совокупность технических, программных и методических (протоколов, правил, соглашений) средств сопряжения в вычислительной системе пользователей с устройствами и программами, а также устройств с другими устройствами и программами.

Интерфейс — в широком смысле слова, это способ (стандарт) взаимодействия между объектами. Интерфейс в техническом смысле слова задаёт параметры, процедуры и характеристики взаимодействия объектов. Различают:

Интерфейс пользователя — набор методов взаимодействия компьютерной программы и пользователя этой программы.

Программный интерфейс — набор методов для взаимодействия между программами.

Физический интерфейс — способ взаимодействия физических устройств. Чаще всего речь идёт о компьютерных портах.


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

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

Обмен информацией осуществляется передачей сообщения.
Современными видами интерфейсов(!) являются:

1) Командный интерфейс. Командный интерфейс называется так по тому, что в этом виде интерфейса человек подает «команды» компьютеру, а компьютер их выполняет и выдает результат человеку. Командный интерфейс реализован в виде пакетной технологии и технологии командной строки.

2) WIMP (Проще сказать, Графический) — интерфейс (Window — окно, Image — образ, Menu — меню, Pointer — указатель).

Характерной особенностью этого вида интерфейса является то, что диалог с пользователем ведется не с помощью команд, а с помощью графических образов — меню, окон, других элементов.

Хотя и в этом интерфейсе подаются команды машине, но это делается «опосредственно», через графические образы. Этот вид интерфейса реализован на двух уровнях технологий: простой графический интерфейс и «чистый» WIMP — интерфейс.

3) SILK (Проще говоря, Голосовой) — интерфейс (Speech — речь, Image — образ, Language — язык, Knowlege — знание). Этот вид интерфейса наиболее приближен к обычной, человеческой форме общения. В рамках этого интерфейса идет обычный «разговор» человека и компьютера.

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

Этот вид интерфейса наиболее требователен к аппаратным ресурсам компьютера, и поэтому его применяют в основном для военных целей.

7. Понятие прерывания.
Прерывание
(англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события.

При этом выполнение текущей последовательности команд приостанавливается и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
В зависимости от источника возникновения сигнала прерывания делятся на:

  • асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ);
  • синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции;
  • программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания, как правило, используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.

8. Понятия процесс, поток.
Проце́сс
— программа, которая выполняется в текущий момент.

Компьютерная программа сама по себе — это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций.

Также, процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д. Обычно, процесс в вычислительной системе представлен (также говорят, «владеет») следующими ресурсами:

  • образом исполняемого машинного кода, ассоциированного с программой;
  • памятью (обычно некоторой областью виртуальной памяти), которая включает в себя:
    • исполняемый код;
    • входные и выходные данные процесса;
    • стек вызовов (для отслеживания активных подпрограмм);
    • кучу для хранения промежуточных результатов вычислений, генерируемых во время выполнения;
  • дескрипторами ресурсов операционной системы, выделенными для процесса, например, файловыми дескрипторами (в терминологии ОС Unix) или «хэндлами» (в терминологии ОС Windows);
  • атрибутами безопасности, такими как владелец и набор полномочий процесса (допустимых операций);
  • состоянием процессора (контекстом), таким как:
    • содержимое регистров;
    • схема преобразования виртуальных адресов в физические;
    • и т. д.

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

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

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

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

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

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

В системе разделения времени ядро предоставляет процессу ресурсы центрального процессора (ЦП) на интервал времени, по истечении которого выгружает этот процесс и запускает другой, периодически переупорядочивая очередь процессов. Алгоритм планирования процессов использует время выполнения в качестве параметра.

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

Диспетчеризация сводится к следующему:

— сохранение контекста текущего потока, который требуется сменить;

— загрузка контекста нового потока, выбранного в результате планирования;

— запуск нового потока на выполнение.

Источник: https://poisk-ru.ru/s34953t7.html

Booksm
Добавить комментарий