OSDev

для всех
Текущее время: 19 ноя 2017, 19:09

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 10:37 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Ну, у меня мечта слепить свой проц родилась ещё раньше, чем свою ось :) Только в советское время останавливала нереальность ручного изготовления туевой хучи плат (ведь делать-то пришлось бы на рассыпухе, в лучшем случае -- на секционных МПК вроде К1802 и К1804), а сейчас -- нехватка времени.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 10:55 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Аналогично. И я даже сделал часть схем, начал делать на макетках и рассыпухе, но очень скоро осознал безнадёжность этого занятия. В смысле вероятность завершить в разумное время за разумные деньги.
Сейчас свой проц сделать на порядки проще, но всё равно требуются некоторые (не очень большие) вложения денег и безумные вложения сил и времени.

Edit:
Но усилия даром не пропали. Есть куча процессорных идей, некоторая философско-концептуальная система, ряд ещё не законченных исследований, значительная часть ISA и её сферический эмулятор в вакууме. Так что, надежда ещё живёт.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 12:44 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Логично было бы проектировать архитектуру CPU людям ,непосредственно использующим все её возможности - разработчикам ОС. ?
Вроде как автор Линукса теперь этим и занимается в Трансмета.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 12:47 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
Архитектуру ЦП должны проектировать те, кто активно пользуется (или, по крайней мере, пользовался) ассемблерами различных других архитектур. Если, по собственному признанию Л.Т., он не знает ни одной архитектуры, кроме ИА-32, какой из него проектировщик?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 13:01 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Список ОС для первоочередного обязательного ознакомления и список архитектур?
Составить в отдельной теме?
Мне бы не помешал такой список в плане как сделать минимальный набор команд для ВМ.
Неоднократно читал в сети о какомто старом компьюторе с очень удобной системой команд и найти описание не смог, сейчас не вспомнить как он назывался.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 13:36 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1314
Откуда: Зеленоград
А где найти подробные сведения о старых системах? Мне или Йоде хорошо: мы много чего вживую видели и работали; ну а те, кто помоложе? Современные же системы по большей части годятся плохо: они слишком громоздки (много не то чтобы лишнего, а просто не нужного или второстепенного, чем надо заниматься уже после того, как основа системы заработала), плохо документированы и т.п.

С моей кочки зрения, для интересующегося процессорными архитектурами можно рекомендовать такой список:

* IA-32 (как самый доступный и известный на сегодняшний день; плюс это хороший пример того, какой не должна быть процессорная архитектура -- а отрицательные примеры нередко более полезны, чем положительны);
* ARM;
* IBMовские мэйнрфеймы, причём в двух видах: современные zServer и их прародители -- Системы 360 и 370;
* самые удачные и известные DECовские архитектуры: PDP-11 и VAX-11;
* микропроцессоры-конкуренты 8086: Z8000 и 68000;
* MIPS и SPARC как представители RISC-архитектур (ARM, во всяком случае, более-менее современные версии, таковой если и является, то с приличной натяжкой; правда, с современными МИПСами и СПАРКами я не знаком);
* IA-64, он же Itanium -- довольно интересный взгляд на альтернативу классическим системам команд (то, что коммерчески неудачным оказался, самого интереса не ослабляет).

Понятно, что не требуется учить архитектуры, тем более все -- но знакомство, имхо, было бы полезным.

По операционкам... Ну, я б так набросал:

из современных:
* Винда (самая популярная, доступная и т.п.; то, что она закрыта, не отменяет возможности изучать её функционирование по имеющимся описаниям, особенно в части ввода-вывода -- WDM же документирована, а именно ввод-вывод является самой сложной частью ядра системы);
* может быть, Линух (хотя б в качестве примера, какой не должна быть ось ни изнутри, ни снаружи);
* QNX (хороший пример псевдомикроядерной системы, которая качественно реализует ублюдский АПИ -- посиховский т.е., восходящий к униху);
из древних:
* IBM OS/360 (возможно, первая "большая" ОС, получившая широкое распространение; весьма архаична, но много интересных идей, предвосхитивших, а иногда и превосходящих более поздние системы);
* DEC VAX/VMS -- в плане внутреннего устройства прямой предок ранних версий Винды НТ, между прочим;
* DEC RSX-11 -- предшественница VAX/VMS и образец широкой функциональности при крайне скромных размерах (которые даже тогда не казались гигантскими: на машине с объёмом ОЗУ в 248 килобайт вполне могли работать одновременно несколько пользователей, причём обеспечивалась защита их друг от друга, не говоря о защите самой системы или там о вытесняющей многозадачности -- всё это само собой разумелось; минимальный вариант системы мог вообще работать на 32 килах ОЗУ -- правда, уже с серьёзными ограничениями);
* IBM VM/370 -- первая коммерческая система виртуальных машин. Вполне комфортно себя чувствовала, имея 512 килобайт ОЗУ :)

Всякие узкоспециализированные ОСРВ не называю: и информацию достать обычно трудно (распространение-то небольшое сравнительно), и в силу специфичности там не так много интересного, хотя общее знакомство с такими системами тоже могло бы пригодиться. Ну а а "тяжёлые" ОСРВ, технически способные работать и в качестве полноценных "десктопных" осей -- это QNX и RSX-11 из моего списка.

Опять-таки, ни о каком обязательном и первоочередном ознакомлении речи нет, всё это -- для общего развития. Современные системы, повторюсь, плохи тем, что за их суперпупернавороченным функционалом часто не видно основ, а вот в системах 1960-70-х они видны очень даже хорошо. (Грубо говоря, для 99% людей Вындовз -- это её рабочий стол, который на самом деле является одним из самых маловажных компонентов системы; ну а разработчикам осей нужно знать именно основные вещи, а не второстепенные).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 15:43 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
Пополню ещё список ОС Plan9/Inferno, по которой есть неплохое описание на русском.

