1 (изменено: Freeman, 18.10.2015 в 18:16)

Тема: ОС на функциональном языке

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

Предполагается, что функциональная ОС на Канторе будет обладать следующими особенностями:

  • Основа подсистемы выполнения — оптимизатор на основе правил или статистики.

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

  • Точки отсчета для оптимизатора выбираются внутри фрактала.

По-хорошему эти пункты нужно раскрыть, для чего нужен отклик, как и в других темах.

2

Re: ОС на функциональном языке

Перечисленные выше пункты, описывающие особенности ОС на функциональном языке, взяты из СУБД. Тем самым подразумевается, что такая ОС будет обладать свойствами базы данных. Это означает, что в ней будет решена задача, которую пытается решить ОС "Фантом" -- неизбывность (персистентность) состояния:

  • Благодаря транзакциям и ACID БД всегда находится в согласованном состоянии.

  • В СУБД нет понятия "открыть файл" (открыть таблицу) или "загрузить функцию" (триггер, пакет). Таблицы, триггеры, функции и пакеты лежат в БД и доступны всегда и везде, если хватает прав.

  • В крупных СУБД существует техническая проблема "прогрева кэша" -- сразу после запуска производительность запросов может быть ниже, чем когда часто употребительные блоки уже находятся в памяти, позволяя оптимизатору выбирать более производительный план. Проблема решается как программно -- флагами "держать таблицу в кэше" и "грузить таблицу в кэш после старта", так и аппаратно -- аналогично режим сна в ОС. Во всегда согласованной СУБД сделать это намного проще, чем в случае "черных ящиков" программ обычных ОС, а ведь проблеме прогрева кэша подвержены и серверные ОС.

  • Для обслуживания у СУБД обычно имеется несколько промежуточных состояний (запущена, размонтирована, смонтирована, в работе), к чему уже пришли современные ОС, достигнув соответствующего уровня сложности в процессе развития. Переход на технологии СУБД лишь закрепит фактическое положение, упростив и сделав прозрачней обслуживание и администрирование.

3

Re: ОС на функциональном языке

Freeman пишет:

В крупных СУБД существует техническая проблема "прогрева кэша" -- сразу после запуска производительность запросов может быть ниже, чем когда часто употребительные блоки уже находятся в памяти, позволяя оптимизатору выбирать более производительный план. Проблема решается как программно -- флагами "держать таблицу в кэше" и "грузить таблицу в кэш после старта", так и аппаратно -- аналогично режим сна в ОС. Во всегда согласованной СУБД сделать это намного проще, чем в случае "черных ящиков" программ обычных ОС, а ведь проблеме прогрева кэша подвержены и серверные ОС

Какая проьбоема производительности в ОС в этом плане? Скорость загрузки?

4

Re: ОС на функциональном языке

kdenis пишет:

Скорость загрузки?

Разница в скорости первого запуска программы и последующих.

5

Re: ОС на функциональном языке

Вот правил я вчера boot.wim и с сожалением наблюдал бешеную активность жесткого диска. Пришли мысли о том, что в ОС на функциональном языке не программы, а ядро должно решать, где будут располагаться обрабатываемые данные -- в памяти или на диске.

Файл boot.wim занимает 280 МБ, а в системе свободно порядка 1,5 ГБ ОЗУ. Почему нельзя однократно считать файл, проделать все необходимые изменения в памяти и сохранить? Но нет, инфраструктура DISM выполнена в идеологии файловых систем и не поддается такой настройке.

Вообще, перераспределение памяти между рабочей областью и кэшем -- непростая задача. Сейчас ОС и программы лишь делают некоторые предположения, сколько памяти им может быть доступно и насколько (не)экономно ее можно использовать. Довольно часто эти предположения не совпадают с реальной практикой и ожиданиями пользователей, как случилось у меня.

А вот ОС на функциональном языке, опираясь на предсказуемость программ, сможет точно оценить, сколько памяти потребуется для выполнения той или иной команды, как это делает построитель планов и оптимизатор запросов в СУБД. Соответственно, сами программы должны быть подвержены планированию, то есть не быть "черными ящиками", написанными на Си.

Другая важная задача, которую может решить предсказуемая среда -- совмещение рабочей области и кэша. СУБД ведь считывает с диска не наборы байт, а блоки данных, привязанные к конкретным таблицам. Если блок находится в памяти, повторно он не читается, а обрабатывается в памяти.

Блок данных СУБД -- типичный пример совмещения рабочей области и кэша. Если построить ОС по такому принципу, КПД использования ОЗУ увеличится, и ОС сможет активней считывать и обрабатывать в памяти большие объекты, пропорционально объему ОЗУ. В этих условиях виртуальная память переосмысливается и становится временым хранилищем по запросу.

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

6

Re: ОС на функциональном языке

В принципе примерно так работают современные микропрограммы SAN-ов, - то, что считают "горячим" - в кэше контроллера(ов), по необходимость flush на непосредственно диски.

7

Re: ОС на функциональном языке

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

Не уверен, что это общее свойство всех ОС на функциональных языках, но в ОС на Канторе именно так и будет.

Добавлено 31.05.2016 в 23:41

Напутал. Объектная система -- в объектно-ориентированных ОС. ОС на Канторе будет же и объектно-ориентированной, и функциональной.