vak: (Улыбка)
[personal profile] vak
RetroBSD попал под лошадь в видеожурнал BSD Now.
Аж целых три с половиной минуты народ прикалывался над возможностью втиснуть многозадачность в 128 килобайт памяти.

Date: 2015-12-25 10:44 (UTC)
From: [identity profile] kondybas.livejournal.com
А про Кернигана и Ричи им в детстве забыли рассказать...

Date: 2015-12-25 10:57 (UTC)
From: [identity profile] samohingleb.livejournal.com
Самый "маленький" (по используемой памяти) Unix написан для atmega 8 bit. Использует всего около 2К SRAM. Но по большому счету в сравнении с RetroBSD студенческое шаловство...
Пруф - http://www.fayloobmennik.net/5636661

Date: 2015-12-25 20:19 (UTC)
From: [identity profile] samohingleb.livejournal.com
Спасибо :)

Странно, но вроде Unix v1 портирую. С одного языка ассемблера на другой переписываю. Само собой не без модификации обходится...

Мне ваша идея порта RetroBSD очень понравилась. И я тоже решил что-нибудь сделать такое для микроконтроллеров, но начал с простого.
Edited Date: 2015-12-25 20:33 (UTC)

Date: 2015-12-25 22:58 (UTC)
From: [identity profile] samohingleb.livejournal.com
>Дело в том, что в архитектуре Atmel AVR память RAM не может быть выполняемой (executable).
Поэтому никаким образом не получится поместить программу пользователя с диска в память и ее выполнить.

Это так, гарвадская архитектура. С "внешнего диска", вроде 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) и вашим журналом, нахожу здесь много чего интересного :)
Edited Date: 2015-12-25 23:12 (UTC)

Date: 2015-12-31 00:48 (UTC)
From: [identity profile] samohingleb.livejournal.com
Да, это так все, из разряда "просто доказать", что невозможное возможно, не более. Плюс, наверное, еще желание поизучать гениальную идею Кена Томпсона, начиная с истоков, и через практику - просто перепилить старую Unix v1, да и все. Но знаний по ОСям еще пока маловато. Думаю, книжки нужно продолжать читать.

Спасибо, вроде мыслю подключиться к вам с компиляторами.
Очень сейчас заботят идеи Ритчи, то есть это его самый первый "старый и дремучий" компилятор Си, сильное желание "разобраться", сурово и по-мужски :) В нем. Узнать что и как там уютно устроено-обустроено. Но для его освоения, я думаю, переписать на ANSI Си, и перепилить генератор кода для PIC32. Вот это как раз подойдет, как кажется, чтобы размахнуться и помахать немного крыльями. :) В общем, получится, что благодаря ANSI Си будет возможность кросс-компиляция с чего угодно. Даже если это не всем угодно. Многие старые программки Reseach Unix'ов смогут снова свободно зажить и начать резвиться на RetroBSD. По задумке, вроде все складно. И получится как бы неплохая теория-практика. Я так думаю, что я к вам загляну на огонек retrobsd.org, как только напишу, что задумал, вот :)

Date: 2016-01-01 20:25 (UTC)
From: [identity profile] samohingleb.livejournal.com
Не, обе книжки имеются в наличии. Первую почитываю местами на русском, валяется в lib.ru, но, к сожалению, перевод весьма и весьма неточный, приходится заглядывать в оригинал. Вторая только в оригинале. Но всеравно сейчас они для меня просто пока остаются чистым теоретическим опусом, без работы и изучения на живой ОС, кажется, ничего в голове не задерживается.

Кстати, слышал, что при работе над ДЕМОС среди участников ходила переводная иностранная литература по юниксу. Переведенный 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 (я немножко не эктраверт).
Edited Date: 2016-01-01 20:28 (UTC)

Date: 2016-01-02 10:09 (UTC)
From: [identity profile] samohingleb.livejournal.com
Ну да, ну да. Как-то в воспоминаниях http://gorod.tomsk.ru/index-1284111232.php противоречиво написано. То как бы там все практически переводил Леонид Бурштейн, то там же написано, что это были "курсанты" . Я уже, наверное, не удивлюсь, учитывая сказанное вами, что под полным UNIX Programmer's Manual в рассказе подразумевался http://www.lib.ru/MAN/DEMOS210/allman.txt . Спасибо за уточнения.

И за информацию. В особенности за https://github.com/sergev/bk0012/tree/master/toolchain/ccom Будем смотреть.

Хм, проект БК0012. Вроде там у них (БКшников-юниксофобов :) уже зародилось альтернативное течение. Будут, возможно, что-то строить на основе полной симуляции разогнаного 1801вм1, отреверсированного. Ну это так сказано, к слову, со стороны наблюдателей.

Date: 2015-12-25 23:59 (UTC)
From: [identity profile] archaicos.livejournal.com
Так это, впендюрить эмулятор MIPS! :)

Date: 2015-12-26 13:41 (UTC)
From: [identity profile] samohingleb.livejournal.com
Выложил на GitHub'е. https://github.com/SamohinGleb/DemoPhoenixU1
Если интересно...

Date: 2015-12-31 00:53 (UTC)
From: [identity profile] samohingleb.livejournal.com
Ну, это мой первый блин комом. Код очень не причесанный. И лучше сразу, наверное, глянуть оригинал, там понятней, вот он в ссылках: https://code.google.com/p/unix-jun72
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V1

Вообще я уже давно пересмотрел весь сайт vak.ru и не только. Не все пока могу понять. Но очень впечатлен всеми вашими достижениями.