А может даже и интерпретатор команд тоже выбросить.
Файловая система и интерпретатор команд - дебажные инструменты разработчика ОС. Просто их оставили.
Идея ОС, которую не дебажат пользователи:
Без файловой системы можно если добавить аналог виртуальных адресных пространств для дисковой памяти, это легко сделать даже программно. Каждое приложение имеет базу данных или что-то свое на этом пространстве. Книги будут объектами читалки (блобами в БД), а музыка и фильмы - объектами плеера, и т.д. Установленные приложения будут объектами ОС (типа libpng:1.0.0, это похоже на файловую систему, но это не она, просто реестр пакетов).
Для использования внешнего кода (библиотек), программист просто пишет в коде типа:
import libpng:1.0.0;
В своем приложении пишет что-то такое
program myapp:0.0.1;
Еще должна быть какая-то libruntime (которая и есть ядро, но тоже импортится обычным способом). В libruntime есть функция, которая забирает анонимный блоб в памяти (в котором ельф файл) и превращает его в еще один объект ОС (можно будет написать с ее использованием пакетный менеджер и репозиторий).
Это и есть интерфейс ОС. На макросах целевого ЯП эти импорты и заглавие разворачиваются в глобальные переменные, которые лежат в бинарнике, их может прочитать загрузчик (ядро) и знать что сделать что бы заработало (пропатчить джампы в коде, что бы джампали куда нужно).
Интерпретатор команд вообще не нужен. Если что-то нужно запустить, программист или статически пишет вышеупомянутый импорт в коде или динамически грузит через libruntime, как so в линуксах.
Если очень нужно скриптовать, никто не отбирает питон и лисп.
Девопс, сисадмин не нужны (соседняя тема). Всё делают программисты.
Все уходят от файлов. Многие ide, docker, git прячут файлы от пользователя. Потому что это изначально отладочная абстракция, от которой больше вреда.
На расте уже есть и вот-вот будут стабилизированы процедурные макросы. С их помощью можно написать вышеупомянутые макросы, в бинарь записать информацию о типах данных, а ядро будет их чекать.
Проблемы подхода?