LINUX.ORG.RU
ФорумTalks

Выбросить файловую систему

 ,


0

2

А может даже и интерпретатор команд тоже выбросить.

Файловая система и интерпретатор команд - дебажные инструменты разработчика ОС. Просто их оставили.

Идея ОС, которую не дебажат пользователи:

Без файловой системы можно если добавить аналог виртуальных адресных пространств для дисковой памяти, это легко сделать даже программно. Каждое приложение имеет базу данных или что-то свое на этом пространстве. Книги будут объектами читалки (блобами в БД), а музыка и фильмы - объектами плеера, и т.д. Установленные приложения будут объектами ОС (типа libpng:1.0.0, это похоже на файловую систему, но это не она, просто реестр пакетов).

Для использования внешнего кода (библиотек), программист просто пишет в коде типа:

import libpng:1.0.0;

В своем приложении пишет что-то такое

program myapp:0.0.1;

Еще должна быть какая-то libruntime (которая и есть ядро, но тоже импортится обычным способом). В libruntime есть функция, которая забирает анонимный блоб в памяти (в котором ельф файл) и превращает его в еще один объект ОС (можно будет написать с ее использованием пакетный менеджер и репозиторий).

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

Интерпретатор команд вообще не нужен. Если что-то нужно запустить, программист или статически пишет вышеупомянутый импорт в коде или динамически грузит через libruntime, как so в линуксах.

Если очень нужно скриптовать, никто не отбирает питон и лисп.

Девопс, сисадмин не нужны (соседняя тема). Всё делают программисты.

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

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

Проблемы подхода?



Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от vlad9486

Приложение B получает ссылку на P, ядро при этом отображает область в физической памяти (с содержимым картинки) на пространство приложения B и дает ему ссылку. Если ссылка мутабельная, то отображение с правом записи, иначе только чтение. * Приложение B редактирует картинку на месте, или делает новую.

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

SharePictures

ShareSound

ShareDocs

ShareSomething

...

ShareFile

OH, SHI--

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Ради отсутствия совместного доступа и наличия типизации все это и затевается.

ShareFile

это же void*, вот против этого и было мое возмущения.

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

vlad9486
() автор топика
Ответ на: комментарий от Miguel

Он превращает файлы в репозиторий, который имеет интерфейс совсем не такой как интерфейс файлов. Если сравнивать с программой на си, то файлы - это аналог void*, у которого интерфейс, грубо говоря, читать, писать, копировать, перемещать, удалять. А репозиторий это Foo*, у которого интерфейс add, reset, commit, checkout, и т.д. И это почти полностью перекрывает потребность в «копировать, перемещать, удалять». То есть фундаментальные операции ФС обернутые, а наружу выставлены совсем другие.

vlad9486
() автор топика

ФС предоставляет абстракции, которые все равно приходится обертывать и выставлять другие абстракции наружу. Причем то, что ФС предоставляет не помогает строить другие абстракции. БД (и другие приложения) может выделять анонимные участки на диске и работать с ссылками на дисковую память (офсет блока на винчестере). Нам же не нужна файловая система на оперативной памяти. Вот ток же и с дисковой. Когда-то файловая система была нужна для отладки и понимания что происходит, сейчас - нет.

vlad9486
() автор топика

Проблемы подхода?

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

slovazap ★★★★★
()
Ответ на: комментарий от hungry_ewok

Это не там ли был подход, всё - через базу данных?

WatchCat ★★★★★
()
Ответ на: комментарий от vlad9486

Вот только он не «превращает» файлы в репозиторий. Файлы — они файлы и есть, репозиторий лежит отдельно.

Miguel ★★★★★
()

Многие ide, docker, git прячут файлы от пользователя

Файлы на руках, их можно взять в любой момент.

Вопрос №1. Один и тот же файл можно обработать по разному. Хоть в архиваторе запаковать, хоть (если это скрипт) запустить, хоть архивировать, хоть редактировать. Как это реализовать?

Вопрос №2. Браузер удалили. Загрузки тоже пропали? Или остались болтаться? Тогда это и есть файлы

NextGenenration ★★
()
Ответ на: комментарий от vlad9486

Нам же не нужна файловая система на оперативной памяти

Как раз есть виртуальная память в ОС решающая похожие задачи.

qula
()
Ответ на: комментарий от NextGenenration

Файлы на руках, их можно взять в любой момент.

Но интерфейс ide, docker, git этого не требует.

git хранит метаданные в директории .git много раз приходилось писать там или читать файлы? Мне ни разу. Это и я и имел ввиду, когда писал что прячет файлы.

Вопрос №1.

Решает приложение владеющие данными. То, что можно делать на любых данных (шифрование, сжатие), имхо, должно быть в базе данных, и приложение будет пользоваться если нужно.

Вопрос №2.

Загрузки не нужны. Есть стор.

vlad9486
() автор топика
Ответ на: комментарий от Deleted

Смузи - это очень вкусно и полезно. И разнообразие огромное.

dk-
()
Ответ на: комментарий от Legioner

А это будущее. Как ибм допилят память.

dk-
()
Ответ на: комментарий от vlad9486

git хранит метаданные в директории .git много раз приходилось писать там или читать файлы?

Всё зависит от обстоятельств. Сегодня не нужно, завтра вполне может понадобится. По крайней мере залезть в папку ide уже было нужно. Если бы занимался докерами, то опять же бы залезал в файловую систему из хоста. Если делать что-то на базе гита, то вполне можно полазить по его файлам, благо есть материал как это делать, объясняющий на пальцах.

Решает приложение владеющие данными. То, что можно делать на любых данных (шифрование, сжатие), имхо, должно быть в базе данных, и приложение будет пользоваться если нужно.

А что можно делать с любыми данными? Если завтра изобретут что-то новое, то всё, никак в твоём варианте?

Загрузки не нужны. Есть стор.

Спасибо, но drm устройств предостаточно. Все кто хотел уже купил себе. Ты опоздал

NextGenenration ★★
()
Ответ на: комментарий от dk-

Когда как. Если нет своего облака/недостаточная скорость сети/...

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

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

Я не об этом. Сами image'ы и layer'ы спрятаны. Можно делать save/load, но не нужно. Все делается через ресты демону, который инкапсулирует работу с файлами.

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

Если делать что-то на базе гита, то нужно заимпортить код git'а и использовать его абстракции. Лучше всего поредактировать его код, добавив приватное апи через remote function call. Уже используя это апи писать свое «что-то».

А что можно делать с любыми данными? Если завтра изобретут что-то новое, то всё, никак в твоём варианте?

Приложение решает. Изобретут что то новое, это и означает что напишут приложение, которое будет что-то делать, файлы здесь ни при чем.

drm

Вообще не важно есть ли drm. Можно и пиратский стор сделать.

vlad9486
() автор топика
Ответ на: комментарий от vlad9486

Я не об этом. Сами image'ы и layer'ы спрятаны. Можно делать save/load, но не нужно. Все делается через ресты демону, который инкапсулирует работу с файлами.

Емнип lxc на хосте создаёт не файл с файловой системой, а просто директорию которая становится корнем

Если делать что-то на базе гита, то нужно заимпортить код git'а и использовать его абстракции. Лучше всего поредактировать его код, добавив приватное апи через remote function call. Уже используя это апи писать свое «что-то».

Совершенно не обязательно. Вдруг я не желаю писать на си? Вдруг мне проще навелосипедить чем разбираться в коде гита?

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

То есть ide выпущенное неделю назад не сможет работать с тем что выпущено сегодня?

Вообще не важно есть ли drm. Можно и пиратский стор сделать.

Как только к тебе придут правообладатели стор придётся удалять. Удалишь стор - удалишь и всё скачанное.

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Совершенно не обязательно. Вдруг я не желаю писать на си? Вдруг мне проще навелосипедить чем разбираться в коде гита?

Что бы работать с файлами в директории .git нужно знать git-специфичные вещи. Что бы работать с кодом на си, надо знать си.

То есть ide выпущенное неделю назад не сможет работать с тем что выпущено сегодня?

Ломать обратную совместимость можно имея или не имея файловую систему. Вообще никак не связанно с сабжем.

Как только к тебе придут правообладатели стор придётся удалять. Удалишь стор - удалишь и всё скачанное.

Ну ок. Только drm все равно не важен.

vlad9486
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.