OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 24 Январь, 2019 15:54

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: lock-free A2
СообщениеДобавлено: Пятница, 21 Февраль, 2014 20:56 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7947
Откуда: Троицк, Москва
Готовится новая версия ядра A2, говорят, lock-free, типа, "революционно".

Завершение работы -- дело недель (реализатор будет защищать по ней кандидатскую).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Пятница, 28 Ноябрь, 2014 16:42 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 564
Есть какая-нибудь доступная информация? Или революцию отменили?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Пятница, 28 Ноябрь, 2014 18:31 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 304
Откуда: Москва
Новая версия с кооперативной многозадачностью вместо вытесняющей.
Ядро и компилятор поменяли, т.е. добавили новую версию ядра "cooperative".
Все драйверы теперь надо переводить с прерываний на поллинг, может затянуться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Пятница, 28 Ноябрь, 2014 18:44 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 564
а где на это можно посмотреть


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Пятница, 28 Ноябрь, 2014 18:52 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 564
нашел


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Пятница, 28 Ноябрь, 2014 19:25 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 564
может есть не в репозитории eth, с тезисами, обосновывающими революционность такого подхода.
Я думаю, что здесь вне не так просто, потому что, как минимум, у блоков есть модификатор UNCOOPERATIVE и это позволяет предположить, что вытесяняющая многозадачность никуда не делась


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Суббота, 29 Ноябрь, 2014 09:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7947
Откуда: Троицк, Москва
Kemet писал(а):
это позволяет предположить, что вытесняющая многозадачность никуда не делась
Можно предположить off hand, что осталась не столько полноценная вытесняющая многозадачность, сколько некие следы её, из которых полноценную не восстановить, но и без них трудно, и которые при этом не гробят верифицируемость.
В таком духе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Понедельник, 01 Декабрь, 2014 10:34 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 304
Откуда: Москва
Модификатор UNCOOPERATIVE сообщает компилятору, что не надо ставить точки передачи управления Activities.Switch.
Код:
(** Performs a cooperative task switch by suspending the execution of the current activity and resuming the execution of any other activity that is ready to continue. *)
(** This procedure is called by the compiler whenever it detects that the time quantum of the current activity has expired. *)
PROCEDURE Switch-;


Info21 писал(а):
не столько полноценная вытесняющая многозадачность, сколько некие следы её

Разработчик утверждает, что ядро Interrupt-free, т.е. не использует вытесняющую многозадачность.
Но драйверы сидят на прерываниях
Код:
                PROCEDURE &Init*;
                BEGIN
                        last.ch := 0X; (*last.key := 0X;*) last.flags := {0..31};
                        Objects.InstallHandler(SELF.HandleInterrupt, Machine.IRQ0+1)
                END Init;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Понедельник, 01 Декабрь, 2014 19:55 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 564
Собственно, как осуществилась революция можно понять по следующему коду(из компилятора):
Код:
      
PROCEDURE VisitWhileStatement(x: SyntaxTree.WhileStatement);
VAR start: Label; true,false: Label;
BEGIN
  IF Trace THEN TraceEnter("VisitWhileStatement") END;
  IF cooperativeSwitches THEN EmitCooperativeSwitch END;
  start := NewLabel();
  true := NewLabel();
  false := NewLabel();
  SetLabel(start);
  Condition(x.condition,true,false);
  SetLabel(true);
  StatementSequence(x.statements);
  IF cooperativeSwitches THEN EmitCooperativeSwitch END;
  BrL(start);
  SetLabel(false);
  IF Trace THEN TraceExit("VisitWhileStatement") END;
END VisitWhileStatement;

Т.е. в нужных местах компилятор генерирует код переключения. Переписывать приложения в кооперативном стиле не нужно, т.е. не требуется ручная передача управления и специальное проектирование приложений.
При этом, в рамках одного ядра действует кооперативная многозадачность, но ядер может быть не одно, естественно, все может распараллеливаться и, видимо, есть балансировка нагрузки на ядра.
Введено понятие виртуальных процессоров, на которые,видимо, и происходит планирование, затем они связываются с реальным процессором/ядром.
Есть {DISPOSABLE} переменные для которых введен механизм подсчета ссылок.
Ну это я так понял, могу ошибаться, документации то нет. Но может у кого-то есть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Вторник, 02 Декабрь, 2014 20:04 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9072
Откуда: Россия, Орёл
Вот именно поэтому когда-то Active BlackBox был заморожен ))
Мы ещё тогда пошли другим путем...

Правда, утряслось в окончательную элегантную модель (имеющей подобие с A2 lock-free), только в этом году - и немного обсуждали это на прошедшей осенней конференции у Info21.

Но у нас нет компиляторной поддержки. Интересно, стоит ли о ней думать - не даёт ли это каких-то подводных камней (типа приличного замедления каждого WHILE... что придётся делать флаг WHILE [nonswitchable] для каких-то нагруженных вычислительных фрагментов).

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Среда, 03 Декабрь, 2014 12:21 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 304
Откуда: Москва
Илья Ермаков писал(а):
Интересно, стоит ли о ней думать - не даёт ли это каких-то подводных камней

Не надо переключать контекст при присвоении разделяемых данных. В A2 есть EXCLUSIVE. Компилятор ББ про это не знает, будет вставлять автоматически куда угодно.
Ну, я вставляю Co.Yield руками, куда требуется, не так их и много.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: lock-free A2
СообщениеДобавлено: Среда, 03 Декабрь, 2014 15:43 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9072
Откуда: Россия, Орёл
Да, действительно - я что-то забыл, что если точки переключения мы позволяем делать где угодно, то теряем одно из преимуществ кооперативки - ненужность EXCLUSIVE и проч.

Так что, баш на баш: или нужно явно ограничивать неделимые блоки, либо явно расставлять переключения (у нас Tasks.Pass :) ).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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