Виктор Казаринов » 25 апр 2012, 00:55
Спасибо за фокусировку. Я в период с 2000 по 2005 г. написал виртуальную 64 разрядную виртуальную псевдопараллельную машину на 32 разрядном x86 ассемблере. Вся программа использует всего 3 треда. Она у меня устойчиво работает. За основу я брал JVM и .NET с ее MSIL. Но я приложил усилия в направлении параллелизма. И сделал совсем небольшие виртуальные одностековые процессоры (ВП), которые имеют все необходимые атрибуты - прерывания, механизм создания нового ВП и т.д. Каждая команда ВП выполняется приблизительно за 20 машинных команд X86 процессора. В это кол. команд входит и переключение на следующий ВП. Каждый ВП может легко синхронно или асинхронно прерывать другой ВП. Мой сын написал для виртуального ассемблера этих ВП IDE, с пом. которой я написал довольно много кода. Включая довольно сложную систему хранения онтологической информации на HDD. Сейчас есть мысль отрефакторить этот проект, расширив набор команд и переведя его на 64-битный ассемблер (nasm). Специфика проекта AINIX в том, что обычные виды параллелизма тут не очень подходят. Тут практически нет векторных операций. И большие модули довольно легко разбить на небольшие. Сообщения для пересылки между ВП небольшие. Эта система похожа на муравейник с роевым интеллектом, где здание муравейника - это единая онтология и ее ветви, а муравьи - микроагенты, расположенные в ВП. Каждый микроагент будет использовать код для своей работы, находящийся в онтологии. И записывать результаты туда же. Некоторые результаты могут быть кодом для выполнения микроагентами. Нечто подобное есть в функциональном программировании (LISP).