Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 16, 2024 21:55

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
mOleg писал(а):
Может функция понадобится только через 100 часов работы? а под нее уже и память выбить, и время потратить.

A кто запрещает это дело сделать перед тем, как оно понадобится? :shock:
mOleg писал(а):
но не тогда, когда нужно не так ли.

не так. Что-то я начинаю чувствовать себя диваном...
Один простойц пример и не понадобится кем-то себя ...
Ну пусть это будет предельно просто - консольное приложение - других пока и не нужно, пусть это будет компилятор форта для понятности. И задание - запуститься, прочесть файл инициализации и выдать запрос пользователю.
Что и в какой момент эта программа получит от ОС и почему это хорошо (плохо)

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 07, 2008 19:08 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
Дескрипторами сегментов задач занимается ядро
С сегментной моделью, я так понял, уже согласились все и везде.

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 07, 2008 19:12 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
вопрос писал(а):
С сегментной моделью, я так понял, уже согласились все и везде.

нет, WingLion пока хочет плоскую модель.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 10:01 
Не в сети
Аватара пользователя

Зарегистрирован: Вт ноя 06, 2007 21:23
Сообщения: 227
Откуда: Екатеринбург
Благодарил (а): 4 раз.
Поблагодарили: 7 раз.
Да такие страсти, а чем запрсо функций нужных для приложения отличается от раннего подключения DLL? может только изменением атрибутов доступа к некоторым функциям внутри DLL?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 10:30 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Alexander писал(а):
Да такие страсти, а чем запрсо функций нужных для приложения отличается от раннего подключения DLL? может только изменением атрибутов доступа к некоторым функциям внутри DLL?

страсти, страсти!
замечу, что, например, в СПФе всего две ф-ции подключаются при запуске - все остальное только по необходимости (то есть при первом обращении к ф-ции).

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 19:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
все остальное только по необходимости (то есть при первом обращении к ф-ции).

И чем это отличается от тупого разрешения обращаться к чему угодно, если при первом обращении подключается все что просишь?
Пришел GlukService, запросил Forrmat-C, a eму в ответ - "Нате, пользуйтесь!" ;(

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 19:49 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
нет, WingLion пока хочет плоскую модель.


Eсли говорить точнее, то я опять хочу "непойми-что-и-сбоку-бантик".
Я бы сказал, что не сегментную, но страничную организацию с изменяемым размером страниц,
от 256 байт до... э... ну, типа четвертинки всей памяти системы...
А городить в ПЛИС подобие интелевской байды меня совсем не прельщает.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 20:09 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
WingLion писал(а):
Eсли говорить точнее, то я опять хочу "непойми-что-и-сбоку-бантик".
Именно. (В хорошем смысле)
mOleg тоже хочет не сегменты, а "типа сегменты" - по этому пункту можно было бы прийти к согласию и найти наиболее экономичную модель

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 20:51 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
вопрос писал(а):
mOleg тоже хочет не сегменты, а "типа сегменты" - по этому пункту можно было бы прийти к согласию и найти наиболее экономичную модель


Ну, так предлагайте! "экономичную", а то для меня экономия исчисляется только сэкономлеными ресурсами ПЛИС...

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июн 09, 2008 21:16 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
ЧТо такое на самом деле сегмент?
Это очень быстрый "Range Check", когда адресовать за границу просто не получается. Особенно он быстрый, если аппаратный.
Тo есть можно организовать сегмент как-нибудь так: :D :D

БАЗА - тот самый сегментный регистр в i86 (cs ds ...)
СМЕЩЕНИЕ - типа bх или iр
БАЗА = (ПРЕДЫДУЩАЯ_БАЗА + МАКСИМАЛЬНОЕ_ПРЕДЫДУЩЕЕ_СМЕЩЕНИЕ) ... + выравнивание :)
СМЕЩЕНИЕ = СМЕЩЕНИЕ & МАКСИМАЛЬНОЕ_СМЕЩЕНИЕ,
где & - побитовое "И"
АДРЕС = БАЗА + СМЕЩЕНИЕ (если у нас массив из 256 элементов, то БАЗА + (СМЕЩЕНИЕ & 255))

таким образом, адрес никогда не выйдет за некоторые границы, :( на самом деле, конечно, сложнее.

в i86 в защищённом режиме программа могла сформировать физический адрес, выходящий за пределы сегмента, но процессор давал прерывание.
если выйти из защищённого режима, сегмент ограничится 2 ** 16, но БАЗА может иметь какое угодно значение, даже ПРЕДЫДУЩАЯ_БАЗА + 1
что налагает сегменты один на другой (делает их незащищёнными)


Сегментная модель может быть реализована
1. аппаратно (быстро) (аппаратно выполняется часть а то и весь алгоритм, что проиходит параллельно с выполнением основного алгоритма и не расходуется лишнее время)
2. отчасти аппаратно, отчасти программно (?) - если аппаратура не позволяет
3. полностью програмно - последнее никак не отличается от программного "Range Check"

Какая лучше?

в данном случае пока предложение за mOleg

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 4OS (идеи)
СообщениеДобавлено: Сб май 08, 2010 20:19 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Сижу, перечитываю тему, а форт-процессор-то у меня уже воркает...

И имеет:
1. разрядность 16 bit (64К адресов 16-разрядных слов)
2. Стек возвратов и стек данных глубиной по 256 слов каждый.
3. 16 килобайт (8Кx16) быстрой системной памяти (Fast-RAM)
(в адресах 0x0000...0x1FFF)
4. 16 килобайт (8Кx16) дисплейной памяти
(0x8000...0x9FFF) в режиме CGA (16-bit-word = 8-bit-color-attribute+8-bit-ascii)
5. Статическая память (SRAM) - немного медленее Fast-RAM -
объем - 256Kx16=512Kбайт,
доступна страницами по 16Kx16 по адресам 0x4000..0x7FFF
6. Flash-ROM - пока без возможности записи - 4Mбайт
доступна страницами по 16Kx8 по адресам 0xC000...0xFFFF
7. страничная адресация SRAM и Flash-ROM через адрес страницы, записываемый в память по адресу 0x0009 (SRAM_PAGE) и 0x000A (Flash_PAGE).

Что хочется сделать:

1. "Как бы сегменты"
1.1. сегмент 0x0000...0x00FF - системные переменные/порты (доступны не каждому процессу, но четко распределены по функциям) Процесс может читать/писать в этой области, но в зависимости от системных установок либо запишет в devnull, либо прочитает 0x0000 там, где ему запрещено.
1.1.1 - 0x0080..0x00FF - строка, передаваемая системной функции или ответ системной функции процессу. Процесс может писать/читать эту область произвольно, но для каждого процесса этот кусочек памяти - отдельный (делается железно).

1.2 сегмент 0x00100..0x01FF(SYS_FENCE) - адреса для вызова системных функций - (доступные не каждому процессу, распределены согласно запросам к ГСИ). Читать данные из этой области процессу можно, писать в нее нельзя (блокировано аппаратно). Переход в эту область JMP или CALL приводит к вызову назначенной системной функции.
1.2.1 Адрес 0x00100 - адрес для вызова Главного Системного Интерпретатора - аппаратно при переходе в этот адрес процесс должен "проваливаться" на уровень ниже (в ОС), где происходит интерпретация запроса, переданного строкой в области системных переменных (строка - тоже переменная). В стеке данных - параметры строки запроса (addr, len). Возврат из запроса происходит по RET (можно и NEXT, но формально - это все равно).
1.3 сегмент SYS-FENCE... 0xFFFF собственная память процесса. Единый сегмент памяти, используемый процессом как ему заблагорассудится.
В него же впечатывается предоставляемая процессу страничная память.

Свойства сегментов разные, но это не проблема для ПЛИС.

Соглашения.
1. Процесс имеет доступ только к собственной памяти и к страничной памяти, предоставленной ему через ОС.
2. ОС доступно все железо, вся память и все устройства
2.1 ОС имеет доступ к памяти процесса, так как имеет в своем распоряжении доступ ко всем страницам памяти. И через этот механизм может передавать процессу и получать от процесса большие куски данных.
3. Распределение памяти между процессами осуществляется с помощью ОС через железный механизм. Процесс в этот механизм вмешаться не может. Может только вызвать ОС и "вежливо попросить - мне надо еще 128 мегабайт через текстовый запрос или вызов функции, прописанной во втором сегменте"
4. Стеки процессора находятся в полном распоряжении процесса. При передаче запроса к ОС стеки так же используются. ОС "обязана" работать со стеками корректно (иначе, это полосатый-мух, а не ОС получится). Через стеки передаются параметры для функций и запросов.
5. Глубина использования стеков ОС-ом оговаривается отдельно, и процесс "должен знать", об этом и рассчитывать свои действия так, чтобы не потерять свои данные, если ОС-у понадобится залезть в стек на полную оговоренную глубину.
В первом приближении можно установить, что глубина использования стека для ОС - не более некой постоянной величины.
6. Планируется железное обеспечение смешанной многозадачности. Процессу предоставляется один tic, он использует его полностью или частично на свое усмотрение. Если частично - возвращает управление менеджеру, если полностью, по истечении tic-a менеджер прерывает работу процесса "на самом интересном месте" и решает, кому работать дальше.

В данный момент это только план построения форт-системы к конкретной реализации форт-процессора. Реализуется он или нет, ясности еще нет.

p.s. предложения по реализации к данному плану будут рассмотрены/приняты/отклонены

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 4OS (идеи)
СообщениеДобавлено: Сб май 08, 2010 23:48 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
сегмент 0x0000...0x00FF - системные переменные/порты (доступны не каждому процессу, но четко распределены по функциям) Процесс может читать/писать в этой области, но в зависимости от системных установок либо запишет в devnull, либо прочитает 0x0000 там, где ему запрещено.

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

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

это?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 4OS (идеи)
СообщениеДобавлено: Сб май 08, 2010 23:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
В железе делается проще. табличка имеет некий размер, скажем 10 разрешенных вызовов - 10 векторов на процедуры в системной области плюс к ним 10 флагов (в крайнем случае 20 - дополнительно по два бита на адрес). И все. Железо само проверяет, попал вызов на разрешенный адрес или не попал? Попал - идем дальше, не попал - в зависимости от настроек задачи - просто возврат или пинок коленом под зад на вылет.

В общем, эти самые 2 бита на адрес и можно считать "таблицей прав". Так что нечто вроде того и должно получиться.
А размер таблицы равен количеству системных вызовов, разрешенных для задачи.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 4OS (идеи)
СообщениеДобавлено: Вс май 09, 2010 00:06 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
дрес 0x00100 - адрес для вызова Главного Системного Интерпретатора - аппаратно при переходе в этот адрес процесс должен "проваливаться" на уровень ниже (в ОС), где происходит интерпретация запроса, переданного строкой в области системных переменных (строка - тоже переменная). В стеке данных - параметры строки запроса (addr, len). Возврат из запроса происходит по RET (можно и NEXT, но формально - это все равно).
вот тут не совсе понятно, если, предположим, программа загружается как исходник, то "запроса, переданного строкой в области системных переменных" можно единожды скомпилировать ...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: 4OS (идеи)
СообщениеДобавлено: Вс май 09, 2010 01:23 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Исходник загружается менеджером в страничную память, откуда и компилируется системой. Когда компиляция закончится, производится запуск скомпилированного кода, как отдельного процесса (если этот запуск действительно нужен).

А запросы через область системных переменных передаются самими процессами, когда им нужно обратиться к системе.

Если же нужна докомпиляция в область самого процесса, то делается точно так же, с указанием того, что компилировать надо не код нового процесса, а в код вызывающего или иного дочернего.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB