User Tag List

Страница 6 из 47 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 466

Тема: Алан Кокс представил Unix-подобную ОС Fuzix, ядро которой потребляет около 40 Кб ОЗУ

  1. #51

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Прошу прощенья за пионерские вопросы - где в исходниках описываются аппаратные диспетчеры памяти? Осмотр "по диагонали" выявил только какие-то абстракции на тему простейшего управления памятью страничками по 4к. Как-то всё неочевидно, покрайней мере для непрограммиста - не просматривается прямая корреляция между аппаратными диспетчерами и дефайнами, которые там Алан сочинил и типа описал.
    Те диспетчеры, которые bank16, bankfixed - они занимаются только выделением свободной страницы создаваемому процессу. И даже не самой страницы, а её номера. Тупо отслеживают, что занято, а что нет, больше ничего не делают.

    А код, переключающий задачи (=переключающий страницы) платформно-специфичен и вынесены в ассемблерные файлы.
    Это, по-сути, пять функций:
    switchout - выполняется после того, как у процесса отбирается процессорное время.
    swithin - выполняется перед тем как процессу выдается процессорное время
    map_kernel - вернуть маппинг ядра
    map_process - подключить страницы, занятые указанным процессом
    do_fork - создать копию текущего процесса

    От их реализации и зависит всё поведение системы.

    ---------- Post added at 17:02 ---------- Previous post was at 16:59 ----------

    Цитата Сообщение от Sergey Посмотреть сообщение
    На пентеве можно юзать расширенную графику, доступ к которой можно организовать через любое окно CPU, или блоками пересылать туда из основной памяти с помощью ПДП.
    Ну тогда дело за малым.
    Последний раз редактировалось Eltaron; 17.11.2014 в 15:05.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  2. #52

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Те диспетчеры, которые bank16, bankfixed - они занимаются только выделением свободной страницы создаваемому процессу. И даже не самой страницы, а её номера. Тупо отслеживают, что занято, а что нет, больше ничего не делают.
    Я потерялся в поиске примера где в коде Алана используется архитектура вот с этой картинки:

    Код:
    	          First 64k	      Subsequent 64k banks
    	FFFF	+------------+		+------------+
        Common	|   Common   |		| Task Store |+
    	F000	+------------+		+------------+|+
    		|            |		|            |+|+
    		|   Kernel   |		|  Process   ||+|
        Banked	|    Code    |		|    Code    |||+
    		|            |		|   & Data   ||||
    		|            |		|            ||||
    	0100	+------------+		+------------+|||
    		|  Reserved  |		|  Reserved  |+||
    	0000	+------------+		+------------+|+|
    					 +------------+|+
    					  +------------+|

    Т.е. именно как оно (в каких функциях) использует диспетчер по 64к (он же 60к) для доступа к данным в другие страницы. В моем представлении это должны бы быть какие-то ассемблерные вставки, чтоли...

    Цитата Сообщение от Eltaron Посмотреть сообщение
    А код, переключающий задачи (=переключающий страницы) платформно-специфичен и вынесены в ассемблерные файлы.
    Это, по-сути, пять функций:
    switchout - выполняется после того, как у процесса отбирается процессорное время.
    swithin - выполняется перед тем как процессу выдается процессорное время
    map_kernel - вернуть маппинг ядра
    map_process - подключить страницы, занятые указанным процессом
    do_fork - создать копию текущего процесса

    От их реализации и зависит всё поведение системы.
    C этим более-менее понятно. Аналогично было и на UZIX, только функции по-другому назывались. Для UZIX эти модули я вчерне уже начинал писать, тогда не хватило упорства победить компилятор (это самая засада в программировании для Z80 на C).
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  3. #53

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Запуши лучше Алану. Надо пользоваться тем, что у проекта есть живой мейнтейнер.
    Или хотя бы в комменты к http://github.com/EtchedPixels/FUZIX/pull/4
    Хотя один фиг для этого тоже надо на гитхабе регаться [COLOR="Silver"]
    Попробую.



    ---------- Post added at 12:56 ---------- Previous post was at 12:52 ----------

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Хотя я не знаю, как на пентеве переключается экран. Если он "прибит" к текущей банке в #4000, то его тоже надо копировать, а это уже да, не круто.
    Идеальный вариант, наверное - это переключить экран на #C000 (если возможно в ATM-режиме) и щелкать только нижними тремя страницами. Тогда копирование сведется к однократному копированию таблицы векторов при старте нового процесса.
    Если я начну всё и сразу делать - то точно нифуя не получится.
    Сначала - загрузчик. Как загрузчик заработает и на консоль будет пукать, что ОС загрузилась - можно о чёмто другом говорить.

    Наполеоновские планы обычно кончаются маниловскими делами...

  4. #54

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Т.е. именно как оно (в каких функциях) использует диспетчер по 64к (он же 60к) для доступа к данным в другие страницы. В моем представлении это должны бы быть какие-то ассемблерные вставки, чтоли...
    Не, это не менеджер памяти в таком понимании. В fuzix каждый процесс фиксирован и за пределы 64к выходить не может - соответственно, никакого доступа к данным в других страницах нет.

    Единственное исключение - вызов функций ядра через RST 30H (syscall). В этом случае процесс обращается к ядру, которое может быть расположено в других банках памяти. Это специфический случай и ради него те пять функций и сделаны.

    ---------- Post added at 17:40 ---------- Previous post was at 17:34 ----------

    Цитата Сообщение от SfS Посмотреть сообщение
    Если я начну всё и сразу делать - то точно нифуя не получится.
    Сначала - загрузчик. Как загрузчик заработает и на консоль будет пукать, что ОС загрузилась - можно о чёмто другом говорить.
    Естественно. К тому же драйвер ВГ93 и для zx128 пригодится. У меня счас упрощенный вариант, работающий через хаки эмулятора. Бьюсь над тем, чтобы заставить грузиться init.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  5. #55

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Eltaron Посмотреть сообщение
    Бьюсь над тем, чтобы заставить грузиться init.
    Не забывай постить скриншоты и видео! Интересно же.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  6. #56

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    что такое за команды out (21) ?
    вроде такого порта в 128 спеке нет?

    ---------- Post added at 22:44 ---------- Previous post was at 22:40 ----------

    Насколько я помню - в спеке 128 память так распределена:

    Окно 0 - ПЗУ
    Окно 1 - стр 5
    ОКНО 2 - стр 2
    Окно 3 - СТР 0..7

    Где в ядре указано, что стр. 5 и 2 - заняты под ядро? В каком файле?

  7. #57

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    что такое за команды out (21) ?
    вроде такого порта в 128 спеке нет?
    Если ты про lowlevel-z80, то это Алан сегодня какую-то отладочную хрень закоммитил. #21 и #1 - это порты маппера и терминала на z80pack, но не помню, какой чей
    А если про zx128, то там все эти команды или закомментированы, или в начале функции ret стоит.

    Где в ядре указано, что стр. 5 и 2 - заняты под ядро? В каком файле?
    В zx128? Я там маппинг ещё не дописал. А так это должно быть в функции pagemap_init. Для страниц 2 и 5 не должна вызываться pagemap_add.
    Последний раз редактировалось Eltaron; 17.11.2014 в 19:52.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  8. #58

    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,082
    Записей в дневнике
    11
    Спасибо Благодарностей отдано 
    173
    Спасибо Благодарностей получено 
    493
    Поблагодарили
    343 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Не забывай постить скриншоты и видео! Интересно же.
    Да там немногое изменилось-то
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI YTINK 9 Channel

  9. #59

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё чуток вопросов.

    sdldz80 -n -k /usr/share/sdcc/lib/z80 -k /home/salex/apps-zx/sdcc/bin/../share/sdcc/lib/z80 -k /home/salex/apps-zx/sdcc/share/sdcc/lib/z80 -f platform-zx128/uzi.lnk
    tools/analysemap <uzi.map
    Code1: 15764 bytes
    Code2: 16081 bytes
    Code: 31845 bytes
    Data: 2992 bytes
    BSS: 0 bytes
    Initialized: 5387 bytes
    Free memory begins at: c817
    Common is at: f000
    Space: 10217 bytes
    Work room: 4830 bytes
    cp hogs.txt hogs.txt.old
    tools/memhogs <uzi.map |sort -nr >hogs.txt
    head -5 hogs.txt
    7611: _memcpy
    1663: __execve
    1062: _writei
    996: _readi
    951: _tty_inproc
    makebin -s 65536 -p uzi.ihx >uzi.tmp
    tools/binman uzi.tmp uzi.map fuzix.bin
    Code at 0x0000 (15764 bytes)
    Code2 at 0x5b00 (16081 bytes)
    Const at 0xa142 (538 bytes)
    Data at 0xa75c (8379 bytes)
    Common at 0xf000 (2492 bytes)
    Font at 0xa35c (1024 bytes)
    Video at 0x99d1 (1024 bytes)
    Discard at 0x9dd1 (881 bytes)
    End at 0xfdbc
    1. У тебя в комментах написано, что ты снёс вё ядро ниже 0xC000. Что для 128К и нужно. Common at 0xf000 (2492 bytes) - это выше 0xC000. Так и надо?

    2. Какая страница должна быть впечатана в окно 4 при инициализации ядра?

    3. Задача загрузчика - просто включить RAM в 0x0000 - 0xFFFF, поместить бинарь с адреса 0x0000 и сделать jp 0x0000 ? Или через регистры какието параметры ядру передаются?

  10. #60

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Eltaron, ты не закоммитил platform-zx128/devfd.h

    без него ветка мастер не компилится.

    У тебя свой репозиторий на https://github.com/atsidaev, как я понимаю?

    Может создадим там же отдельную ветку для пентевы, а ты в мастер будешь сливать по своему усмотрению?

    Я уже прикинул, что надо отделять конфиг от мэйкфайла. плюс скрипты и platform-zxpentevo.
    Последний раз редактировалось SfS; 18.11.2014 в 09:14.

Страница 6 из 47 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Куплю БК 0010 или подобную машинку в Украине
    от LeBohdan в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 06.07.2008, 23:29
  2. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  3. Ответов: 16
    Последнее: 02.08.2005, 12:20
  4. Ответов: 10
    Последнее: 18.02.2005, 17:45

Ваши права

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