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)

Очередной хоронильщик файлов. Можешь ещё Фантом ОС загуглить, там хоть без полумер, хаха.

legolegs ★★★★★
()

и как ты планируешь обрабатывать свои блобы пакетно или передавая их через пайп? Под каждый чих писать отдельное ПО?

Файл - наиболее эффективная и универсальная абстракция, как показывает опыт.

Avial ★★★★★
()

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

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

Нету объединения RAM и диска в моем предложении.

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

Больше не добавляй оффтопные теги.

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

обрабатывать

Что конкретно делать? Почти во всех языках программирования есть цикл или итераторы, их применяют для пакетной обработки чего бы то ни было.

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

Опять файлы хоронят. А вот есть у меня музыка, несколько текстов и фоточки, я хочу скинуть их на microSD карточку и передать другу. Геморрой будет сразу.

cvs-255 ★★★★★
()

Легаси в хату, посоны! Дамп в радость, дебаг в сладость!

Скачанный из интернетов репчик.mp3 с обложкой.jpg куда класть будешь? В плеер? А если тебе потом музло на рингтоны порезать надо, а к обложке ватермарку пририсовать?
А логи куда класть? А если система упадёт как их читать?

Deleted
()

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

В ipad-е нет понятия файла - жутко не удобно.

оракл может хранить tb без файлухи тоже жутко не удобно при миграциях.

Так что пусть останется. Остальное не читал.

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

Не скачанный из интернетов, а купленный в сторе. Никуда не надо класть, альбом - это объект стора, в нем уже обложка, теги, музыка. Плеер может попросить его у стора. Резалка может обратится к плееру (или стору) и попросить альбом.

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

Опять файлы хоронят. А вот есть у меня музыка, несколько текстов и фоточки, я хочу скинуть их на microSD карточку и передать другу. Геморрой будет сразу.

Сделай экспорт и передавай.

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

В ipad-е нет понятия файла - жутко не удобно.

С чего это вдруг нет? iOS это обычная BSD с криво прикрученным скотчем гуём. Там обычные файлы. То, что тебе кук не даёт доступ к консоли, файлы никуда не девает.

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

Ну я правильно понимаю, что сохранение и восстановление приложений из файла состояния разрабов заставляют уже делать?

И память напаенная, и «своп» у них работает совершенно особым образом учитываясь в оперативке (там даже параметра swapiness нет)

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

альбом - это объект стора, в нем уже обложка, теги, музыка

Поздравляю, ты изобрел iOS.

Резалка может обратится к плееру (или стору) и попросить альбом.

Почему именно к стору? А если на машине установлено несколько разных сторов? А если я хочу взять музыку с CD? С резервной копии компакт-диска на винте? А если стор предоставляет доступ к альбому целиком, но не к отдельным песням?

То, что ты описываешь, уже сто раз было реализовано на разных уровнях. Импорт пакетов - это как минимум jar-ы и classpath. Передача данных из одного приложения в другое - это Android intend и всякие там OLE/COM. Локальная БД приложения - это что-то из iOS, WP и J2ME. В чем минусы такого подхода - предлагаю почитать историю применения подобных средств.

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

Ну зачем городить еще один велосипед, притом еще и через одно место? Когда есть стабильные вещи и работают они неплохо. У нас уже пытались сделать велосипеды - Wayland, Systemd, PulseAudio. Не сказал бы, что вышло шибко лучше того, что было. Wayland до сих пор поддерживает два с половиной WM, уж про запуск полноценный на той же NVIDIA я молчу.. Systemd ненужное **рьмо, которое даже распараллелить нормально запуск не может. У меня runit быстрее запускает ОС, чем systemd. И IO тут не причем, ибо у меня SSD от самсы. Ну, с Pulse еще не все настолько плохо. Это все раз. Два - как это будет все организовано в рамках хранения на диске? Ты уверен, что по сути это не будет та же самая ФС, просто скрытая в ядре без доступа к ней userspace? Ну, даже если ты что-то и изобретешь новое, ты уверен, что по IO она не будет жутко медленнее уже существующих решений?

crarkie
()

Еретик! На костёр!

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

Ну я правильно понимаю, что сохранение и восстановление приложений из файла состояния разрабов заставляют уже делать?

Не слышал про такое. Мало какие приложения такое делают по-моему.

И память напаенная, и «своп» у них работает совершенно особым образом учитываясь в оперативке (там даже параметра swapiness нет)

А он там вообще есть, своп-то?

Legioner ★★★★★
()

В os/400 так уже пробовали. Лет эдак тцать назад. Потом таки построили поверх этих обьектов файловую систему, а операторы до сих пор кушают кактус.

pon4ik ★★★★★
()

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

Это почти нигде не надо, а где надо — делается менеджерами коллекций поверх фаловой системы.

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

Ну да. Или органайзер для фоточек (тысячи их) какой-нибудь.

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

Мало какие приложения такое делают по-моему.

да почти все. Пооткрывай всякие твои любимые Sublime Text'ы и прочие свистелки, а потом ребутни мак из главного меню. После ребута все приложения перезапустятся ровно так же как было, откроют ровно те же окна в тех же координатах, внутри будут загружены те же документы. Помойму, если приложение не реализует эту фичу, то Эпл начиная с OSX Lion может выдать разработчику звиздюлей и не выкатить в аппстор, и такое приложение не точно не может попасть в топ аппстора

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