Не стоит также забывать про Oberon/Bluebottle с идеей Вирта, что самая лучшая виртуальная машина -- отсутствие виртуальной машины. Функции высокой абстракции вполне может взять на себя язык программирования, транслируемый обычным образом под каждое железо. Такие ОС называют основанными на языке (language-based OS). Считается, что они нетребовательны к аппаратной защите памяти, но раз широкого распространения пока не получили, говорить о ненужности защиты памяти я бы воздержался.

К ОС, основанным на языке, относится Singularity, и стремится стать таковой "Фантом".

Все перечисленные ОС претендуют также на звание объектно-ориентированных, но это просто совпадение. ОС может основываться на любом языке, и вроде даже были проекты ОС на функциональных языках, вроде Лиспа.

iz56 писал(а):
как сделать минимальный набор команд для ВМ.

От себя добавлю, что идея сделать минимальный набор команд для ВМ -- утопия. Или набор будет слишком минимальным, и промежуточная трансляция родит ещё одного тормозного монстра по типу Java, или со временем он перестанет быть минимальным, и приблизится по сложности к языку программирования.

Набор низкоуровневых (регистровых, стековых и пр.) команд имеет смысл разрабатывать только для реализации в кремнии, а виртуальная машина должна основываться на логических абстракциях, вроде: функция, список, транзакция и т. п.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 20 июл 2012, 06:04 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Я хочу заложить возможности для развития .
На счёт минимального набора - нужен базовый минимальный вариант ВМ (предполагается что остальные инструкции могут отсутствовать - а ОС должна запуститься - остальные инструкции приложения смогут сами добавить - аля микрокод IA32).
А стека и регистров не было и не будет. Единственно что многозадачность в базовом варианте есть - но под сомнением её нужность.
Проблема , что код операции размером 32 бита и добавить новых инструкций можно много - а сейчас нужно выбрать такой хитрый базовый набор , что б и охватить побольше и саму виртуальную машину не раздуть - это я о себе беспокоюсь - мне же её переписывать под разные хостовые ОС и разные режимы x86.

Ссылка на тему с моей ВМ и ОС для неё:
http://osdev.ru/viewtopic.php?f=4&p=6951#p6951


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 20 июл 2012, 09:56 
Аватара пользователя

Зарегистрирован: 28 май 2012, 23:44
Сообщения: 237
Откуда: Санкт-Петербург
iz56 писал(а):
остальные инструкции приложения смогут сами добавить - аля микрокод IA32).

Это уже похоже на обычные ОС с той лишь разницей, что библиотечные функции именуются микрокодом.

iz56 писал(а):
Проблема , что код операции размером 32 бита и добавить новых инструкций можно много - а сейчас нужно выбрать такой хитрый базовый набор

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

Если абстрагировать только классы операций, основных кодов будет всего 7-10, остальное -- подтипы и параметры. Подтипы и префиксы, если будут, можно упаковать вместе с командами в 16 или 32 бита. В ARM вроде так?

Как пример плохого проектирования можно вспомнить GW-BASIC, в котором все процедуры назывались операторами, потому что "так проще". На самом же деле, как понимаю, его байт-код не позволял описывать именованные процедуры, отчего концепция и вышла куцей.

В то время реализация Бейсика еще не претерпела изменений при переносе с мини-ЭВМ на персоналки, и разработчики наверняка хвалились, что-де их Бейсик может работать даже на xx КБ ОЗУ, в упор не видя, что на IBM PC было xxx КБ, и вопрос экономии памяти в ущерб возможностям уже не стоял.

Freeman писал(а):
виртуальная машина должна основываться на логических абстракциях, вроде: функция, список, транзакция и т. п.

Вчера после своих слов полез смотреть, как сделан LLVM, который все так хвалят. Похоже, что именно так. Его Университет Иллинойса делает как-никак, а не красноглазая "швабода" с костылями в голове.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 20 июл 2012, 13:15 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Всё больше прихожу к выводу, что хорошая виртуальная машина должна в корне отличаться от физической архитектуры. Так, многие явления виртуальной машины следует оставлять "за кадром", т.е. как непринципиальные, оставляться на усмотрение физической реализации. Так, например, с точки зрения ВМ совершенно не важно, где и как передаются параметры функций, как осуществляется взаимодействие между процессами и т.д. Также можно пренебречь эффективностью (плотностью) кодирования кода.
1. Действительно не должно быть стека, а регистры должны быть в форме неограниченного количества временных переменных.
2. Не должно быть никаких специфически машинных инструкций, типа ввод/вывод, прерывания, RDMSR и вообще, – только работа с данными (как можно более абстрактными), ветвления и вызовы. Из специфически машинных, я бы, вероятно, оставил бы только поддержку атомарности операций, – без неё не сделать многопоточной работы.
3. Это должен быть байт-код для эффективной обработки, хранения и оптимизации процедур в памяти.
LLVM всем хороша, кроме того, что это всё-таки текстовая машина и требует синтаксического разбора. Она позиционируется, как промежуточный язык, но на мой взгляд это как раз неудачный подход. Получается сначала компиляция с языка (синтаксический разбор) в язык (второй синтаксический разбор) и потом генерация кода. Байт код позволил бы практически избавиться от второго синтаксического анализа. А так виртуальная машина получается ближе к скриптовым языкам. А вот хорошая бинарная виртуальная машина как раз очень идеально подошла бы в качестве промежуточного уровня между синтаксическим анализом и генерацией кода – для разделения фронтенда и бэкенда при компиляции с любого языка в любую архитектуру.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB