В проекте ОС предлагается опираться на «плоскую» память — это снижает необходимость в изоляции между процессами приложений, модулями ядра и самим ядром.
Существует принципиальная возможность создания ОС на концепции микроядра.
Межпроцессный обмен становится «дешёвым» – накладные расходы на микроядерную организацию системы удешевляются до приемлемого уровня и могут оказаться значительно ниже, чем с полноценной защитой процессов и ядра.
При разработке системы для повышения её качества и закладывания перспективных методов поддержания целостности блокируются возможности прямого запуска машинного кода и непосредственного доступа к памяти. также являются недоступными все аппаратные возможности ,которые дают возможность обратиться непосредственно к аппаратуре.
В ОС кроме системного компилятора – должен быть реализован системный интерпретатор, обеспечивающий анализ безопасности вызовов. И по мере подтверждения безопасности исходного кода (байт-кода, AST-дерева) интерпретатор может по частям компилировать программу непосредственно в машинный вид и кэшировать результаты своей работы в системном безопасном хранилище. Целостность машинного кода подтверждается двумя контрольными суммами с независимыми алгоритмами (по аналогии с защитой памяти). Контрольные суммы также должны храниться в защищенной части системы (в обоих случаях контрольных сумм).
Для многопоточного исполнения программ система предлагает использование системные таймеры с достаточным числом прерываний в секунду. Это позволит параллельно исполнять операционные, мультимедийные, дисковые, сетевые и т. п. операции. Простое управление процессами позволяет точно регулировать кванты времени на каждый процесс, эффективно регулировать уровень приоритета процесса.
Базовый интерфейс работы ОС – диалоговый терминал. Терминал позволяет осуществлять вход в систему, блокировать доступ при бездействии, запускать фоновые процессы и процессы пользователя. При необходимости ОС предоставляет графический экран высокого разрешения в виде буфера FrameBuffer. Графическим экраном может только ядро ОС. У каждого графического приложения может один и более буферов вывода. Что имнно и в каком порядке отображать во FrameBuffer будет решать ядро ОС.
Все остальные процессы, в случае необходимости должны отправлять сигналы владельцу экрана для отображения своих фреймов средствами владеющего процесса (возможность реализации X-Server на Unix). Доступ к параметрам системы, портам, файлам, состоянию процессов следует организовать в стиле Юникс — «всё есть файл». Эта концепция вполне зарекомендовала себя удобной, единообразной, понятной и легкой к реализации.
Установка параметров должна осуществляться методом записи необходимого значения в соответствующий файл параметров. Поддержка файловой системы является важной составляющей частью ОС. Первоочередная реализация RamFS/FAT32/ExtFAT, как наиболее массовые и простые к реализации, с расширением до ext4. Методы поддержания целостности файловой системы следует реализовать на уровне модуля ядра в виде фонового потока; вплоть до журналирования. Для разработки ОС и для приложений в самой ОС, следует избегать языков программирования, которые позволяют непосредственно обращаться к аппаратуре (такие как Си, С++, asm) или обеспечить им безопасную «песочницу» среды исполнения, такую как WASM. Применение таких языков как:Oberon, JavaScript, Python и т.п. обеспечивают высокую изоляцию от аппаратуры и при этом такие компактные языки, как Oberon-7, Modula-2 (в меньшей степени Modula-3) позволяют полностью контролировать высокоуровневые абстракции с заданной надежностью программы. В перспективе, прикладное ПО для потребителей следует разрабатывать с помощью достаточного размера стандартной библиотеки. Она должна обеспечивать дисковый, сетевой ввод/вывод (с точки зрения прикладного программиста – просто запись/чтение из файла), графические компоненты, удобный АПИ ядра, абстракцию файловых систем для выполнения запросов и получения ответов.
— p78su 2023-10-25 10:27:29