А он там вообще есть, своп-то?

да, и раньше отсутствие swapiness было проблемой (там даже чтобы увеличить его - надо пердолиться в консоли), но теперь вся новая техника с SSD и вроде норм

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)

На палме такое было. Загугли, жутко неудобно.

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

Ну а если разработчики поленились сделать такую функцию

cvs-255 ★★★★★
()
Ответ на: комментарий от Deleted

Скачанный из интернетов репчик.mp3 с обложкой.jpg куда класть будешь?

обложки и текст уже давно и надежно всраты в id теги последних версий мрз файликов.

n_play
()

Каждое приложение имеет базу данных или что-то свое на этом пространстве.

Твоё приложение записало что-то на диск. Я хочу, чтобы моё приложение это что-то прочитало или модифицировало. Как быть?

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

А как быть пользователю? Программист никогда не сможет захардкодить все варианты запуска команды find. Или ffmpeg...

Всё делают программисты.

Все уходят от файлов. Многие ide, docker, git

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

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

Здесь список проблем будет длиннее, чем плюсов. Потому как плюс такого подхода только один - ни один наркоман это не реализовал.

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

Т.е. сосед, записав как мы красиво пели в прошлую субботу, передать мне это на флешке не сможет?

shell-script ★★★★★
()

Каждое приложение имеет базу данных или что-то свое на этом пространстве.

ФС - это и есть одна из разновидностей БД, по сути.

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

То, что тебе кук не даёт доступ к консоли, файлы никуда не девает.

Какая разница чего там внутри. Файлов в аппле продуктах для айпадах то нету по факту, то что они физически есть, ни чего не меняет.

vtVitus ★★★★★
()

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

Всех проблем не рассмотришь, пока не начнешь реализовывать, а когда начнешь реализовывать, выяснится что твой подход - ненужная обертка на ФС, и что командный интерпретатор удобен и нужен.

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

Я хочу, чтобы моё приложение это что-то прочитало или модифицировало. Как быть?

Осознать свою неправоту, отказаться от mutable shared state и перейти на обмен сообщениями. Приложения будут меньше глючить, а юзеры будут счастливее. Это и так все понимают, но продолжают наступать на грабли.

Программист никогда не сможет захардкодить все варианты запуска команды find

Эту программу будет запускать другая программа для своих задач. Даже если юзер запускает, юзер все равно взаимодействует с человеческим интерфейсом, который - еще одна программа.

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

Есть очень важные отличия: ФС одна для всех. Для каждого приложения своя директория и стандартная библиотека для взаимодействия с ней. Как в iOS. Это тоже подходит под мое описание. Но все равно в iOS обычно используют базу данных вместо файлов, когда возможно, потому что так удобнее.

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

ФС одна для всех.

Ты имеешь ввиду одну реализацию или одно «общее пространство»? «Общее пространство» как минимум в линуксе можно убрать и отдавать каждому приложению свой кусок ФС так, чтобы оно не видело больше ничего.

Deleted
()

Иди PalmOS пользуй, если так хочется файловую систему похоронить. Ой... а система-то мертва...

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

Ты забыл ещё про формат сжатия напомнить и необходимость понимания технических деталей, которые никогда не уйдут никуда.

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

и перейти на обмен сообщениями

Что мне даст обмен сообщениями? Вот создало твоё приложение некий объект. Картинку, например. А я хочу перевернуть эту картинку вверх ногами, сделать чёрно-белой и поверх наложить произвольный текст. И если твоё приложение этого не умеет делать, сколько сообщений я ему не пришлю, оно это не сделает. С твоей схемой единственный вариант, это заставить твоё приложение отправить объект мне, я его обработаю и отправлю ему назад. В итоге вместо одного файла на ФС, у нас будет n объектов в пространстве n приложений. Причём кто будет заниматься синхронизацией всего этого и следить за целостностью данных - неизвестно.

еще одна программа.

Ага. Т.е. вместо того, чтобы просто запустить одну программу с нужными опциями ты предлагаешь написать 100500 других программ на каждый отдельный случай. Удачи.

alias find_dir_here='find ./ -type d -name'
alias find_dir_root='find / -type d -name'
alias find_dir_home='find ~/ -type d -name'
...
alias find_dir_whatever
shell-script ★★★★★
()
Ответ на: комментарий от vlad9486

И эти самые объекты привязывают данные пользователя вместе с пользователям к конкретной корпорации, так как можно сколько угодно типов объектов понавыдумывать. А файл - он файл и есть.

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

как минимум в линуксе можно убрать

Да, это одна из реализаций того что я описал. Только все равно потом выяснится, что через базу данных удобнее (возможно даже быстрее), все равно «общее пространство» отсутствует.

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

От BSD в маке не намного больше кода, чем в шиндовсе.

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

Не потому, что так удобнее а потому, что так легче банально огородить всё.

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

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

Объекты: по одному на приложение и один на картинку. Синхронизация: в расте мутабельную ссылку нельзя копировать, потому будет или одна или ни одной. Также, ядро может чекнуть. У него все отображения физической памяти на виртуальную как на ладони, там соответствия адресов и флаг записи.

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