OSDev http://osdev.su/ |
|
PlutOS http://osdev.su/viewtopic.php?f=8&t=533 |
Страница 6 из 9 |
Автор: | SII [ 19 июл 2012, 10:37 ] |
Заголовок сообщения: | Re: PlutOS |
Ну, у меня мечта слепить свой проц родилась ещё раньше, чем свою ось Только в советское время останавливала нереальность ручного изготовления туевой хучи плат (ведь делать-то пришлось бы на рассыпухе, в лучшем случае -- на секционных МПК вроде К1802 и К1804), а сейчас -- нехватка времени. |
Автор: | Yoda [ 19 июл 2012, 10:55 ] |
Заголовок сообщения: | Re: PlutOS |
Аналогично. И я даже сделал часть схем, начал делать на макетках и рассыпухе, но очень скоро осознал безнадёжность этого занятия. В смысле вероятность завершить в разумное время за разумные деньги. Сейчас свой проц сделать на порядки проще, но всё равно требуются некоторые (не очень большие) вложения денег и безумные вложения сил и времени. Edit: Но усилия даром не пропали. Есть куча процессорных идей, некоторая философско-концептуальная система, ряд ещё не законченных исследований, значительная часть ISA и её сферический эмулятор в вакууме. Так что, надежда ещё живёт. |
Автор: | iz56 [ 19 июл 2012, 12:44 ] |
Заголовок сообщения: | Re: PlutOS |
Логично было бы проектировать архитектуру CPU людям ,непосредственно использующим все её возможности - разработчикам ОС. ? Вроде как автор Линукса теперь этим и занимается в Трансмета. |
Автор: | SII [ 19 июл 2012, 12:47 ] |
Заголовок сообщения: | Re: PlutOS |
Архитектуру ЦП должны проектировать те, кто активно пользуется (или, по крайней мере, пользовался) ассемблерами различных других архитектур. Если, по собственному признанию Л.Т., он не знает ни одной архитектуры, кроме ИА-32, какой из него проектировщик? Кстати говоря, создать нормальную ось тоже может только человек, имеющий приличный кругозор. Когда этот самый кругозор сводится к поверхностному знакомству с одной (ну, двумя) осями, путного ничего не получится, только более-менее (не)удачный клон знакомых систем. |
Автор: | iz56 [ 19 июл 2012, 13:01 ] |
Заголовок сообщения: | Re: PlutOS |
Список ОС для первоочередного обязательного ознакомления и список архитектур? Составить в отдельной теме? Мне бы не помешал такой список в плане как сделать минимальный набор команд для ВМ. Неоднократно читал в сети о какомто старом компьюторе с очень удобной системой команд и найти описание не смог, сейчас не вспомнить как он назывался. |
Автор: | SII [ 19 июл 2012, 13:36 ] |
Заголовок сообщения: | Re: PlutOS |
А где найти подробные сведения о старых системах? Мне или Йоде хорошо: мы много чего вживую видели и работали; ну а те, кто помоложе? Современные же системы по большей части годятся плохо: они слишком громоздки (много не то чтобы лишнего, а просто не нужного или второстепенного, чем надо заниматься уже после того, как основа системы заработала), плохо документированы и т.п. С моей кочки зрения, для интересующегося процессорными архитектурами можно рекомендовать такой список: * 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% людей Вындовз -- это её рабочий стол, который на самом деле является одним из самых маловажных компонентов системы; ну а разработчикам осей нужно знать именно основные вещи, а не второстепенные). |
Автор: | Freeman [ 19 июл 2012, 15:43 ] |
Заголовок сообщения: | Re: PlutOS |
Пополню ещё список ОС Plan9/Inferno, по которой есть неплохое описание на русском. Не стоит также забывать про Oberon/Bluebottle с идеей Вирта, что самая лучшая виртуальная машина -- отсутствие виртуальной машины. Функции высокой абстракции вполне может взять на себя язык программирования, транслируемый обычным образом под каждое железо. Такие ОС называют основанными на языке (language-based OS). Считается, что они нетребовательны к аппаратной защите памяти, но раз широкого распространения пока не получили, говорить о ненужности защиты памяти я бы воздержался. К ОС, основанным на языке, относится Singularity, и стремится стать таковой "Фантом". Все перечисленные ОС претендуют также на звание объектно-ориентированных, но это просто совпадение. ОС может основываться на любом языке, и вроде даже были проекты ОС на функциональных языках, вроде Лиспа. iz56 писал(а): как сделать минимальный набор команд для ВМ. От себя добавлю, что идея сделать минимальный набор команд для ВМ -- утопия. Или набор будет слишком минимальным, и промежуточная трансляция родит ещё одного тормозного монстра по типу Java, или со временем он перестанет быть минимальным, и приблизится по сложности к языку программирования. Набор низкоуровневых (регистровых, стековых и пр.) команд имеет смысл разрабатывать только для реализации в кремнии, а виртуальная машина должна основываться на логических абстракциях, вроде: функция, список, транзакция и т. п. |
Автор: | iz56 [ 20 июл 2012, 06:04 ] |
Заголовок сообщения: | Re: PlutOS |
Я хочу заложить возможности для развития . На счёт минимального набора - нужен базовый минимальный вариант ВМ (предполагается что остальные инструкции могут отсутствовать - а ОС должна запуститься - остальные инструкции приложения смогут сами добавить - аля микрокод IA32). А стека и регистров не было и не будет. Единственно что многозадачность в базовом варианте есть - но под сомнением её нужность. Проблема , что код операции размером 32 бита и добавить новых инструкций можно много - а сейчас нужно выбрать такой хитрый базовый набор , что б и охватить побольше и саму виртуальную машину не раздуть - это я о себе беспокоюсь - мне же её переписывать под разные хостовые ОС и разные режимы x86. Ссылка на тему с моей ВМ и ОС для неё: http://osdev.ru/viewtopic.php?f=4&p=6951#p6951 |
Автор: | Freeman [ 20 июл 2012, 09:56 ] |
Заголовок сообщения: | Re: PlutOS |
iz56 писал(а): остальные инструкции приложения смогут сами добавить - аля микрокод IA32). Это уже похоже на обычные ОС с той лишь разницей, что библиотечные функции именуются микрокодом. iz56 писал(а): Проблема , что код операции размером 32 бита и добавить новых инструкций можно много - а сейчас нужно выбрать такой хитрый базовый набор Немного неверная постановка. Как уже говорил, нужно стремиться придумать "теорию всего", и байт-код станет ее реализацией. Ты ведь наверняка уже знаешь, что в твоей системе "хорошо", а что "плохо". Запиши это и анализируй. Если абстрагировать только классы операций, основных кодов будет всего 7-10, остальное -- подтипы и параметры. Подтипы и префиксы, если будут, можно упаковать вместе с командами в 16 или 32 бита. В ARM вроде так? Как пример плохого проектирования можно вспомнить GW-BASIC, в котором все процедуры назывались операторами, потому что "так проще". На самом же деле, как понимаю, его байт-код не позволял описывать именованные процедуры, отчего концепция и вышла куцей. В то время реализация Бейсика еще не претерпела изменений при переносе с мини-ЭВМ на персоналки, и разработчики наверняка хвалились, что-де их Бейсик может работать даже на xx КБ ОЗУ, в упор не видя, что на IBM PC было xxx КБ, и вопрос экономии памяти в ущерб возможностям уже не стоял. Freeman писал(а): виртуальная машина должна основываться на логических абстракциях, вроде: функция, список, транзакция и т. п. Вчера после своих слов полез смотреть, как сделан LLVM, который все так хвалят. Похоже, что именно так. Его Университет Иллинойса делает как-никак, а не красноглазая "швабода" с костылями в голове. |
Автор: | Yoda [ 20 июл 2012, 13:15 ] |
Заголовок сообщения: | Re: PlutOS |
Всё больше прихожу к выводу, что хорошая виртуальная машина должна в корне отличаться от физической архитектуры. Так, многие явления виртуальной машины следует оставлять "за кадром", т.е. как непринципиальные, оставляться на усмотрение физической реализации. Так, например, с точки зрения ВМ совершенно не важно, где и как передаются параметры функций, как осуществляется взаимодействие между процессами и т.д. Также можно пренебречь эффективностью (плотностью) кодирования кода. 1. Действительно не должно быть стека, а регистры должны быть в форме неограниченного количества временных переменных. 2. Не должно быть никаких специфически машинных инструкций, типа ввод/вывод, прерывания, RDMSR и вообще, – только работа с данными (как можно более абстрактными), ветвления и вызовы. Из специфически машинных, я бы, вероятно, оставил бы только поддержку атомарности операций, – без неё не сделать многопоточной работы. 3. Это должен быть байт-код для эффективной обработки, хранения и оптимизации процедур в памяти. LLVM всем хороша, кроме того, что это всё-таки текстовая машина и требует синтаксического разбора. Она позиционируется, как промежуточный язык, но на мой взгляд это как раз неудачный подход. Получается сначала компиляция с языка (синтаксический разбор) в язык (второй синтаксический разбор) и потом генерация кода. Байт код позволил бы практически избавиться от второго синтаксического анализа. А так виртуальная машина получается ближе к скриптовым языкам. А вот хорошая бинарная виртуальная машина как раз очень идеально подошла бы в качестве промежуточного уровня между синтаксическим анализом и генерацией кода – для разделения фронтенда и бэкенда при компиляции с любого языка в любую архитектуру. |
Страница 6 из 9 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |