Фантазии о Lisp OS
Apr. 12th, 2011 04:20 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
А вот какой должна быть архитектура ОС ближайшего будущего?
Понятное дело, что все то говно, которое мы имеем сейчас, от AIX до Windows линейки NT - безнадежно устарело.
Я так думаю, что во-первых, естественно, новый тип ОС должен полностью исключать машинный код и прямое управление памятью. То есть, никакого Си, никакого C++, никакого ассемблера, никаких процессов(только треды), никакого разделения адресных пространств, и так далее. В ядре должен работать копирующий сборщик мусора, желательно(наверное даже обязательно) параллельный и желательно инкрементальный, а взаимодействие между частями кода должно быть полностью объектным. Весь код для такой системы должен компилироваться в некоторый промежуточный байт-код, который должен верифицироваться загрузчиком программ(перед трансляцией в машкоды), или некоторым AOT-компилятором(который бы помещал установленные программы в некоторое подобие дотнетовского GAC). Некоторую особо небезопасную часть такого промежуточного байткода позволялось бы использовать только в ядре.
MS делает какие-то шаги в этом направлении, вот взять ту же Singularity. Я ее посмотрел, и мне, в принципе, большая часть там имеющихся идей понравилась, но некоторые вещи не понравились совсем, например как ограничение на динамическую подгрузку и компиляцию кода и упор на статический анализ.
.NET достаточно близко подобрался к тому, чтобы на нем можно было бы делать такую систему. Он практически никак не зависит от платформы, плюс вот вышеупомянутый GAC и так далее. Но, в идеале, как мне кажется, у ОС ближайшего будущего должен быть лисповый рантайм.
Хотя, у современных лиспов есть проблема с безопасностью, и они слишком сильно завязаны на свои сишные рантаймы.
Вот например:
Нужен какой-то новый диалект лиспа, я бы даже сказал диалект CL, который был бы безопасным и компилировался во что-то типа SBCL'ного IR2, то есть в некий такой VOPCode.
Понятное дело, что все то говно, которое мы имеем сейчас, от 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.
no subject
Date: 2011-04-13 05:51 am (UTC)Для userspace софта вообще нет разницы какая там неонка внуртях. Многозадачности традиционной в iphone как не было так и не будет никогда.
Не вижу принципиальной разницы между административными ограничениями и софтварными. Ограничения есть - но это не мешает iOS быть успешной.
Вобщем имхо native код никому не уперся. Главная "новая" ниша, не занятая проблемами бинарной совместимости со старым по.
Новая в кавычках, т.к. по может на самом деле так эволюционировать, что старые наработки становятся особо не нужными. Так linux победила на рынке серверов.
Так fantom os вдруг может стать успешной на рынке десктопов, если хваленая персистентность позволить наклепать кучу удачных приложений с консистентым поведением.
А native или не native - уже не принципиально.
no subject
Date: 2011-04-13 07:27 am (UTC)Успешны iPhone и iPad, а не iOS. Отдельно iOS не продается.
Linux победила, потому что использовала наработки в UNIX и сохраняла совместимость с UNIX-софтом.