OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 15:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Пятница, 25 Июнь, 2010 12:12 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
igor писал(а):
id_ler писал(а):
... совместными усилиями ...
Всегда скептически относился к такому настрою.
Перевод программы с высокоуровнего ЯП на низкоуровневый для меня актуальна, а сыпать мелкими вопросами, мало относящимися к теме форума, не хочется. Может быть, точнее сказать, что тема инлайн-ассемблера, в частности, и низкоуровнего программирования, вообще, редко поднимаются на данном форуме(подходы другие). Поэтому, тут нужно какое-то принципиальное решение, что ли. До какой степени низкоуровневое программирование поддерживается? А дизассемблирование – это частный случай.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 25 Июнь, 2010 13:13 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
id_ler писал(а):
Читал, что в других системах применяется генерация ассемблерного листинга из высокоуровнего кода
В Бутылке из высокоуровневого кода генерируется универсальное промежуточное представление, а уж из него соответствующий BackEnd генерирует машинный код. Промежуточный код можно даже просмотреть в случае необходимости (специальный ключ компилятора).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 28 Июнь, 2010 22:29 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 247
id_ler писал(а):
Декодер из Бутылки(какой был)
Может быть, получится переписать его под ВВ совместными усилиями, не откладывая в долгий ящик.

У меня тоже появлялась мысль, что более современный декодер из Бутылки мог бы ускорить FPU-вычисления в ББ или избавить от непредсказуемых скачков быстродействия ББ, типа http://forum.oberoncore.ru/viewtopic.php?f=2&t=787&p=11691#p11691.
Однако, опыт показывает, что простые тесты с вычислениями с плавающей точкой работают под WinAos примерно с такой ве скоростью, как и под БлэкБоксом (A2 не пробовал). Поэтому не уверен, что перепись под ББ бутылочного декодера имеет большой смысл. Или идея заключается в чем-то другом?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 28 Июнь, 2010 23:17 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Народ! Я совсем не осведомлен. О какой Бутылке речь?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 28 Июнь, 2010 23:24 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
BlueBottle aka AOS aka A2
Операционная система реального времени, разработанная для многопроцессорных систем, продолжающая развиваться, на которой уже реализовано несколько успешных проектов. В основе ActiveOberon - расширения Oberon2 для поддержки многопоточности в рамках единого пространства памяти (нет аппаратной защиты сегментов и переключения между ними). Защита происходит на уровне языка (рантайма). Соответственно системные вызовы в 15 раз быстрее чем у QNX.

Официальный сайт.
Так же есть приложение эмулятор WinAOS, которое позволяет запускать A2 под виндой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 06:53 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Madzi писал(а):
BlueBottle aka AOS aka A2
Операционная система реального времени, разработанная для многопроцессорных систем, продолжающая развиваться, на которой уже реализовано несколько успешных проектов. В основе ActiveOberon - расширения Oberon2 для поддержки многопоточности в рамках единого пространства памяти (нет аппаратной защиты сегментов и переключения между ними). Защита происходит на уровне языка (рантайма). Соответственно системные вызовы в 15 раз быстрее чем у QNX.

Официальный сайт.
Так же есть приложение эмулятор WinAOS, которое позволяет запускать A2 под виндой.

Спасибо. Но выделенное не совсем понятно. Как такое может получиться? Неужели аппаратная защита настолько тормозит? Я писал ось, знаю всю кухню изнутри от аппаратуры. Мы тоже аналогично отказались от защиты памяти и простым call вызывали API (которые сами тоже написали).
И еще. Защита на уровне языка - как понимать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 07:20 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
[quote="Валерий Лаптев]Спасибо. Но выделенное не совсем понятно. Как такое может получиться? Неужели аппаратная защита настолько тормозит?[/quote]
Насколько тормозит, лично я не замерял, но:
1) на переключение аппаратно поддерживаемых потоков тратится время?
сохранение селекторов, переключение контекста сегмента и т.п...

[quote="Валерий Лаптев]Я писал ось, знаю всю кухню изнутри от аппаратуры. Мы тоже аналогично отказались от защиты памяти и простым call вызывали API (которые сами тоже написали). И еще. Защита на уровне языка - как понимать?[/quote]
Понимать так, что если писать исключительно на Active Oberon, без попыток добраться до "неположенных областей" с помощью встроенного ассемблера, то компилятор и рантайм позаботятся о том, чтобы этот код не влез в чужой и наоборот.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 10:56 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Madzi писал(а):
Валерий Лаптев писал(а):
Спасибо. Но выделенное не совсем понятно. Как такое может получиться? Неужели аппаратная защита настолько тормозит?

Насколько тормозит, лично я не замерял, но:
1) на переключение аппаратно поддерживаемых потоков тратится время?
сохранение селекторов, переключение контекста сегмента и т.п...
Системный вызов - это не только переключение контекста с приложения пользователя на ядро. Это ещё и проверки различных прав, для чего ядру нужно обратиться к соответстующим сервисам, расположенным в другом кольце защиты (операционная система-то микроядерная, и почти вся она представлена пользовательскими приложениями). Думаю, 15 раз - это наихудший случай, который только смогли найти те люди, которые сравнивали эти операционные системы. Обычно их отношение не так контрастно. А вот в сравнении с линуксом такого большого разрыва во времени обращения к системному вызову уже не будет наблюдаться: дополнительные переключения контекстов будут отсутствовать, и ядро будет отрабатывать быстрее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 11:03 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
Valery Solovey писал(а):
А вот в сравнении с линуксом
А с чем же сравнивали как не с линуксом? Может Вы имели в виду миникс?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 13:01 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
Valery Solovey писал(а):
Думаю, 15 раз - это наихудший случай, который только смогли найти те люди, которые сравнивали эти операционные системы.


