Как стать автором
Обновить
15
0
bormotov @bormotov

Пользователь

Отправить сообщение
видимо, вы очень мало занимаетесь разработкой.
не понимаю в чем проблема.

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

Чудес, к сожалению, в этом месте не бывает. Вот, у меня в списке дежурных фраз есть
Тупые решения выигрывают у умных в 9 из 10 случаев. Будьте достаточно умны, что бы предлагать тупое решение

Практически вся эта статья в одной фразе.
производительность процессоров растет быстрее, чем производительность людей.
В тех 7% где не растет — будет не тупой код, и комментарий «не трогайте тут, выигрываем несколько тактов»
«просадка будет значительная» — это прекрасное, неоспоримое доказательство.

Да, я понимаю, что лично замеры не делали.
Всегда будут люди, которым хочется показать фон рабочего стола, это понятно.

Если человек хочет показать цифры, то он покажет цифры. Для этого даже скриншоты не нужны.
Проблема некоторых программистов, что они видят строки, то есть не очень далеко ушли от кодеров.
Графическое представление алгоритма как раз и нужно для того, что бы наглядно логику алгоритма, то есть более высокий уровень.

Не думаю, что есть готовый инструментарий, но посмотрите на пару-тройку-пятреку-десяток лет назад, сколько было удобный инструментов для JS? Сколько сейчас?
нет никаких проблем отследивания зависимостей.

Блок-схема (диаграмма итд) — это всего-навсего одно из представлений.
Какие проблемы сделать diff?

Есть же для xml diff, который не тупо строки сравнивает, а структуру документа, точно так же можно и для этого сделать. Если нужно, конечно
простите, что немного оффтопик, но для меня было новостью, что microsoft умеет таки пакеты выкладывать в репозитории.

Тогда еще большей остается загадкой, почему свои Linux Integration Services, они раздают через задницу в виде ISO'шника, с адовыми скриптами, и вот это всё.
хочу сказать, что ваш начальный тезис — ошибочен.

Везде говорят, что для минимизации ошибок нужно избегать дублирования информации,


1. непонятно что такое «везде»
2. вот я привел несколько примеров, когда наоборот — избыточная информация позволяет не только выявлять ошибки (CRC) но и корректировать их (ECC и прочие), или даже просто примитивное дублирование (RAID 1) повышает надежность хранения информации — то есть, в случае возникновения ошибок на этом уровне, это не приводит к ошибкам далее — используют ту копию, которая осталась целой.

На статью с парадоксальным выводом хотелось бы ссылку.

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


RAID 1 — просо дублирование.
Везде говорят, что для минимизации ошибок нужно избегать дублирования информации,


В этом месте всем передает привет CRC, ECC, и прочие способы избыточно кодировать информацию, что бы было легко обнаруживать ошибки, корректировать и так далее.
Билл Гейтс раздает деньги на полезные проекты, в больших количествах.
странно, что вы не дочитали буквально пару предложений
что конкретно сделать — не очень понятно, а что получить — вот же, прямым текстом:

Какое свойство человека делает его таким хорошим ситом?


кстати, ни слова не говорил о том, какой у меня уровень паранойи.

Вопрос, не в том, проверен компилятор формально или нет. А в том, что заниматься проверкой «вот из этих исходников вот эти бинарники», имеет смысл только при условии, что вы доверяете «указанному компилятору», который сделает из исходников бинарники.

Например, я могу доверять компилятору из кого-нибудь линукса. Или нет, линукс, это не достаточно параноидально. OpenBSD. То есть, нужно попросить автора прошивки, собрать свою прошивку вот этим компилятором. которому я доверяю, и выдать бинарники мне для проверки.
Берется такая же версия компилятора и линковщика, если полученный бинарник соответсвует представленному, занчит представленный собран из тех же исходников.


Второй раз за сегодня вспоминаю (уже классика) фрагмент лекции Дейкстры, про то, что нельзя доверять бинарному компилятору, на простом примере, как добавлять закладки в компилятор.

К чему это я? Проверить, что вот эти бинарники из этих исходников получились имеет смысл только если процесс «получились» — уже проверен на безопасность.
В системе Фантом вы не видите никаких серьёзных проблем со ссылками, поэтому я предполагаю, что у вас в голове есть какая-то модель её функционирования.


повторюсь: ОС Фантом на одном физическом хосте — это (грубо) одна копия jvm/.net или любой другой VM. А разные программы в ОС Фантом — это суть разные нити внутри этой самой jvm. Есть сейчас какие-то вопросы по управлению ресурсами внутри одной копии jvm? Примерно такой-же набор вопросов в ОС Фантом.

Ключевое отличие от текущей ситуации с jvm:
— если вы однажды сказали new SomeClass — вам не нужно предпринимать какие-то дополнитлеьные усилия по его сохранению/восстановлению между перезапусками самой системы — это делает ОС сама.
— память-диск-сеть — для вашего процесса представляется единым API, который суть просто передать ссылку на объект.

Само по себе persistance никакой не прорыв — есть в каком-то виде наверное вообще для всего.
Сетевая прозрачность тоже давно известная штука, у jvm есть RMI, например. У того же erlang сетевая прозрачность вообще в базовой концепции. Наверняка можно найти еще примеров успешных промышленных реализаций в этом направлении для других популярных инструментов.

Разница только в том, что в Фантом дадут всё это сразу, в удобном виде, как базовое API.

Навскидку, если сейчас на jvm взять комплект akka + akka-cluster + akka-persistance, то можно с помощью напильника и какой-то матери получить примерно такую же среду выполнения как планируется в Фантоме. Список современных инструментов, у которых разное проникновение в промышленность, и для которых в виде библиотек реалихзована персистентность и сетевая прозрачность можно продолжать.

ответы

1. конечно, у каждого ресурса есть владелец
2. при завершении процесса, сборщик мусора освободит все ресурсы, которыми владел процесс
3. Очевидно, что если владелец передал ссылку на ресурс куда-то наружу, но не передал (разделил?) право владения, то возникает вопрос выбора — что с этим ресурсом делать.

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

Посмотрите на Rust, из того, что сейчас на слуху, это самое интересное место, где люди пытаются вот эти вопросы владения/передачи как-то красиво формализовать, что бы обеспечить автоматическое управление ресурсами.
как это копирование или некопирование данных влияет?

Вы предлагаете каждому ресурсу добавить метку — PID владельца.

это не я предлагаю. Вот, у меня windows вокруг, там есть такая утилита ProcessExplorer, которая залезает во внуренности системы, и показывает очень много чего. Мне, на самом деле, не важно технически, как именно это сделано, потому, что совершенно очевидно, всё это начинается со списка процессов, и далее там как-то к этим процессам подвязано.

Вот есть документ в памяти, сейчас его владелец — ОС. Документ передали на редактирование какому-то приложению, что произойдёт?


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

Процесс приложения при редактировании выделил у менеджера памяти пару новых блоков и добавил их в объект документа. Кто владелец новых блоков? Что с ними произойдёт при убиении процесса?


Вот та функция внутри программы внутри jvm/.Net/итд (которой дали ссылку на объект) запросил еще памяти, ему выдали, что происходит? Кто владелец новых блоков?

Могу сходу ответить на «что происходит после завершения функции» — если эти ссылки из этой функции никому больше не попали (функция не отдала эту ссылку в результатах своей работы), у них будет ref count = 0, и эти блоки освободит сборщик мусора.
я сходу не знаю какой-то одной ссылки, если dz знает — может сам выдаст.

Запущенная программа имеет процесс, который владеет ресурсами ОС.


«Процесс» — это такая запись в таблице процессов? А этот самый PID — это номер этой записи? Есть еще что-то важное? Область памяти в которую загружен код, какие-то стандартные дескрипторы stdin, stdout — это всё не важно. Это по сути тоже какие-то данные в той же таблице, которые можно узнать, зная PID.

Что значит «владеет ресурсами»? Вот, в программе вызывают malloc(), что дальше происходит? Понятно, что основной результат — адрес блока памяти. Но что значит «владеет ресурсами ОС»?

Если ОС память выдает, то в той самой «таблице процессов» находит PID откуда пришел malloc(), и записывает «выдано памяти, по такому-то адресу, такого-то размера». То есть, «процесс владеет ресурсами ОС» — это тоже тупо запись в каких-то структурах данных внутри ОС, связанных с этим PID?

Что значит «освободила ресурсы»? Отправила программа в ОС «сообщение»" free()? Никто не заставляет программу освобождать память, перед тем как сказать system.exit()? Что в этом случае происходит? ОС смотрит в те самые таблицы-итд, находит там PID, находит все ресурсы с ним связанные, выполняет какие-то манипуляции с этими дескрипторами, размерами и так далее. Так?

Что вообще такое «освобождение памяти»? Это отметка, что начиная с такого-то адреса, такой размер блока — свободен. Отметка, опять таки, в какой-то структуре внутри ОС. Как это сейчас принято делать, списки? Деревья?

То есть, всё вот это — это просто изменение данных в системных структурах. Больше никаких физических действий не происходит.

Что изменятся если у нас диск от ОЗУ неотличим? Правильно — ни-че-го.
И это «неотличимо» работает давно, называется «виртуальная память». Если верить википедии, понятие «Вритуальная память» существует с 1956 года. На практике используется с 1969.

То есть, какова бы ни была среда выполнения, ОС (эта самая среда),

— запускает процессы
— выделяет им ресурсы — malloc
— умет освобождать конкретные ресурсы по просьбе процесса — free
— умеет освобождать все ресурсы, по завершению процесса — я думаю, что сама запускает free по всему списку

И мы только что разобрались, что всё это, просто суть данные в каких-то таблицах/списках/деревьяъ/структурах, как там оно реализовано.

Что такое «протекаюзщая программа»? Программа, которая не вызвает free. Но с точки зрения ОС, это означает, что где-то там в её структурах, есть данные про эти куски памяти. И как только программа говорит system.exit() — ОС знает, все эти ресурсы свободны, и сама вызывает free.

Кто или что помешает в ОС Фантом реализовать system.exit()?
На эту тему автор пишет уже больше десяти (двадцати?) лет, в разных местах.

процессов в традиционном понимании в этой ОС нет


Вот у вас сейчас, в классической ОС, программа — это такой файл на диске. Она «остановлена»? Что случается, если вы её «запускаете»? Просто подумайте. А теперь представьте, что диска как такового нет — всё некая память, которая не пропадает сама по себе. Как изменится ваш ответ на тему «запуск программы»?

Разница между «запущенной программой» и «незапущенной», только в простом факте: «запущенная» программа получает некие события «извне», и может сама какие-то события генерировать, и куда-то там отправлять. Например запросить кусок памяти, обратиться по сети к какой-то другой программе.

Что означает для программы «завершила работу»? Перестала обрабатывать события извне. По своей внутренней воле. И перестала сама генерировать события. Последнее событие, которое она сгененрировала — сообщила системе — system.exit(0)
Только программы периодически перезапускают.


при невозможности рестарта процесса


Любой объект можно создать когда нужно, а когда не нужно — убить.
С чего вдруг какие-то процессы в Фантоме станут неубиваемые или неперезапускаемые? Кто запретит? Таки лично dz будет приходить и говорить, что грешно процессы перезапускать?

Особенно странно звучит эта гипотеза в рамках концепции платформы, которая принципиально 100% managed.

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность