RU2718235C1 - Архитектура операционной системы для обеспечения поддержки поколений микроядер - Google Patents

Архитектура операционной системы для обеспечения поддержки поколений микроядер Download PDF

Info

Publication number
RU2718235C1
RU2718235C1 RU2019119349A RU2019119349A RU2718235C1 RU 2718235 C1 RU2718235 C1 RU 2718235C1 RU 2019119349 A RU2019119349 A RU 2019119349A RU 2019119349 A RU2019119349 A RU 2019119349A RU 2718235 C1 RU2718235 C1 RU 2718235C1
Authority
RU
Russia
Prior art keywords
component
components
interface
operating system
microkernel
Prior art date
Application number
RU2019119349A
Other languages
English (en)
Inventor
Николай Олегович Ильин
Владимир Николаевич Башев
Original Assignee
Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ»)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») filed Critical Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ»)
Priority to RU2019119349A priority Critical patent/RU2718235C1/ru
Application granted granted Critical
Publication of RU2718235C1 publication Critical patent/RU2718235C1/ru
Priority to CN202010562047.2A priority patent/CN112114863A/zh
Priority to US16/904,594 priority patent/US11520597B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

Изобретение относится к архитектуре операционной системы. Технический результат заключается в расширении арсенала средств. Архитектура операционной системы, выполненная с возможностью одновременной работы микроядер разных поколений и содержащая набор взаимосвязанных между собой компонентов Адаптированной Объектной Модели Компонентов (АОМК), построенных по модульному принципу, при этом набор АОМК состоит из компонентов управления, представления, прикладного и микроядра, выполненного в виде контейнера, внутри которого расположены компоненты планировщика, интерфейсной шины, при этом модульный принцип выполнен с возможностью одновременной работы микроядер нескольких поколений в одном экземпляре ОС, каждое новое поколение микроядра в зависимости от аппаратных возможностей включает или агрегирует предыдущее поколение микроядра. 7 ил.

Description

ОБЛАСТЬ ТЕХНИКИ
Настоящее техническое решение относится к области вычислительной техники, в частности, к архитектуре операционной системы (ОС), которая выполнена с возможностью одновременной работы микроядер разных поколений.
УРОВЕНЬ ТЕХНИКИ
Большинство современных операционных систем представляет собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на новые аппаратные платформы. Один из вариантов структуризации ОС - выделение монолитной и микроядерной архитектуры.
Ядро (англ. kernel) - центральная часть операционной системы (ОС), обеспечивающая приложениям координированный доступ к ресурсам компьютера, таким как процессорное время, память, внешнее аппаратное обеспечение, внешнее устройство ввода и вывода информации. Также обычно ядро предоставляет сервисы файловой системы и сетевых протоколов. Микроядро (англ. microkernel) или μ-ядро (англ. μ-kernel) - ядро операционной системы, реализующее минимальный набор функций.
Микроядра условно делят на поколения. Микроядра разных поколений отличаются устройством и технологическими решениями.
В настоящее время существует ряд решений, описывающих архитектуру ОС.
Из уровня техники известно решение, описывающее компьютерную операционную систему (US2006282899A1, MICROSOFT CORP, опубл. 14.12.2006). Недостатком данного решения является то, что нет возможности менять элементы самого ядра, только модульно дополнять функционал на уровне ядра и на уровне приложений.
Из уровня техники известно решение (US6075939А, LYNX REAL TRIME SYSTEMS INC, опубл. 13.06.2000), которое описывает компьютерную операционную систему, содержащую множество различных компонентов. В известном решении компонент включает в себя таблицы импорта и экспорта к функциям. Недостатком данного решения является то, что в нем отсутствует возможность обеспечить взаимозаменяемость любого компонента архитектуры.
Известны также решения, которые описывают различные архитектуры ОС. Такие решения, например, раскрыты в следующих документах: US20100251265A1, US20090158299A1, US20080148277A1, US6308247В1.
Однако, известные из уровня техники решения, описывающие архитектуру ОС, имеют ограниченную функциональность, в части ни в одной из них не предусмотрена возможность одновременной работы микроядер разных поколений.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Технической проблемой, на решение которой направлено заявленное техническое решение, является создание архитектуры операционной системы, выполненной с возможностью одновременной работы микроядер разных поколений, которое охарактеризовано в независимом пунктом формулы.
Техническим результатом является создание архитектуры операционной системы, выполненной с возможностью одновременной работы микроядер разных поколений. Это дает возможность запуска прикладных компонент и приложений, разработанных под разные поколения ядер (разные версии операционной системы) одновременно, а также возможность более полно использовать аппаратные ресурсы платформы, развивая ядро ОС без ущерба функционирования имеющегося прикладного ПО.
Дополнительным техническим результатом, проявляющимся при решении данной технической задачи, является обеспечение модульности микроядерной ОС, модульный принцип позволяет запускать или останавливать, входящие в состав компоненты по необходимости; например, для исправления ошибки можно внести изменения в код компонента, скомпилировать новый компонент, остановить старый и запустить новый.
В предпочтительном варианте реализации заявлена архитектура операционной системы, выполненная с возможностью одновременной работы микроядер разных поколений, содержащая:
набор взаимосвязанных между собой компонентов Адаптированной Объектной Модели Компонентов (АОМК), построенных по модульному принципу, при этом набор АОМК состоит из компонентов ниже приведенной группы, причем может быть более одного экземпляра компонента для любого из типов:
• компонента управления, который выполнен с возможностью обеспечивать доступ и управление ресурсами компьютерной системы;
• компонента представления, который отвечает за пользовательский интерфейс;
• прикладного компонента, который выполнен с возможностью реализации алгоритма решения задач операционной системы;
• компонента микроядра, выполненного в виде контейнера, внутри которого расположены:
a. компонент планировщика, который выполнен с возможностью задания и запуска задач;
b. компонент интерфейсной шины, который выполнен с возможностью загрузки и регистрации дополнительных компонентов в операционной системе;
при этом в заголовок каждого компонента включена таблица интерфейсов, которая содержит: указатель на системный интерфейс для доступа к интерфейсам импортируемых компонентов и их функций, и указатель на интерфейс фабрики компонентов для регистрации компонентов в интерфейсной шине и доступа к интерфейсам самих компонент;
при этом модульный принцип выполнен с возможностью одновременно работы микроядер нескольких поколений в одном экземпляре операционной системы, каждое новое поколение микроядра в зависимости от аппаратных возможностей включает или агрегирует предыдущее поколение микроядра.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
Реализация изобретения будет описана в дальнейшем в соответствии с прилагаемыми чертежами, которые представлены для пояснения сути изобретения и никоим образом не ограничивают область изобретения. К заявке прилагаются следующие чертежи:
Фиг. 1 иллюстрирует архитектуру ОС;
Фиг. 2 иллюстрирует архитектуру микроядра;
Фиг. 3 иллюстрирует микроядро нового поколения, которое включает в себя микроядро предыдущего поколения;
Фиг. 4 иллюстрирует процесс загрузки компонентов микроядра;
Фиг. 5 иллюстрирует пример механизмов повторной применяемости компонентов;
Фиг. 6 иллюстрирует пример циклического планирования;
Фиг. 7 иллюстрирует общий формат исполняемого файла.
ДЕТАЛЬНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В приведенном ниже подробном описании реализации изобретения приведены многочисленные детали реализации, призванные обеспечить отчетливое понимание настоящего изобретения. Однако, квалифицированному в предметной области специалисту, будет очевидно каким образом можно использовать настоящее изобретение, как с данными деталями реализации, так и без них. В других случаях хорошо известные методы, процедуры и компоненты не были описаны подробно, чтобы не затруднять понимание особенностей настоящего изобретения.
Кроме того, из приведенного изложения будет ясно, что изобретение не ограничивается приведенной реализацией. Многочисленные возможные модификации, изменения, вариации и замены, сохраняющие суть и форму настоящего изобретения, будут очевидными для квалифицированных в предметной области специалистов.
Настоящее изобретение направлено на обеспечение архитектуры ОС, выполненной с возможностью одновременной работы микроядер разных поколений.
Микроядро отвечает за выполнение следующих функций:
1) Диспетчеризацию процессов - одним из компонентов микроядра является планировщик, который решает какому из запущенных процессов должно быть передано управление, включает в себя механизмы синхронизации;
2) Делегирующий обработчик прерываний - все аппаратные прерывания и исключения передаются соответствующему процессу, зарегистрированному на обработку того или иного прерывания без вмешательства микроядра, за исключением тех событий на которые зарегистрировано и обслуживает само микроядро (для примера обработчик прерывания от таймера, используемый планировщиком);
3) Межпроцессное взаимодействие - для обеспечения связи между процессами используется интерфейсная шина, посредством запроса на получение того или иного интерфейса и регистрации на события того или иного интерфейса.
В заявленном решении основой архитектуры ОС является использование технологии АОМК. Архитектура ОС содержит набор взаимосвязанных между собой компонентов АОМК, построенных по модульному принципу с поддержкой работы микроядер разных поколений. Компонент - составная часть распределенного приложения. Модульный принцип позволяет запускать или останавливать, входящие в состав компоненты по необходимости; например, для исправления ошибки можно внести изменения в код компонента, скомпилировать новый компонент, остановить старый и запустить новый.
Все базовые элементы ОС включая микроядро состоят из компонентов с интерфейсами для взаимодействия. Само микроядро также является компонентом с интерфейсом. В заявленной технологии АОМК есть механизмы повторной применяемости компонентов: агрегирование и включение, которые позволяют повторно использовать в новом поколении микроядра более старые версии микроядер.
АОМК - это технология, в основе которой лежит концепция технологии COМ компании Microsoft.
В заявленном решении основами архитектуры операционной системы для обеспечения поддержки поколений микроядер является использование:
1) интерфейса IUnknown с методами QueryInterface, AddRef и Release. В АОМК интерфейс именуется как IEcoUnknown, также идентификатор компонента GUID в известной технологии COM имеет размер только 128 бит, а в заявленном решении он может быть, как и 64 бита, 128 бит, так и 256 бит.
2) фабрики класса, только интерфейс IClassFactory, В АОМК интерфейс именуется как IEcoComponentFactory и используется как механизм создания экземпляров компонент.
3) механизмов повторной применяемости компонентов - это включение (containment) и агрегирование (aggregation). Включение и агрегирование - это приемы программирования, в которых один компонент (внешний) использует другой (внутренний), т.е. внешний компонент агрегирует или включает в себя внутренний. Разница в этих приемах заключается в том, что при включении, внешний компонент реализует интерфейсы внутреннего компонента, тем самым может контролировать внутренний компонент перед передачей вызова. В случае использования агрегирования, внешний компонент не реализует интерфейсы внутреннего, а сразу передает управление внутреннему компоненту. На рисунке ниже (Фиг.5) отображено различие в данных приемах.
Данные приемы в совокупности с концепцией использования интерфейсов (таблицы виртуальных функций) и дают возможность поддержки микроядер разных поколений.
4) механизм маршалинг (marshal).
В отличии от известных из уровня техники архитектур ОС, предлагаемая архитектура ОС обладает следующими отличиями:
Во-первых - это поддержка поколений компонента микроядра с возможностью одновременной работы микроядер нескольких поколений. Каждое новое поколение микроядра (N+1, где N - текущее поколение) обуславливает необходимость поддержки новых аппаратных процессорных архитектур, что происходит в процессе эволюции и технологического развития компьютерной техники. Это может включать изменения в архитектуре и логике вычислений как в самом ЦПУ или контроллере, так и в части разрядности или предоставляемым им программных интерфейсов управления и ввода-вывода. Для поддержки таких изменений на уровне ОС разрабатывается новое поколения микроядра. При запуске прикладного приложения, разработанного под определенную процессорную архитектуру (а значит и поколение микроядра) ОС проверяет наличие факта загруженности данного компонента и, при его отсутствии, загружает требуемое поколение микроядра в память компьютера. При этом загруженное микроядро поколения N регистрирует указатель на себя в микроядре N+1, если оно запущено, либо в следующем более новом N+M микроядре, работающем в ОС. Факт одновременной работы нескольких поколений микроядер в одном экземпляре операционной системы позволяет использовать любые прикладные приложения, разработанные под разные платформенные архитектуры (и, следовательно, под разные микроядра ОС) одновременно. С выходом новых версий (поколений) ОС, она не теряет совместимость и работоспособность для приложений, разработанных давно, тем самым сохраняя инвестиции как разработчиков, так и конечных пользователей ПО, избавляя их от проблем несовместимости прикладного ПО в виду изменений программных интерфейсов и ядер в новых версиях альтернативных ОС и покупки новых версий ПО соответственно.
Вторым отличием является факт, что сам компонент микроядра выполнен в виде контейнера и состоит из таких компонентов, как компонент планировщика и компонента интерфейсной шины, что позволяет использовать различные реализации внутренних компонент в зависимости от требуемых задач и режимов работы операционной системы. Например, существует возможность включения режима реального-времени или других специфичных реализаций механизма планирования или распределения доступа к ресурсам.
Как представлено на Фиг. 1, заявленная архитектура ОС (100) построена по модели клиент-сервер с использованием технологии АОМК. Все элементы архитектуры ОС включая микроядро (Фиг.2), являются компонентами. Каждый компонент имеет спецификации с описанием интерфейсов, что в свою очередь позволяет любому разработчику реализовывать тот или иной компонент архитектуры самостоятельно согласно спецификации. Архитектура построена на компонентах по модульному принципу, что позволяет включать в ОС только необходимые компоненты (модули) исходя из поставленных задач. За счёт механизмов повторной применяемости компонентов: агрегирование и включение технологии АОМК, микроядро нового поколения может включать в себя микроядра предыдущего поколения (Фиг.3). Использование механизмов повторной применяемости компонентов, справедливо ко всей архитектуре ОС, построенной на компонентах по технологии АОМК.
При этом набор АОМК состоит из компонентов ниже приведенной группы, причем может быть более одного экземпляра компоненты для любого из типов:
• компонента управления (101), который выполнен с возможностью обеспечивать доступ и управление ресурсами компьютерной системы;
• компонента представления (102), который отвечает за пользовательский интерфейс;
• прикладного компонента (103), который выполнен с возможностью реализации алгоритма решения задач операционной системы;
• компонента микроядра (104), выполненного в виде контейнера, внутри которого расположены:
a. компонента планировщика, который выполнен с возможностью задания и запуска задач;
b. компонента интерфейсной шины, который выполнен с возможностью загрузки и регистрации дополнительных компонентов в операционной системе.
При этом в заголовок каждого компонента включена таблица интерфейсов, которая содержит: указатель на системный интерфейс для доступа к интерфейсам импортируемых компонентов и их функций, и указатель на интерфейс фабрики компонентов для регистрации компонентов в интерфейсной шине и доступа к интерфейсам самих компонент. Модульный принцип выполнен с возможностью одновременной работы микроядер нескольких поколений в одном экземпляре операционной системы, каждое новое поколение микроядра в зависимости от аппаратных возможностей включает или агрегирует предыдущее поколение микроядра. Что дает возможность поддержки поколений микроядр при техническом развитии микропроцессорной архитектуры, что обеспечивает поддержку работоспособности программ, написанных для первого поколения микроядра на последующих поколениях микроядр ОС.
На Фиг. 4 показан процесс загрузки компонентов микроядра.
Загрузчик системы - является частью системы, напрямую зависящей от аппаратной части.
В самой минимальной конфигурации, загрузчик выполняет загрузку микроядра системы и «стартового приложения».
Опционально загрузчик может загружать такие компоненты как:
- Менеджер памяти;
- Менеджер устройств;
- Файловый менеджер;
- Специализированные компоненты.
Загрузчик, загрузив микроядро в память, в зависимости от сценария компоновки регистрирует загружаемые компоненты системы в интерфейсной шине, такие как менеджера памяти, менеджер устройств, файловый менеджер, специализированный компонент. Далее загрузчик загружает «Стартовое приложение», контекст задачи которого сохраняется в планировщике и передает управление ему. На этом процесс запуска ОС считается завершенным. Далее стартовое приложение может создавать и управлять задачами.
В зависимости от типа задач, «Стартовое приложение» может быть самостоятельной единицей исполнения или выполнять роль оболочки ОС для порождения процессов.
Ниже приведены этапы загрузки минимальной конфигурации ОС:
- При включении компьютера запускается базовая процедура загрузки программного обеспечения выполняющая поиск и считывание загрузочного сектора, после чего процедура передает управление программе из загрузочного сектора.
- В зависимости от типа файловой системы, программа, располагаемая в загрузочном секторе, загружает основной загрузчик ОС, располагаемый на файловой системе в свободный участок памяти и передает управление загрузчику.
- Загрузчик ОС является программой, которая реализует сценарии загрузки ОС в зависимости от состава компонентов для первичного запуска Стартового приложения. Одним из вариантов реализации сценария загрузки ОС - это использование интерактивного меню с выбором компонентов находящихся на файловой системе.
- Первым шагом Загрузчик ОС загружает компонент микроядра. Загрузчик в зависимости от сценария, может загрузить компонент в любой свободный участок памяти и проинициализировать (подготовить к работе) его через интерфейсы, описанные в спецификации к компоненту микроядра, такие как размер стека, область памяти и т,п.
- Вторым шагом Загрузчик ОС загружает компонент планировщика. Загрузчик в зависимости от сценария, может загрузить компонент планировщика в любой свободный участок памяти.
- Третьим шагом Загрузчик ОС загружает компонент интерфейсной шины. Загрузчик в зависимости от сценария, может загрузить компонент интерфейсной шины в любой свободный участок памяти.
- После успешной загрузки компонентов микроядра, таких как планировщик и интерфейсная шина. Загрузчик инициализирует компоненты планировщика и интерфейсной шины в микроядре вызвав метод инициализации интерфейса микроядра передав в качестве параметров указатели на интерфейсы компонентов планировщика и интерфейсной шины.
При этом, следует отметить, что так как сам компонент микроядра, а также компоненты планировщика и интерфейсной шины имеют интерфейсы, описанные согласно спецификации, то таким образом любой разработчик может сделать собственную реализацию согласно спецификации, будь то компонент микроядра, планировщика или интерфейсной шины. Как пример: независимый разработчик разработал планировщик, в котором время, затрачиваемое на переключение процессов уменьшено на несколько тактов процессорного времени, но при этом компонент имеет те же интерфейсы, которые описаны в спецификации. Тем самым в сценарии загрузки ОС, можно указать загрузку компонента планировщика от независимого разработчика.
- Следующим шагом в сценарии загрузки ОС, является загрузка и регистрация в интерфейсной шине вспомогательных компонентов, от которых зависит запуск стартового приложения. Данный шаг не обязательный и зависит от используемых стартовым приложением компонентов. В качестве примера загрузки вспомогательных компонентов, приводится один из наиболее востребованных - компонент управления памятью. Загрузчик в зависимости от сценария, может загрузить компонент управления памятью в любой свободный участок памяти.
- После успешной загрузки вспомогательного компонента, Загрузчик ОС вызывает метод регистрации интерфейса компоненты интерфейсной шины для регистрации компонента в системе.
При этом, следует отметить, что в большинстве операционных систем управление памятью является неотъемлемой частью операционной системы. Особенностью заявленной архитектуры ОС, является то, что управление памятью является опциональной задачей, так как существуют различные методы распределения памяти: - без использования внешней памяти (фиксированными разделами, динамическими разделами, перемещаемыми разделами) и с использованием внешней памяти (страничное распределение, сегментное распределение, сегментно-страничное распределении). Исходя из этого, спецификация компонента управления памятью описывает требования к интерфейсам, но не регламентирует методы распределения памяти. Благодаря этому разработчики компонентов управления памятью могут использовать наиболее эффективный с их точки зрения метод управления памятью. В заявленной архитектуре ОС важным являются неизменяемые интерфейсы (входные и выходные параметры), строгая реализация согласно спецификации.
Через компонент интерфейсная шина запрашиваются интерфейсы компонентов, расположенных в памяти или в файловой системе.
Загрузчик, загрузив микроядро в память, в зависимости от сценария компоновки регистрирует загружаемые компоненты системы в интерфейсной шине, такие как компоненты менеджера памяти, менеджер устройств, файловый менеджер и т.п.
При этом, следует отметить, что компонент интерфейсная шина содержит в своем реестре информацию только о компонентах, расположенных в памяти. Объем реестра для регистрации компонентов имеет ограниченный размер. Для расширения объема реестра интерфейсной шины, необходимо загрузить менеджер памяти, что выполняется загрузчиком при загрузке микроядра и регистрации в реестре интерфейсной шины. Компоненты, расположенные на файловой системе, загружаются через файловый менеджер. В случае использования компонентов, расположенных на файловой системе, загрузчик должен загрузить файловый менеджер в память системы и зарегистрировать его в реестре интерфейсной шины.
Что касается компонента планировщика, то он также имеет интерфейсы, описанные согласно спецификации, что позволяет создавать набор планировщиков (с разными алгоритмами планирования) с теми или иными характеристиками под те или иные задачи.
Как пример, планировщик может быть реализован с самым простейшим планированием выполнение задач используя алгоритм квантования времени. Каждой задаче предоставляется квант времени процессора. Когда квант заканчивается задача переводится планировщиком в конец очереди (как представлено на фигуре 6).
Ниже описан формат исполняемого файла ОС.
Общий формат исполняемого файла представлен на фигуре 7. Заголовок содержит общую информацию о файле и его основные характеристики. Таблица интерфейсов содержит указатели адресов IEcoUnknown интерфейсов. Основным указателем (ссылкой) является указатель на системный интерфейс (IEcoSystem1), через данный интерфейс процесс получает доступ к интерфейсам импортируемых компонентов и их методов (функций). Вторым немаловажным указателем в таблице интерфейсов, является указатель на интерфейс фабрики компонентов (IEcoComponentFactory), с помощью данного интерфейса система выполняет регистрацию компонентов в интерфейсной шине и создает экземпляры данных. За таблицей интерфейсов следуют специфичные заголовки для операционной системы, блоки (сегменты) кода и данных.
Спецификой (различием) формата является отсутствие таблиц импорта и экспорта функций, что в значительной форме уменьшает объем заголовочной части исполняемого файла. Так как идет постоянное развитие, усовершенствование и добавление новых возможностей, то оболочка (shell) ОС микроядра загружая процесс, создает экземпляр системного интерфейса последней версии на той или иной ступени развития.
А так как, таблица интерфейсов содержит указатели адресов IEcoUnknown интерфейса, то конкретно для системного интерфейса оболочка ОС записывает адрес указателя, к примеру, IEcoSystem4 системного интерфейса 4-ой версии.
Исполняемый процесс (будь то старой версии или последней версии, имеется ввиду разработанный под первую версию ядра, использующего системный интерфейс IEcoSystem1 или разработанный под последнюю версию ядра использующего системный интерфейс IEcoSystem4) используя метод QueryInterface интерфейса IEcoUnknown, запрашивает ту версию системного интерфейса, с которым он может работать. Соответственно для первого случая, системный интерфейс IEcoSystem4 создаст экземпляр системного интерфейса IEcoSystem1 и вернет соответствующий указатель, а для второго случая IEcoUnknown вернет указатель сам на себя, так как адрес интерфейса IEcoUnknown совпадает с адресом IEcoSystem4.
Таким образом достигается поддержка работоспособности программ, разработанных на ранней стадии в последних версиях ОС на бинарном уровне, т.е. не требующей перекомпиляции.
Для сравнения, простая программа «Hello World!» написанная под ОС RedHat ядра версии 2.x использующая функцию printf библиотеки libc, неработоспособна на версии ОС RedaHat ядра 3.x без перекомпиляции, выдаст ошибку: не найдена библиотека libc2.x.
Еще одной уникальной особенностью, при такой схеме взаимодействия является то, что приложение (процесс) разработанное под последнюю версию ОС, может учитывать свои минимальные возможности, и запускаться (исполняться) на ранних версиях ОС. Т.е. процесс (используя метод QueryInterface интерфейса IEcoUnknown) запрашивает системный интерфейс IEcoSystem4, а ему возвращается нулевой указатель, то он может запросить указатель на системный интерфейс ранней версии, к примеру, IEcoSystem3, соответственно ограничив свои возможности. Такого подхода нет ни на одной из известных из уровня техники ОС, на уровне исполняемого файла.
Отсюда преимущество на уровне исполняемого файла:
1) Для импортируемых функций всего один адрес указателя на системный интерфейс;
2) Нет необходимости перекомпиляции ранних версий ПО, под последние версии системных библиотек ОС;
3) Возможность исполнения ПО, разработанного под новые версии системных ОС в ограниченном режиме на старых версиях ОС.
В настоящих материалах заявки было представлено предпочтительное раскрытие осуществление заявленного технического решения, которое не должно использоваться как ограничивающее иные, частные воплощения его реализации, которые не выходят за рамки испрашиваемого объема правовой охраны и являются очевидными для специалистов в соответствующей области техники.

Claims (10)

  1. Архитектура операционной системы, выполненная с возможностью одновременной работы микроядер разных поколений и содержащая:
  2. набор взаимосвязанных между собой компонентов Адаптированной Объектной Модели Компонентов (АОМК), построенных по модульному принципу, при этом набор АОМК состоит из компонентов ниже приведенной группы, причем может быть более одного экземпляра компоненты для любого из типов:
  3. • компонента управления, который выполнен с возможностью обеспечивать доступ и управление ресурсами компьютерной системы;
  4. • компонента представления, который отвечает за пользовательский интерфейс;
  5. • прикладного компонента, который выполнен с возможностью реализации алгоритма решения задач операционной системы;
  6. • компонента микроядра, выполненного в виде контейнера, внутри которого расположены
  7. a) компонент планировщика, который выполнен с возможностью задания и запуска задач;
  8. b) компонент интерфейсной шины, который выполнен с возможностью загрузки и регистрации дополнительных компонентов в операционной системе;
  9. при этом в заголовок каждого компонента включена таблица интерфейсов, которая содержит указатель на системный интерфейс для доступа к интерфейсам импортируемых компонентов и их функций и указатель на интерфейс фабрики компонентов для регистрации компонентов в интерфейсной шине и доступа к интерфейсам самих компонент;
  10. при этом модульный принцип выполнен с возможностью одновременной работы микроядер нескольких поколений в одном экземпляре операционной системы, каждое новое поколение микроядра в зависимости от аппаратных возможностей включает или агрегирует предыдущее поколение микроядра.