Приведу цитату из вики:


Переключение контекста и производительность писал(а):
Кроме того, что очень важно, при переключении контекста происходят следующие программно-незаметные аппаратные действия, влияющие на производительность:

* Происходит очистка конвейера команд и данных процессора
* Очищается TLB, отвечающий за страничное отображение линейных адресов на физические

Кроме того, следует учесть следующие факты, влияющие на состояние системы:

* Содержимое кеша (особенно это касается кеша первого уровня) накопленное и «оптимизированное» под выполнение одного потока оказывается совершенно неприменимым к новому потоку, на который происходит переключение.
* При переключении контекста, на процесс, который до этого долгое время не использовался (см. Swapping), многие страницы могут физически отсутствовать в оперативной памяти, что порождает подгрузку вытесненных страниц из вторичной памяти.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 14:14 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Ярослав Романченко писал(а):
Valery Solovey писал(а):
А вот в сравнении с линуксом
А с чем же сравнивали как не с линуксом?
Madzi писал, что сравнивали с QNX.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 14:24 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
bohdant писал(а):
Приведу цитату из вики...
Контекст, включая кеш, - это да. Тут было где потерять в производительности.

А вот касаемо подкачки страниц... Думается, что в любой операционной системе скорость активации вытесненных страниц по времени принципиально не различается. Следовательно, логично предположить, что этот момент в сравнении не участвовал: 1) сложно достоверно утверждать, что страницу вытеснили, и 2) в процессе подгрузки страницы большую часть работы выполняет железо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 14:28 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
Valery Solovey писал(а):
Думается, что в любой операционной системе скорость активации вытесненных страниц по времени принципиально не различается. Следовательно, логично предположить...

В том то и дело, что в А2 нету страниц - используется плоская модель памяти


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 14:44 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
bohdant писал(а):
В том то и дело, что в А2 нету страниц - используется плоская модель памяти
Если мне не изменяет мой склероз, то пока в PC-шках не появилась плоская модель памяти, понятие "страница памяти" для этих компьютеров отсутствовало. С другой стороны, не берусь утверждать, что плоская модель есть только одного типа. С третьей стороны, назначение РТОС - в предсказуемости действий во времени. А подкачка эту предсказуемость сильно портит. Возможно, по такому поводу в A2 её и не включали.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 19:29 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
- В плоской модели памяти сегментов нет; страницы - есть. Страница - это единица управления для блока виртуальной памяти (т.е. единица свопа, единица прав чтения-записи и т.п.) Хотя да, в Бутылке, в которой даже от свопа отказались, их, видимо, нет. Там и менеджер памяти классический Обероновский (насколько я смотрел 2 года назад), он и в ББ тот же, в общем-то. Отказ от свопа для ниши Бутылки, кстати, дальновидное решение - с сегодняшней-то памятью...

- по поводу сравнений с QNX и т.п. Тут надо не забывать, что модель процессов без общей памяти, взаимодействующих через сообщения (которую имеют микроядерные ОС) прозрачно распределяется по сети. Это очень важный момент; а вот параллелизм над общей памятью - не очень важный, за пределами задачи встроенных графических и мультимедиа терминалов, под которую, собственно, и точится А2.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 29 Июнь, 2010 21:49 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Обсуждение параллелизма в А2 отделено:
viewtopic.php?f=31&t=2722


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 30 Июнь, 2010 23:07 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 247
Кстати, при компиляции в WinAos выдается сообщение
Цитата:
i386 code generator installed
Т.е. декодер в A2 по сути получается такой же, как и в БлэкБоксе??


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 13 Июль, 2010 22:01 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 247
bohdant писал(а):
В Бутылке просто в "проводнике" кликнув по модулю открывается декодер. Плюс есть дополнительные опции компилятора позволяющиее простматривать генерируемый llvm-код.

Как-то сразу не обратил внимания: т.е. Active Oberon-овский компилятор генерирует код для llvm??


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 14 Июль, 2010 07:37 
Аватара пользователя

Зарегистрирован: Суббота, 15 Март, 2008 20:00
Сообщения: 297
Откуда: Київ, Україна
QWERTYProgrammer писал(а):
bohdant писал(а):
В Бутылке просто в "проводнике" кликнув по модулю открывается декодер. Плюс есть дополнительные опции компилятора позволяющиее простматривать генерируемый llvm-код.

Как-то сразу не обратил внимания: т.е. Active Oberon-овский компилятор генерирует код для llvm??


Извиняюсь, я ошибся. Компилятор генерирует промежуточный код: "Oberon Compiler Abstract Intermediate Code", который напоминает llvm.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB