极客时间-操作系统实战45讲的代码
Курс уже обновлён!
В процессе изучения вы также можете обратить внимание на наш открытый проект Cosmos.
Cosmos — это компьютерная инфраструктура, основанная на операционной системе и RISC-V SOC процессоре. Проект Cosmos был вдохновлён работой OSDI'18 LegoOS и направлен на отказ от устаревших аппаратных и программных решений в пользу современных инженерных подходов. Это позволяет сделать операционную систему и чип более модульными, слабосвязанными и легко расширяемыми. Cosmos состоит из двух частей: операционной системы Cosmos OS и чипа Cosmos SOC.
Операционная система Cosmos OS основана на новой архитектуре «Ψ(Psi)».
LMOS, разработчик проекта Intel 傲腾, автор книги «Глубокое исследование встроенных операционных систем: от нуля до проектирования, архитектуры и разработки». Долго изучал операционные системы, знаком с Linux, BSD, SunOS и другими открытыми ядрами операционных систем, а также имеет некоторые исследования по Windows NT.
Ранее самостоятельно разработал две новые операционные системы: LMOS и LMOSEM. LMOS — это многозадачная, многопроцессорная операционная система с поддержкой виртуальной памяти для 64-битной архитектуры x86_64, с кодом более 100 000 строк. LMOSEM (на основе ARM) — это новая попытка встроенной операционной системы с новой архитектурой и новым кодом.
Проект Cosmos объединяет аппаратное и программное обеспечение, чтобы создать новую основу для нового чипа.
Архитектура «Ψ(Psi)» в Cosmos отличается от традиционных архитектур операционных систем. Можно сказать, что архитектура «Ψ(Psi)» в Cosmos сочетает преимущества высокопроизводительных традиционных операционных систем с отказом от высокой степени интеграции и сцепления, низкой безопасности, сложности расширения и каскадных эффектов традиционных ядер операционных систем.
Как отказаться от недостатков традиционных операционных систем? Ответ заключается в том, чтобы уменьшить объём кода ядра Cosmos до примерно 30 000 строк, что снижает сложность проекта и позволяет проверить правильность каждой строки кода. Однако у традиционных операционных систем есть одно большое преимущество — производительность, которая является результатом высокой интеграции и сцепления модулей кода, а также результатом совместной оптимизации производителями процессоров и операционными системами в существующей экосистеме.
Архитектура «Ψ(Ψ)» в Cosmos в целом разделена на два уровня:
Можно заметить, что различные драйверы и системные службы в Cosmos стали пользовательскими сервисными процессами, что значительно снижает сцепление и позволяет этим процессам аварийно завершаться или заменяться без серьёзных последствий для системы. Но не приводит ли это к снижению производительности? В традиционных операционных системах драйверы и системные сервисы являются частью ядра, что обеспечивает высокую производительность, но также создаёт потенциальные угрозы безопасности. Архитектура «Ψ(Psi)» в Cosmos разработана таким образом, чтобы избежать этих проблем, сохраняя при этом высокую производительность.
Архитектура «Ψ(Psi)» в Cosmos обеспечивает высокую производительность по двум направлениям:
Ядро архитектуры «Ψ(Psi)» предоставляет услуги с максимальной интенсивностью использования приложений.
Процессы: это абстракция выполнения приложений, наиболее прямое представление ресурсов процессора, необходимое для запуска приложения.
Объекты: приложения должны взаимодействовать, синхронизироваться и получать доступ к различным системным ресурсам, что обеспечивается менеджером объектов, который также напрямую предоставляется ядром Cosmos.
Память: для работы приложениям требуется доступ к адресному пространству памяти, которое предоставляется менеджером памяти в ядре Cosmos.
Аппаратный IPC.
Новая архитектура процессора обеспечивает аппаратную связь IPC, избегая потери производительности, связанной с взаимодействием между системными службами и драйверами через IPC во время выполнения.
Для взаимодействия с ядром или другими приложениями приложение должно создавать соответствующие объекты. Объект состоит из дескриптора объекта и сущности объекта, и дескриптор объекта может получить доступ к соответствующему объекту. Уровень объекта поддерживает создание и доступ к различным типам объектов, таким как безопасные объекты, объекты процессов, объекты памяти и объекты IPC-связи, каждый из которых имеет свои уникальные функции.
Этот модуль предоставляет все интерфейсы, связанные с объектами, такие как создание, удаление, открытие, закрытие, чтение, запись и связь, обеспечивая соответствующие услуги для компонентов верхнего уровня и ядра.
Это тип объекта, используемый для связи между приложениями и между приложениями и ядром. Связь может быть синхронной, когда приложение ожидает завершения операции, или асинхронной, когда приложение не входит в состояние ожидания, но получает уведомление о завершении асинхронной связи.
Безопасные объекты — это специальные объекты, используемые приложениями для доступа к ресурсам других процессов или ядра, включая доступ к регистрам устройств, доступ к общей памяти и синхронизацию.
Эти объекты определяются приложениями и используются для обмена данными. Ядро только создаёт эти объекты, а их функции определяются приложениями.
Объекты памяти представляют собой блоки адресного пространства памяти, созданные ядром. При выделении памяти приложением создаются объекты памяти.
Существует два типа объектов: процессы и потоки. Ядро или приложение создают эти объекты для создания процесса или потока. Процесс — это контейнер ресурсов для приложения, а поток — это исполняемый поток приложения. Один процесс может содержать несколько потоков.
Отвечает за создание, удаление, поиск, изменение и организацию различных объектов.
Чтобы приложение работало в системе Cosmos, ему необходим соответствующий процесс и поток. Процесс служит контейнером ресурсов, таких как процессорное время, память, сеть и другие ресурсы, и является основным механизмом ядра с точки зрения ядра. С точки зрения пользователя, это наиболее часто используемая услуга операционной системы, поскольку пользователи постоянно запускают и закрывают приложения. Поэтому мы не выделяем эту ключевую услугу отдельно от ядра, а делаем её основной функцией ядра, обеспечивая максимальную производительность.
Предоставляет полный набор услуг интерфейса для создания, удаления, настройки и запроса состояния данных процесса и потока, доступных для использования ядром и приложениями. Только компоненты ядра и приложения могут использовать интерфейсы, раскрытые здесь.
Основная задача — управление процессами и потоками, такими как представление процессов и потоков, поиск и организация процессов и потоков. Например, для представления процесса или потока необходимо разработать соответствующую структуру данных, а для организации процессов и потоков необходимо разработать таблицы процессов.
Основное внимание уделяется синхронизации между процессами и потоками, включая различные блокировки, мьютексы и семафоры, которые управляют выполнением, ожиданием и пробуждением процессов и потоков для обеспечения синхронизации.
Основной задачей является обеспечение связи между процессами и потоками через механизмы IPC, такие как очереди сообщений, общие области памяти и т. д., позволяя процессам и потокам обмениваться данными и информацией.
Включает создание и удаление процессов и потоков.
Процессы и потоки используют различные системные ресурсы во время работы, такие как виртуальное адресное пространство и физическая память, файлы, данные и различные типы объектов. Эти ресурсы должны управляться эффективно, включая запросы, освобождение, поиск и другие операции. Управление ресурсами процессов и потоков отвечает за это.
Система Cosmos является многопроцессной и многопоточной операционной системой с поддержкой многоядерных процессоров и распределённых вычислений. Необходимо реализовать планирование процессов и потоков в различных сценариях, включая планирование между процессорами, планирование между узлами и планирование в соответствии с различными алгоритмами планирования, подходящими для различных сценариев приложений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )