NewsProductsSprinterSupportDownloadSprinter ForumAbout usLinksSite map Russian site

Russian
   >> Программирование для компьютера Sprinter
Thread views: 571 View all threadsNext thread*Threaded Mode

Pages in this thread: 1 | 2 | 3 | 4 | 5 | 6 | (show all)
Denis ParinovVIP
(Sprinter Team)
2003/05/15 03:55
Re: Фонд процедур и подпрограмм new [re: Anonymous]Reply to this post

> Да, я посмотрел. В принципе, того, что есть должно хватить для написания первых программ. Но все равно, даже в первом приближении, это не тянет на полноценную OS, если ее создание, конечно, входит в планы разработки. (управление процессами, менеджмент памяти, принципы взаимодействия с ВУ, прерывания, работа с библиотеками и т.д.).

Хм, в общем то все что здесь перечислено есть в API в том или ином виде, разве что работа с библиотеками, сейчас представлена как отдельный модуль не входящий в систему.

> Естественно, сказывается особенность архитектуры Z80 + особенности организации RAM, но все-равно какой-то абстрактный уровень обеспечиваемый OS должен быть. Не щелкать же пользователю страницы памяти?

Да, тут видимо сказывается, наследие Спектрума, т.к. многие программисты пришли именно оттуда. Поэтому, во многих программах, страничками щелкают через порты. Хотя такие функции и были вынесены в API DSS. Впрочем, мы можем решить эту проблему посредством архитектуры.


Edited by Alex_Goryachev on 2003/05/15 10:18.



Denis ParinovVIP
(Sprinter Team)
2003/05/15 03:59
Re: Фонд процедур и подпрограмм new [re: Anonymous]Reply to this post

>> Важность стандартизации мы осознали еще в самом начале и здесь многое уже сделано, получен богатый опыт, есть масса наработок и идей. Стандартных библиотек как таковых нет, но очень многое может заменить уже существующее API.

> Вот примерная схема того, что должно бы быть для начала:
http://genzyme.narod.ru/os.jpg

Ну это всетаки достаточно обстрактно. :) хотя суть в целом понятна.

> В принципе, можно опустить уровень OS, и использовать функциональность DSS + BIOS но разобраться в таком случае с представлением ВУ (ведь позволять прикладному программисту писать/читать в порты - плохая затея

на самом деле, Sprinter, достаточно гибок и имеет массу возможностей. Т.е. порты в которые пишет и читает программа, на самом деле - виртуальные и редиректятся ПЛМ в реальные порты. Т.е. у нас есть возможность перенаправлять порты, trap-отся на каких-то событиях и т.п.

> к тому же, аппаратная конфигурация компьютера может меняться после прошивки ПЛМ) Вдруг поменяются адреса портов ВУ? Тогда можно лишь подгрузить другую библиотеку/драйвер и уже существующее ПО не заметит изменений.

Да, идея совершенно правильная. И кроме этого у нас всегда есть возможность, включить ту конфигурацию ПЛМ под которую писалась программа. Хотя конечно злоупотреблять этим нестоит.

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

> Это намек? ;)

Как говорится "инициатива наказуема" :)
Я просто хотел сразу обозначить нашу проблему, дабы мы не тратили время на обсуждение общих очевидных вещей, а перешли сразу к конкретике.

> Да, на самом деле очень интересно, ведь по сути дела для данного компьютера нужно создавать весь спектр ПО с нуля. Ведь для "взрослых компьютеров" практически все уже давно написано, а здесь огромное поле для экспериментов. Главное - нашелся бы тот, кто это оценит, не обязательно в материальном плане.

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




Anonymous
(Unregistered)
2003/05/15 15:10
Re: Фонд процедур и подпрограмм new [re: Denis Parinov]Reply to this post

In reply to:

Хм, в общем то все что здесь перечислено есть в API в том или ином виде, разве что работа с библиотеками, сейчас представлена как отдельный модуль не входящий в систему.




Хм, начнем по порядку:
1. Управление процессами
Кто и как инициирует и завершает процессы? Как обеспечивается первичное распределение памяти и расположение данных загружаемого процесса в памяти а так же загрузка и размещение процессов - потомков данного процесса? И вообще, какая концепция ОС реализована или будет реализована? Многозадачность, многопоточность?

2. Управление памятью.
Я так понимаю, процесс сам должен заботиться о выделении памяти, ее очистке, причем это делается через абсолютную страничную адресацию. Хм, это не есть гуд. Все это должна выполнять OS. Я пока плохо разобрался с архитектурой памяти Sprinter'а. Но на первый взгляд, она достаточно гибкая, учитывая то, что нет никаких механизмов аппаратной трансляции адресов, виртуальных адресных пространств и т.д. Нужно каким-либо образом унифицировать доступ к памяти с возможностью адресации через менеджер OS с использованием дескрипторов. Естественно, придется дифференцировать все на дальние и ближние вызовы (как в DOS). Все это при поддержке жестких технологических стандартов на разработку даст более-менее приемлемую гибкость и универсальность.

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

4. Прерывания.
Я, кстати, не нашел, как с этим дела в Sprinter'е? Как и в спектруме, одно маскируемое и одно нет? По любому - обработка прерываний - прерогатива OS. Прикладные программы должны лишь реагировать на сообщения OS.

5. Работа с библиотеками.
Тут достаточно сложно. Нужна какая-то цельная концепция. Как будут выглядеть библиотеки? В виде потенциально релоцируемых модулей или статически откомпилированных под фиксированные адреса? Если использовать первый вариант, то нужно внедрять стандарт на релоцируемые библиотеки, при всем при этом, модифицируя имеющиеся средства разработки, дабы поддерживать этот механизм. То бишь, например, компиляторы генерируют объектные файлы - а линковщики либо статически связывают их, либо генерируют перемещаемые библиотеки с внедрением глобальных таблиц трансляции адресов и пр. Если же отказаться от релоцируемости, то можно использовать и тот стандарт, что уже есть (DLL), хотя тут ограничение - нельзя одновременно использовать две библиотеки, откомпилированные под одни адреса.

5. Файловая система.
Желательно иметь прозрачную поддержку разных ФС. Прозрачной она должна быть вне ОС, естественно.

Далее, когда будут реализованы вышеописанные механизмы, можно говорить о создании нормальных компиляторов, генерирующих объектный код, линковщиков, генерирующих из объектного исполняемый код, либо библиотеки в том или ином виде. В любом случае хорошо бы поиметь возможность генерации и использования скомпилированных объектных модулей дабы избежать глобальной перекомпиляции всей программы. Ну а потом можно создавать специализированные библиотеки для использования уже в прикладных программах высшего уровня.



Shaos
(Registered Developer)
2003/05/15 15:29
Re: Фонд процедур и подпрограмм new [re: Anonymous]Reply to this post

> Если же отказаться от релоцируемости, то можно использовать и тот стандарт, что уже есть (DLL),
> хотя тут ограничение - нельзя одновременно использовать две библиотеки, откомпилированные
> под одни адреса.

Поправочка. DLL для LIBMAN собственно и есть "релоцируемые"! И откомпилированы под одни адреса они также быть не могут по той же причине. В конкретные адреса библиотека садится ТОЛЬКО ПОСЛЕ ЗАГРУЗКИ. Библиотеками можно забить хоть всю память. Также мы можем насоздавать кучу совершенно независимых экземпляров одной и той же библиотеки, которые будут максимально компактно (шаг 256 байт) расположены в памяти. К тому же переключениями страниц для доступа к коду заведует LIBMAN, а вовсе не программист.


Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

Anonymous
(Unregistered)
2003/05/15 15:38
Re: Фонд процедур и подпрограмм new [re: Shaos]Reply to this post

In reply to:

Поправочка. DLL для LIBMAN собственно и есть "релоцируемые"! И откомпилированы под одни адреса они также быть не могут по той же причине. В конкретные адреса библиотека садится ТОЛЬКО ПОСЛЕ ЗАГРУЗКИ. Библиотеками можно забить хоть всю память. Также мы можем насоздавать кучу совершенно независимых экземпляров одной и той же библиотеки, которые будут максимально компактно (шаг 256 байт) расположены в памяти. К тому же переключениями страниц для доступа к коду заведует LIBMAN, а вовсе не программист.




Сорри, проглядел. Ну тогда вообще ОК. Единственный вопрос - мнеджмент памяти собственный? А должен быть OS'овый. ;)





uzWer
(stranger )
2003/05/15 17:08
Re: Фонд процедур и подпрограмм new [re: Shaos]Reply to this post

и что уже РЕАЛЬНО есть в данной библиотеке???



Alex_GoryachevAdministrator
(Sprinter Team)
2003/05/15 17:20
LIBSHAOS new [re: uzWer]Reply to this post

Последняя версия LIBSHAOS.

---
Sprinter Team
PETERS PLUS LTD

Denis ParinovVIP
(Sprinter Team)
2003/05/16 02:14
Re: Фонд процедур и подпрограмм new [re: Anonymous]Reply to this post

> Хм, начнем по порядку:
> 1. Управление процессами
> Кто и как инициирует и завершает процессы?
> Как обеспечивается первичное распределение памяти и расположение данных загружаемого процесса в памяти а так же загрузка и размещение процессов - потомков данного процесса? И вообще, какая концепция ОС реализована или будет реализована?

Процесс говрорит EXEC('program.exe');
Система выделяет память, загружает, инициализирует процесс и передает ему управление.
Процесс говорит EXIT(exitcode);
Система деинициализирует процесс, освобождает память и возвращает управление в родительный процесс + сообщает ему exitcode.

> Многозадачность, многопоточность?

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

> 2. Управление памятью.
> Я так понимаю, процесс сам должен заботиться о выделении памяти, ее очистке, причем это делается через абсолютную страничную адресацию.

Процесс говорит MALLOC(size);
Система выделяет блок памяти, помечает его как принадлежащий данному процессу и возвращает обратно его Handle.
Процесс говорит FREE(MemHnd);
Система проверяет, что блок принадлежит данному процессу и если это так - освобождает его.

> Все это должна выполнять OS.

Это уже сделано.

> Я пока плохо разобрался с архитектурой памяти Sprinter'а. Но на первый взгляд, она достаточно гибкая, учитывая то, что нет никаких механизмов аппаратной трансляции адресов, виртуальных адресных пространств и т.д.

Архитектура памяти страничная, но по средствам PLD мы може ввести и трансляцию адресов и т.п. вещи.

> 3. Взаимодействие с ВУ.
> Насколько я понял, возможно проецирование адресных пространств ВУ в адресное пространство процессора. Это хорошо.

Сейчас в адресном пространстве, есть 4 окна по 16К в каждое из которых может быть отображена любая из 256 страниц памяти.

> 4. Прерывания.
> Я, кстати, не нашел, как с этим дела в Sprinter'е? Как и в спектруме, одно маскируемое и одно нет? По любому - обработка прерываний - прерогатива OS. Прикладные программы должны лишь реагировать на сообщения OS.

Функций для обработки непосредственно прерываний сейчас нет. Прерывания обрабатывает система. Например:

Пользователь нажимает клавишу на клавиатуре, происходит прерываение, обработчик прерывания получает сканкод клавиши и передает его системе, которая обработав его складывает в очередь поступивших событий.
Процесс может сказать WAITKEY(); SCANKEY(); etс.
На что система сообщит код символ из очереди.

> 5. Работа с библиотеками.
> Тут достаточно сложно. Нужна какая-то цельная концепция. Как будут выглядеть библиотеки?

Концепция сейчас разрабатывается, это будут модули добавляемые в систему имеющие определенный интерфейс для общения с приожением.

> В виде потенциально релоцируемых модулей или статически откомпилированных под фиксированные адреса?

Пока я склоняюсь к нерелоцируемым библиотекам. Так как мне кажется сомнительным вынесение модулей небольшого объема в библиотеку. Да и создание релоцируемых библиотек потребует специальных средств их разработки.
В крайнем случае, можно будет ввести дополнительный вариант именно для небольших библиотек.

> Если же отказаться от релоцируемости, то можно использовать и тот стандарт, что уже есть (DLL), хотя тут ограничение - нельзя одновременно использовать две библиотеки, откомпилированные под одни адреса.

Собственно при страничной модели памяти - это не проблема.

> 5. Файловая система.
> Желательно иметь прозрачную поддержку разных ФС. Прозрачной она должна быть вне ОС, естественно.

Прозрачной поддержки пока нет, но она задумывается.
Есть стандартный набор вызовов CREATE(), OPEN(), CLOSE(), READ(), WRITE(), SEEK(), etc.





Shaos
(Registered Developer)
2003/05/16 09:47
Re: Фонд процедур и подпрограмм new [re: uzWer]Reply to this post

> и что уже РЕАЛЬНО есть в данной библиотеке???

в LIBSHAOS опубликовано 2 библиотеки:

- тестовая простейшая
- вывод текста шрифтом, аналогичным FN, в графическом режиме 640x480

из неопубликованного:

- FN API
- вывод текста через управляющие символы от MVG

из предполагаемого:

- поддержка популярных архивов
- поддержка популярных графических форматов

Alexander Shabarshin (shaos@mail.ru)
NedoPC Project

Edited by Shaos on 2003/05/16 09:48.



Anonymous
(Unregistered)
2003/05/16 11:07
Re: Фонд процедур и подпрограмм new [re: Anonymous]Reply to this post

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

Torn




Pages in this thread: 1 | 2 | 3 | 4 | 5 | 6 | (show all)
View all threadsNext thread*Threaded Mode
Jump to