RU2019119349A 2019-06-21 2019-06-21 Архитектура операционной системы для обеспечения поддержки поколений микроядер RU2718235C1 (ru)

Priority Applications (3)

Application Number Priority Date Filing Date Title
RU2019119349A RU2718235C1 (ru) 2019-06-21 2019-06-21 Архитектура операционной системы для обеспечения поддержки поколений микроядер
CN202010562047.2A CN112114863A (zh) 2019-06-21 2020-06-18 微内核代支持的操作系统架构
US16/904,594 US11520597B2 (en) 2019-06-21 2020-06-18 Operating system architecture for microkernel generations support

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2019119349A RU2718235C1 (ru) 2019-06-21 2019-06-21 Архитектура операционной системы для обеспечения поддержки поколений микроядер

Publications (1)

Publication Number Publication Date
RU2718235C1 true RU2718235C1 (ru) 2020-03-31

Family

ID=70156344

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2019119349A RU2718235C1 (ru) 2019-06-21 2019-06-21 Архитектура операционной системы для обеспечения поддержки поколений микроядер

Country Status (3)

Country Link
US (1) US11520597B2 (ru)
CN (1) CN112114863A (ru)
RU (1) RU2718235C1 (ru)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075939A (en) * 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
US20060282899A1 (en) * 2005-06-08 2006-12-14 Microsoft Corporation System and method for delivery of a modular operating system
US20080148277A1 (en) * 2006-12-18 2008-06-19 Nokia Corporation Optimizing calls from a managed runtime environment to microkernel extended functionality
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US20100251265A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Operating System Distributed Over Heterogeneous Platforms
RU2618367C1 (ru) * 2016-03-23 2017-05-03 Андрей Сергеевич Моляков Вычислительное устройство программно-аппаратного комплекса

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195710B1 (en) * 1995-06-12 2001-02-27 International Business Machines Corporation Operating system having shared personality neutral resources
US8904375B2 (en) * 2009-09-30 2014-12-02 General Electric Company Systems and methods for providing an embedded service-oriented user interface integration bus

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075939A (en) * 1997-09-27 2000-06-13 Lynx Real-Trime Systems, Inc. Tightly coupled, scalable module based micro-kernel operating system architecture
US20060282899A1 (en) * 2005-06-08 2006-12-14 Microsoft Corporation System and method for delivery of a modular operating system
US20080148277A1 (en) * 2006-12-18 2008-06-19 Nokia Corporation Optimizing calls from a managed runtime environment to microkernel extended functionality
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US20100251265A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Operating System Distributed Over Heterogeneous Platforms
RU2618367C1 (ru) * 2016-03-23 2017-05-03 Андрей Сергеевич Моляков Вычислительное устройство программно-аппаратного комплекса

Also Published As

Publication number Publication date
US11520597B2 (en) 2022-12-06
US20200401415A1 (en) 2020-12-24
CN112114863A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
US5359730A (en) Method of operating a data processing system having a dynamic software update facility
CN108170503B (zh) 一种跨系统运行安卓应用的方法、终端及存储介质
Soules et al. System Support for Online Reconfiguration.
US8914606B2 (en) System and method for soft partitioning a computer system
US7802252B2 (en) Method and apparatus for selecting the architecture level to which a processor appears to conform
US7698700B2 (en) System quiesce for concurrent code updates
US20060248528A1 (en) Systems and methods for hypervisor discovery and utilization
US20060020940A1 (en) Soft-partitioning systems and methods
CN101676874A (zh) 基于策略的监管器配置管理
JP2008510238A (ja) オペレーティングシステム
JP2006018814A (ja) 仮想マシン環境におけるエミュレートされたデバイスの開発のためのシステムおよび方法
CN109597631B (zh) 一种进程的升级方法、装置及电子设备
WO2008113291A1 (fr) Procédé et système pour appeler des fonctions
US11928489B2 (en) Extension application mechanisms through intra-process operation systems
JP2004503866A (ja) モジュラーコンピュータシステムおよび関連方法
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
Hoque et al. Webassembly for edge computing: Potential and challenges
US10552135B1 (en) Reducing a size of an application package
RU2718235C1 (ru) Архитектура операционной системы для обеспечения поддержки поколений микроядер
US20050091022A1 (en) Ultra fast multi-processor system simulation using dedicated virtual machines
Coffing An x86 protected mode virtual machine monitor for the mit exokernel
US20030225929A1 (en) Computer-hardware, life-extension apparatus and method
Ma et al. Delta execution: A preemptive Java thread migration mechanism
JP2006522971A (ja) オペレーティングシステム
Ziarek et al. The fiji multivm architecture