love5an: (Default)
[personal profile] love5an
А вот какой должна быть архитектура ОС ближайшего будущего?

Понятное дело, что все то говно, которое мы имеем сейчас, от AIX до Windows линейки NT - безнадежно устарело.

Я так думаю, что во-первых, естественно, новый тип ОС должен полностью исключать машинный код и прямое управление памятью. То есть, никакого Си, никакого C++, никакого ассемблера, никаких процессов(только треды), никакого разделения адресных пространств, и так далее. В ядре должен работать копирующий сборщик мусора, желательно(наверное даже обязательно) параллельный и желательно инкрементальный, а взаимодействие между частями кода должно быть полностью объектным. Весь код для такой системы должен компилироваться в некоторый промежуточный байт-код, который должен верифицироваться загрузчиком программ(перед трансляцией в машкоды), или некоторым AOT-компилятором(который бы помещал установленные программы в некоторое подобие дотнетовского GAC). Некоторую особо небезопасную часть такого промежуточного байткода позволялось бы использовать только в ядре.

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

.NET достаточно близко подобрался к тому, чтобы на нем можно было бы делать такую систему. Он практически никак не зависит от платформы, плюс вот вышеупомянутый GAC и так далее. Но, в идеале, как мне кажется, у ОС ближайшего будущего должен быть лисповый рантайм.

Хотя, у современных лиспов есть проблема с безопасностью, и они слишком сильно завязаны на свои сишные рантаймы.
Вот например:

