RetroBSD в видеожурнале
2015-12-25 01:02RetroBSD попал под лошадь в видеожурнал BSD Now.
Аж целых три с половиной минуты народ прикалывался над возможностью втиснуть многозадачность в 128 килобайт памяти.
Аж целых три с половиной минуты народ прикалывался над возможностью втиснуть многозадачность в 128 килобайт памяти.

no subject
Date: 2015-12-25 10:44 (UTC)no subject
Date: 2015-12-25 10:57 (UTC)Пруф - http://www.fayloobmennik.net/5636661
no subject
Date: 2015-12-25 19:57 (UTC)no subject
Date: 2015-12-25 19:59 (UTC)no subject
Date: 2015-12-25 20:19 (UTC)Странно, но вроде Unix v1 портирую. С одного языка ассемблера на другой переписываю. Само собой не без модификации обходится...
Мне ваша идея порта RetroBSD очень понравилась. И я тоже решил что-нибудь сделать такое для микроконтроллеров, но начал с простого.
no subject
Date: 2015-12-25 21:12 (UTC)Дело в том, что в архитектуре Atmel AVR память RAM не может быть выполняемой (executable).
Поэтому никаким образом не получится поместить программу пользователя с диска в память и ее выполнить.
Все остальное можно сделать (файловую систему, драйверы), а это никак не выйдет.
no subject
Date: 2015-12-25 22:58 (UTC)Поэтому никаким образом не получится поместить программу пользователя с диска в память и ее выполнить.
Это так, гарвадская архитектура. С "внешнего диска", вроде SD, eeprom - да, не получится. Изначально на это не рассчитывалось.
Файловая система размещается после ядра во Flash. К слову, есть еще возможность монтирования eeprom 1K, но пока драйвер не дописан, можно только считывать с нее. Для такой возможности мне пришлось немного уменьшить размер блока с 512 до 64. Нестандартно :)
А технология исполнения, примерно, такова:
Процесс исполняется с Flash при условии, что файл не фрагментирован и .text никогда не меняется , а SRAM(на каждый процесс выделяется по 256 байт, одновременно на микроконтроллере могут выполняться до 3 процессов) служит памятью для данных (.bss). В общем, процесс представляет из себя, при данной архитектуре, две раздельные памяти - до 16 Кбайт Flash и 256 SRAM. При свопе область данных (.bss) процесса (256 байт) сохраняется в выделенную область для свопа там же в SRAM,и для нового(прерванного) она восстанавливается из SRAM, Flash всегда остается неизменной, из струтур Unix для нужного процесса лишь загружается прерванная точка в счетчик команд.
Пока всего портировано 4 программы - sh (Thompson shell),cat,echo,ls (урезанная версия) плюс chdir (builtin). Но больше, наверное, ничего не будет. Интерес уже исчерпан (ассемблер притомил, да и портабельность только для семейства atmega). Хочется ознакомится с чем-то новым. Возможно с v6, а потом RetroBSD :) Кстати, постоянно слежу за успехами RetroBSD (очень рад любой победе Unix'а везде, где это можно, я большой фанат системы Unix) и вашим журналом, нахожу здесь много чего интересного :)
no subject
Date: 2015-12-25 23:59 (UTC)no subject
Date: 2015-12-26 13:41 (UTC)Если интересно...
no subject
Date: 2015-12-30 00:40 (UTC)Спасибо за ссылочку, изучу на досуге.
Я свое время для архитектуры ATmega много наваял.
К примеру, uOS: https://github.com/sergev/uos-embedded/wiki/about_ru
no subject
Date: 2015-12-30 00:50 (UTC)Просто при такой архитектуре хардвера, когда нет защиты памяти, а весь код находится в Flash-памяти и всегда доступен, юникс-подход теряет смысл. Нет никакого резона выполнять переключение процессов методом своппинга. Тут классическая RTOS самое то, что надо.
Подключайтесь к проекту RetroBSD - там есть где размахнуться! :)
no subject
Date: 2015-12-31 00:48 (UTC)Спасибо, вроде мыслю подключиться к вам с компиляторами.
Очень сейчас заботят идеи Ритчи, то есть это его самый первый "старый и дремучий" компилятор Си, сильное желание "разобраться", сурово и по-мужски :) В нем. Узнать что и как там уютно устроено-обустроено. Но для его освоения, я думаю, переписать на ANSI Си, и перепилить генератор кода для PIC32. Вот это как раз подойдет, как кажется, чтобы размахнуться и помахать немного крыльями. :) В общем, получится, что благодаря ANSI Си будет возможность кросс-компиляция с чего угодно. Даже если это не всем угодно. Многие старые программки Reseach Unix'ов смогут снова свободно зажить и начать резвиться на RetroBSD. По задумке, вроде все складно. И получится как бы неплохая теория-практика. Я так думаю, что я к вам загляну на огонек retrobsd.org, как только напишу, что задумал, вот :)
no subject
Date: 2015-12-31 00:53 (UTC)http://minnie.tuhs.org/cgi-bin/utree.pl?file=V1
Вообще я уже давно пересмотрел весь сайт vak.ru и не только. Не все пока могу понять. Но очень впечатлен всеми вашими достижениями.
no subject
Date: 2015-12-31 23:47 (UTC)Пытался размышлять на тему, как этот код можно приспособить, но не нашел применения.
Тем не менее, ровно из таких "странных" идей часто вырастают реальные проекты.
Я использую vak.ru для складирования подобных зародышей. :)
no subject
Date: 2016-01-01 00:23 (UTC)Ровно с такой же целью я начал проект RetroBSD пять лет назад - продемонстрировать, что идеи, заложенные в основу юникса, имеют смысл на современных микроконтроллерах. Просто их нужно аккуратно адаптировать к современному уровню развития технологии. Но за основу я взял не самую первую, а наоборот, в некотором смысле "последнюю" версию юникса - 2.11BSD.
Для изучения внутренностей юникса могу посоветовать пару книжек. Первая: Maurice Bach, "The Design of The Unix Operating System" - всестороннее иписание архитектуры построения системы. Вторая: John Lions, "Lions Commentary on UNIX: 6th (sixth) Edition" - глубокий анализ и комментарии к исходному коду. Обе книжки можно купить б/у на Амазоне за относительно разумные деньги.
С компилятора Си я когда-то начинал: это была моя дипломная работа. Но я бы не советовал браться за компилятор Ритчи, он далеко не лучший образец кода. Посмотрите pcc или lcc - в них есть чему поучиться. Тем более что для lcc имеется хорошая книжка: David Hanson, Christopher Fraser, "A Retargetable C Compiler: Design and Implementation". Сейчас как раз народ занялся адаптацией pcc для LiteBSD - можно приложить руку к реальной разработке.
no subject
Date: 2016-01-01 00:31 (UTC)Документация лежит в каталоге doc.
no subject
Date: 2016-01-01 20:25 (UTC)Кстати, слышал, что при работе над ДЕМОС среди участников ходила переводная иностранная литература по юниксу. Переведенный UNIX Programmer's Manual был точно (http://gorod.tomsk.ru/index-1284111232.php). Может даже был также переводная "Lions Commentary on UNIX". Но, увы, я даже тех мануалов не видел в Сети, искал, искал... ну,и про второе уж вообще упоминать нечего. Правда, все же от этого проекта, в котором вы принимали непосредственное участие, кое-что полезное осталось, это всякая интересная документация http://www.lib.ru/MAN/DEMOS210/ плюс сами исходники системы (смотрел, мало чего понял).
Следы оригинального компилятора бестипового языка B я тоже когда-то искал по Интернету. Не найдя его самого - понял, что скорее всего он утрачен. Есть только бинарные программки в образах систем v1-v6 (echo вроде на нем скомпилирован).
Очень жаль, что многое вот так просто теряется.
Да, я глянул ваш проект. Интересно, я тоже люблю обращатся к старым идеям, к якобы "отжившим" и уже несовременным, ведь по сути все новое это хорошо забытое старое, ничего нового просто так из ниоткуда не появляется, как правило.
Хочу сказать, что кажись, но уже реализация языка В наличиствует https://github.com/Leushenko/ybc , и с некоторыми малыми отличиями от оригинала. А все из-за адресуемой единицы памяти х86. Написан он на каком-то странном диалекте бэйсика. Можно, по идеи, синтезировать из вашего и его проекта, компилирующую штуку под ту самую оригинальную машину PDP-11. :) Язык B мне, конечно, по душе, Ритчи упоминает, что компилятор был весьма-весьма компактным в размере, что очень таки радует, для меня это значимое свойство. Но Си в данный момент желается больше. А lcc и pcc как проекты, по ощущениям, великоваты. Не по мне "шапка". Не знаю, может следующим проектом и будет B. Но уже сейчас я настроился поработать с Ancient C. Вот. Как закончу, и если получится, то сразу отпишу вам на retrobsd.org (я немножко не эктраверт).
no subject
Date: 2016-01-02 06:19 (UTC)Я изучал pcc по исходникам, плюс небольшая статья на английском (ftp://pcc.ludd.ltu.se/pub/pcc-docs/porttour.ps). Несмотря на объем кода, разобраться в pcc гораздо проще, чем в творении Ритчи.
Интровертность это полезное качество, помогает в работе. :)
no subject
Date: 2016-01-02 06:35 (UTC)В том числе исправлено несколько существенных багов.
no subject
Date: 2016-01-02 10:09 (UTC)И за информацию. В особенности за https://github.com/sergev/bk0012/tree/master/toolchain/ccom Будем смотреть.
Хм, проект БК0012. Вроде там у них (БКшников-юниксофобов :) уже зародилось альтернативное течение. Будут, возможно, что-то строить на основе полной симуляции разогнаного 1801вм1, отреверсированного. Ну это так сказано, к слову, со стороны наблюдателей.