(defun %address-of (vec)
  (declare (type (simple-array (unsigned-byte 32) (1)) vec)
           (optimize (speed 3) (safety 0)))
  (sb-sys:int-sap (logand #xFFFFFFF8 (aref vec 0))))

(defun address-of (object)
  (%address-of (vector object)))

(defparameter *vector* (make-array 4 :element-type '(unsigned-byte 32)
                                   :initial-contents '(1 2 3 4)))

(let ((pointer (address-of *vector*)))
  (dotimes (i 4)
    (format t "~a " (sb-sys:sap-ref-32 pointer (+ 8 (* i 4))))))
;; => 1 2 3 4



Нужен какой-то новый диалект лиспа, я бы даже сказал диалект CL, который был бы безопасным и компилировался во что-то типа SBCL'ного IR2, то есть в некий такой VOPCode.

Date: 2011-04-12 12:47 pm (UTC)
From: [identity profile] maxim.livejournal.com
Так так :) Я хотел бы получить ответы на такие вопросы:

1. как будем бутстрепить транлированный код ? Допустим у нас есть хороший кросс-платформенный компилятор. Нам же все равно нужно будет организовать загрузку нашего образа, а существующие компиляторы делают PE/COFF/ELF, а это таблица релокаций, и линейное адресное пространство.

2. как будем писать оптимизацию переключателя потоков? APIC IPI? Тут дело не в лиспе, а том, что обычно все слишком умные, а как написать это на ассемблере правильно незнают, зато знают шаблоны, мультидиспач, и паб/саб :) Обработка прерываний, стек сообщений. Имеем ввиду что если мы хотим что бы это работало на мобильнике, то оно должно быть так написано, что бы не жрало много энергии. Потому что например на Андроиде Линукс, который сжирает все.

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

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

Date: 2011-04-12 01:17 pm (UTC)
From: [identity profile] love5an.livejournal.com
1. Понятное дело, что надо писать свой компилятор, так как существующие не подходят. Сложно, но можно; особенно если заимствовать код из открытых :)

2. А честно говоря, фиг знает. Но это уже детали, не? Код по прерываниям можно и на ассемблере написать. Я вообще так думаю, отказ от процессов это дело упростит.

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

Под лиспом я тут имею ввиду не столько язык, со скобками и прочим, а VM, то есть система обработки исключений(которая суть тот же SEH), GC, объектная система, динамическая подгрузка и исполнение кода.

Кремнивые решения сейчас легаси на 90% - начиная с a20, и заканчивая тем же разделением адресных пространств(потому что ведь Си, а в Си у нас плоская нетипизированная неуправляемая память, одна для всей для программы)

(no subject)

From: [identity profile] ircicq.livejournal.com - Date: 2011-04-12 03:04 pm (UTC) - Expand

(no subject)

From: [identity profile] kmmbvnr.livejournal.com - Date: 2011-04-13 02:45 am (UTC) - Expand

(no subject)

From: [identity profile] ircicq.livejournal.com - Date: 2011-04-13 03:09 am (UTC) - Expand

(no subject)

From: [identity profile] kmmbvnr.livejournal.com - Date: 2011-04-13 03:40 am (UTC) - Expand

(no subject)

From: [identity profile] ircicq.livejournal.com - Date: 2011-04-13 04:33 am (UTC) - Expand

(no subject)

From: [identity profile] kmmbvnr.livejournal.com - Date: 2011-04-13 04:41 am (UTC) - Expand

(no subject)

From: [identity profile] ircicq.livejournal.com - Date: 2011-04-13 05:39 am (UTC) - Expand

(no subject)

From: [identity profile] kmmbvnr.livejournal.com - Date: 2011-04-13 05:51 am (UTC) - Expand

(no subject)

From: [identity profile] ircicq.livejournal.com - Date: 2011-04-13 07:27 am (UTC) - Expand

Date: 2011-04-12 12:50 pm (UTC)
From: [identity profile] maxim.livejournal.com
Есть такая пословица: Начинать писать ОС надо со схемы процессора.

Date: 2011-04-12 02:25 pm (UTC)
From: [identity profile] kaberc (from livejournal.com)
java, why not? тем более уже есть несколько осей на джаве, советую посмотреть

Date: 2011-04-12 02:28 pm (UTC)
From: [identity profile] kaberc (from livejournal.com)
а вообще давно возникают мысли о железной jvm

Date: 2011-04-14 02:15 pm (UTC)
From: [identity profile] love5an.livejournal.com
у жабы убогий рантайм. тот же .NET намного лучше

Date: 2011-04-12 03:05 pm (UTC)
From: [identity profile] fi_mihej.livejournal.com
Слуш, а ты, кстати, на Фантом ОС (dz.livejournal.com делает), смотрел? Любопытная шутка и как раз по теме.

Date: 2011-04-14 02:14 pm (UTC)
From: [identity profile] love5an.livejournal.com
нет, не смотрел, надо будет взглянуть
From: [identity profile] geovit.livejournal.com
Опять таки, Оберон-системы Вирта не получили должного развития.

Date: 2011-04-12 08:55 pm (UTC)
From: [identity profile] maxim.livejournal.com
Да, а в Symbilics и LMI вообще можно было сохранять состояние всего контекста. А вообще такая операционные среды есть: это Эрланг и Smalltalk Squeak. Бутстрепятся на любой более менее-посикс системе. На Windows CE даже сквик работает. Ну и дядя Дима аля жавовскую на NewOS ядре делает тоже с персистед контекстом.

Date: 2011-04-12 09:15 pm (UTC)
From: [identity profile] maxim.livejournal.com
Вот это посмотри: самая быстрая Smalltalk VM

http://squeakvm.org/win32/experimental/CogSqueak4.1.zip

Date: 2011-04-12 09:27 pm (UTC)
From: [identity profile] maxim.livejournal.com
А вот какие образы бывают. Например Pharo:
http://www.pharo-project.org/about/screenshots

(no subject)

From: [identity profile] maxim.livejournal.com - Date: 2011-04-12 09:36 pm (UTC) - Expand

(no subject)

From: [identity profile] eugenius-nsk.livejournal.com - Date: 2011-04-13 04:44 am (UTC) - Expand

(no subject)

From: [identity profile] maxim.livejournal.com - Date: 2011-04-14 02:21 pm (UTC) - Expand

Date: 2011-04-13 04:40 am (UTC)
From: [identity profile] eugenius-nsk.livejournal.com
Хм, а можно ссылку на тесты в сравнении с VisualWorks VM?

(no subject)

From: [identity profile] maxim.livejournal.com - Date: 2011-04-13 08:08 am (UTC) - Expand

Date: 2011-04-14 02:14 pm (UTC)
From: [identity profile] love5an.livejournal.com
надо посмотреть.
я уже довольно давно слышал про squeak, вообще, но руки как-то не доходили серьезно разобраться в ней

(no subject)

From: [identity profile] maxim.livejournal.com - Date: 2011-04-14 02:20 pm (UTC) - Expand

(no subject)

From: [identity profile] maxim.livejournal.com - Date: 2011-04-14 02:24 pm (UTC) - Expand

Date: 2011-04-12 11:04 pm (UTC)
From: (Anonymous)
Ты придумал Inferno. Молодец.

Date: 2011-05-02 05:59 pm (UTC)
From: (Anonymous)
+1. Реально описал Inferno.

Date: 2011-04-13 02:53 am (UTC)
From: [identity profile] kmmbvnr.livejournal.com
Такая ос появиться если только будет найдена ниша, в которой подобная архитектура позволяет писать такие приложения, которые под другими системами реализуются криво и косо.

Еще один дектопник несовместимый не с кем никому не нужен, а телефоны заняты.

А может lispos позволить отказаться от понятия виртуальный сервер, и связанных с этим накладными расходами на виртуализацию? Тогда она смогла бы стать хорошей основой для веб-приложений.

Date: 2011-04-13 07:54 am (UTC)
From: [identity profile] insomniakk.livejournal.com
Загружаемая виртуальная машина.

Можно объединить с Forth(переносимость) и обобщённым миниассемблером для реализации некоторых нативных слов в Forth(писать на ассемблере в пределах слова не сложно).

REPL будет shell'ом, отпадает надобность в скриптоте типа Bash.
Все примитивы системы в виде специальных форм Lisp. Что мешает адресовать порты периферии в такой машине? Вроде бы ничего. Управляй станками.

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

Forth загружает образ Lisp-машины в память и передаёт ей управление, инициализация..
Сборка мусора будет уже на уровне системы, это позволит оптимизировать её не распыляясь на разные реализации в языках. Явные вызовы сборщика это уже обращение к системе. Если бы такая система была, то сборка мусора была бы уже в железе, специализированный процессор, функциональность самой шины данных.

Можно допустить разные оконные менеджеры(создавать их будет элементарно), но что бы всегда была возможность загружаться в какое то встроенное подобие Emacs(не просто REPL).
То есть что бы IDE была уже частью даже голой системы.

Charles H. Moore(изобретатель Forth), вся жизнь проектировал процессоры у которых отсутствует overhead при выполнении кода стековой машины(stack machine).

Date: 2011-04-13 10:04 am (UTC)
From: [identity profile] insomniakk.livejournal.com
Никто ничего кроме корпораций делать не будет.

Date: 2011-04-14 02:13 pm (UTC)
From: [identity profile] love5an.livejournal.com
да делать то может и будет, а вот другое дело - поддерживать

Date: 2011-04-14 10:49 am (UTC)
From: [identity profile] voidbent.livejournal.com
> никаких процессов(только треды)

Никаких тредов, только процессы. За параллельность внутри процесса должна отвечать сама операционка, возможно при помощи подсказок в самой программе.

Ручное управление тредами (мутексы, семафоры) – это такой же бред как и ручное управление памятью.

Date: 2011-04-14 02:12 pm (UTC)
From: [identity profile] love5an.livejournal.com
В принципе, у меня возникали мысли на эту тему, но тут ведь проблема в том, что проверенное средство автоматического управления памятью в природе существует, а вот средство автоматической синхронизации?
Thread affinity и циклы сообщений, как в COM, например? Или STM? Не знаю.

Все-таки да, некоторое подобие процессов нужно, но скорее как SIP из Singularity, т.е. ограничения должны реализовываться через "пространства объектов", а не через виртуальную память.

(no subject)

From: [identity profile] insomniakk.livejournal.com - Date: 2011-04-14 02:48 pm (UTC) - Expand

(no subject)

From: [identity profile] voidbent.livejournal.com - Date: 2011-04-14 06:10 pm (UTC) - Expand

(no subject)

From: [identity profile] antilamer.livejournal.com - Date: 2011-04-14 07:14 pm (UTC) - Expand

(no subject)

From: [identity profile] voidbent.livejournal.com - Date: 2011-04-14 07:19 pm (UTC) - Expand

(no subject)

From: [identity profile] antilamer.livejournal.com - Date: 2011-04-14 07:25 pm (UTC) - Expand

(no subject)

From: [identity profile] voidbent.livejournal.com - Date: 2011-04-14 07:32 pm (UTC) - Expand

(no subject)

From: [identity profile] permea-kra.livejournal.com - Date: 2011-04-15 10:23 am (UTC) - Expand

(no subject)

From: [identity profile] voidbent.livejournal.com - Date: 2011-04-15 10:24 am (UTC) - Expand

(no subject)

From: [identity profile] antilamer.livejournal.com - Date: 2011-04-14 07:26 pm (UTC) - Expand

(no subject)

From: [identity profile] insomniakk.livejournal.com - Date: 2011-04-14 07:42 pm (UTC) - Expand

(no subject)

From: [identity profile] voidbent.livejournal.com - Date: 2011-04-14 06:05 pm (UTC) - Expand

Date: 2011-04-15 03:16 am (UTC)
From: [identity profile] 13-49-ru.blogspot.com (from livejournal.com)
Чё, сразу давай новый процессор. Штатный x86 будет в роли IO-сопроцессора и запускалки старых ламповых Кризисов с Фаркраями, а в PCIe-16x стоять плата с толстой альтериной типа Стратикса 4 или 5. И вот туда-то влезет и свой опкод, и аппаратное тэгирование слов с прозрачным сборщиком мусора. А т.к. опкодов там 30-50 всего надо, то таких простых АЛУ можно вагон с тележкой сделать, десятки-сотни.

Фантазируем дальше: в материнку втыкается много таких плат, связываются они между собой специальным высокоскоростным линком. Или вообще можно внешний ящик в кучей плат организовать, а общение с io-сопроцессором - через PCIe-плату опять же.

У нас, кстати, так и сделано, только внутри FPGA не лисповые вычислители. Но ничто не мешает такое замутить, было бы желание.

ос? а может быт шмел?

Date: 2011-04-22 09:34 am (UTC)
From: (Anonymous)
С последними тенденциями увеличения кол-ва физ. ядер и скаляризации архитектуры, в ОС, как таковой не вижу необходимости -- можно погуглить в сторону экзоядер.

Date: 2011-04-26 01:37 pm (UTC)
From: [identity profile] dz.livejournal.com
Вы очень близко описали концепцию Фантома. Айда к нам - делать лисп для phantom vm. Всё остальное, в целом, есть.

http://code.google.com/p/phantomuserland/

Date: 2011-04-26 01:51 pm (UTC)
From: [identity profile] love5an.livejournal.com
надо посмотреть на досуге
тут вот уже рекомендовали, да все руки не доходят :)

Date: 2011-05-02 05:14 pm (UTC)
From: (Anonymous)
> MS делает какие-то шаги в этом направлении, вот взять ту же Singularity.

HalVM и продолжатели (hOp, House, lighthouse) туда же.

Date: 2011-07-31 05:18 pm (UTC)
From: [identity profile] daapp.livejournal.com
А что не так с movitz?

Profile

love5an: (Default)
Dmitry Ignatiev

June 2020

S M T W T F S
 123456
78910 111213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 15th, 2025 03:49 am
Powered by Dreamwidth Studios