spf/linux by ~yz

89 messages Options
Embed this post
Permalink
1 2 3 4 5
Andrey Cherezov

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Groshev!

Ваше сообщение от 24.02.2008 22:29:
А реентерабельность 
реализуется легко - исключением глобальных переменных и
прочих глобальных структур. Делов то.
    
Да, давайте исключим регистры процессора. Делов-то. ;-)
  
Да, они исключаются еще легче - сохранением контекста процессора.
В прерываниях и потоках сохраняется "автоматически", а там, где не
сохраняется - ничто не мешает сохранить.
Асинхронные сигналы в Виндах есть.
    
Какие именно?
  
Например, PostThreadMessage ;)
Ставил и такое - снёс в первый же день. Не все дистры одинаково полезны. ;-)
  
Ну это само-собой, ведь далеко не все дистро-собиратели с прямыми руками, да? ;)
Не говоря уж о дистро-пользователей :) А вот NT можно ставить любую, с NT4 96го года
до свеженькой Win2008 - и все будет нормально. Там есть одно золотое правило - не
ставить сверху хакерских поделок третьих фирм (не MS), типа firewall'ов всяких, и всё
будет нормально. А если еще и отключить неиспользуемые сервисы, то вообще железно.
Т.е. с NT можно обладать и кривыми руками, только поменьше ими махать :)
Если лишние знания о Линуксе уважаемому сэру ни к чему, то мне пустая говорильня не нужна и подавно - я, кажется, уже упоминал что в этом забеге моей лошади нет.
Ну, линуксовый SPF это тоже не то что бы моя лошадь. Но "Это наша лошадь" (произносится с интонацией братков из мультфильма "Алеша Попович" :)
У нас тут не маленький забег, а большое поле, которое мы вместе пашем несколько лет. Многие пришли со своими конями, улучшили породу наших :)
Если ты пришел постоять в сторонке, раздавая отвлеченные советы, то лучше проходи мимо.
Я действительно в нутре линукса смыслю достаточно мало (практики мало), без подробностей, поэтому и не лезу эту часть делянки сильно пахать. Но на подсобных работах - ну подковать там - вполне могу. Мишин LinuxSPF довел до уровня юзабельности и _расширяемости_ и совместимости на трех осях (мелкими правками), может и в posix-spf что-нибудь починю, или по крайней мере замечу незамыленным глазом какую-то неисправность. Imho, это все же полезней, чем твоя позиция.
 Если же сэр всё-таки пожелает узнать о чём же собственно идёт речь в нашем странном диалоге, эту информацию можно найти по уже упомянутой ссылке:
http://www.gnu.org/software/libtool/manual/libc/Nonreentrancy.html
  
Запиши и URL нашей дискуссии для будущих ссылок :)
"Реентерабельность функций из того же потока" - "бред
воспаленного мозга"? А как насчет рекурсии? ;)
    
А никак. Не надо путать божий дар с яичницей.
  
Я не путаю, а цитирую тебя. Реентерабельность (=повторновходимость) "функции из того же потока" - это фактически обращение к самой себе (как еще может дважды войтись функция из ТОГО же потока управления?), а это есть рекурсия.
Рекурсивная функция вызывает саму себя из чётко определённых точек - тем и жива. Если некто третий начнёт втыкать вызовы куда попало - то можете, наверное, представить себе результат.
  
Некто третий - это уже отдельный поток (включая обработчики прерываний). В пределах одного потока третьему больше неоткуда взяться, т.к. всё линейно.
Если речь об обработке прерываний, о колбэках из оси в
пользовательский код (а оттуда обратно в ось), то это
    
Вот именно о них и речь. То, что в Линуксе это называется "сигнал", сути дела не меняет.
  
Меняет. Прерывание - это отдельный поток с автоматическим сохранением контекста процессора, ничто не мешает при этом сохранять весь контекст прерванного потока, системы, и чего угодно. Конечно, в какой-то категории прерываний (от таймера, допустим) это можно не успеть сделать, да это и не нужно в таких случаях. А в рассматриваемом случае - исключения самого процессора - нет причин жить без SEH. Я уверен, что и в юниксе это понимают, и что-нибудь для этого сделали. Кто-нибудь знает, и может подсказать. Хорошо будет, если ты.
Плохая практика тупого перезапуска процесса при сбое распространена и в Windows, но большинство осведомлены, что это крайний случай (если программисты разных уровней системы не смогли создать соотв. механизм), а не нормальный.
Увы, но "почти" не считается - контекст исполнения остаётся тот же самый, и если прерванная функция чего-то там заблокировала, а обработчик сигнала к этому обратится, то поток будет ждать самого себя - разумеется, вечно. Отсюда и нереентерабельность.
  
Не разумеется, а только если "автор потока" не знает, как эту ситуацию обрабатывать. Отдельный вход в функцию вне рекурсии - на уровне системы это отдельный поток управления, и его легко, даже элементарно, засечь и обработать.
Отдельный стек для сигналов, кстати, в Линуксе надо попросить через sigaltstack(). И просить его придётся - иначе обработка переполнения стека закончится не начавшись.
  
Вот, похоже, первое предложение в нашем трёпе, заслуживающее внимания.
Нет, там другая причина - Win32 подсистема с ним дружить не приучена.
  
А зачем им дружить? Все подсистемы - win32,os/2,posix,dos - между собой не общаются. Могли бы (через ядро), но нет наверное большой нужды. Каждому своё - кому обязательно нужно posix, используют Interix; кому этого мало (cygwin) - как-то справляются поверх win32; а остальные просто считают, что win32 лучшая из виндовых подсистем, её и используют.
Я вообще-то в курсе, какими способами и через какое место в виндах эмулируется fork() - случилось изучать вопрос. В курсе и что народ от этого плюётся - очень уж сильно медленнее это в виндах работает.
  
Я не в курсе, как эмулируется в win32 fork, но я бы эмулировал через флаги секций exe. Да, это разумеется медленнее родной многопоточности, т.к. так как еще один процесс все же запускается (дисковых операций и памяти только требуется меньше, чем при "обычном" запуске), а это в винде дороже, чем в линуксе. А в линуксе дороже, чем в досе. И что? NTFS наменого медленнее чем FAT, но все равно мы используем NTFS. Что-то проигрываем, но что-то и выигрываем.
зачем в posix'е тогда потоки сделали?
    
Наверное, для тех случаев, когда от них бывает польза.

Просто когда из инструментов один молоток - то повсюду мерещатся гвозди; а когда есть ещё и отвёртка, то среди гвоздей начинаешь различать шурупы. :-)
  
Золотые слова! :)
Ну, в этом вопросе я как-то более склонен верить Линусу Торвальдсу. Не нам учить его писать операционки. ;-)
  
Почему бы и не пообщаться на эту тему. Требования к осям диктует в т.ч. и наша практика. Мы с ним ровесники, и опыт программирования у нас "одинаковой длинны" :), а насчет толщины можно подискутировать (с Линусом, не с тобой: его-то "лошадей" мы видели, он наших тоже может посмотреть, а твои лошади последний раз пахали в 1999м?).

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Yakimov-2
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Yakimov!

Ваше сообщение от 24.02.2008 10:49:
первые "брендовые" линуксы). Потом оказалось, что можно пошантажировать 
ими MS. По-моему, сейчас задача свержения винды с десктопов является 
основной целью (судя по активности этих проектов). Деструктивная по сути 
задача - разъединение объединенного Биллом мира :) 
    
Я бы это назвал естественным отбором :)
  
Это не вносит дополнительной ясности. Все в этом мире естественно - в рамках физических законов :)
Искусственный отбор (селекция) и искусственный интеллект - тоже вполне себе естественны.
Когда (и если) Linux 
и Маки отвоюют хотя бы по 10%, начнется закручивание лицензионных гаек в 
MS-стиле. 
    
Не уверен что много можно накрутить когда треть софта под gpl3 лицензией.
  
Можно сколько угодно. Примеры перелицензирования из свободных в несвободные лицензии уже были.
Достаточно перекупить или по-другому "перемотивировать" ведущих разработчиков.
Старые GPL-версии никто у народа, конечно, не отнимет, но поддерживать их без ведущих разработчиков будет сложно - проще заново написать.
Всегда будут стабильные которые стоят немного денег (но включают тех 
поддержку) типа SLED и тестовые бесплатные типа OpenSuse. Т.е. 
тестрование системы это плата за пользование. Мне нравится такая модель.
  
Лицензирование и монетизация открытых проектов - отдельный большой разговор или тема для статьи.
А открыто бесплатно тестироваться сейчас наловчились все, независимо от лицензии - вон даже винду массово обкатывают перед выпуском, некоторым даже доплачивают за это.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Dmitry Groshev-2

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Приветствую!

Andrey Cherezov пишет:
> Да, они исключаются еще легче - сохранением контекста
> процессора.

Т.е., читать и думать не хотим и не будем? Ну и ладно.

> >> Асинхронные сигналы в Виндах есть.
> > Какие именно?
> Например, PostThreadMessage ;)

С Вами, сэр, всё ясно. ;-)

> Не говоря уж о дистро-пользователей :) А вот NT можно
> ставить любую, с NT4 96го года до свеженькой Win2008 - и
> все будет нормально. Там есть одно золотое

А вот фантастику я лучше на Самиздате почитаю. :-)

> Если ты пришел постоять в сторонке, раздавая отвлеченные
> советы, то лучше проходи мимо.

Увы - опять забыл, что некоторые люди учатся только на своих ошибках. Спасибо что напомнил.

> Запиши и URL нашей дискуссии для будущих ссылок :)

А смысл? Ничего нового в области бессмысленного флейма ты не изобрёл. ;-)

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

Ну вот когда поймёшь "откуда взяться", тогда и всё станет ясно. Надеюсь.

> нет причин жить без SEH. Я уверен, что и в юниксе это
> понимают, и что-нибудь для этого сделали. Кто-нибудь знает,
> и может подсказать. Хорошо будет, если ты.

Ну вот - то мои "отвлеченные советы" не нужны, то опять нужны - тебя не поймёшь... ;-)

Своим решением поделюсь, мне не жалко: нужен вам SEH - сделайте, это несложно. По реализации даю три подсказки.
Подсказка первая: sys_modify_ldt() может работать из-под юзера, так что создать эквивалент виндового TIB и запихнуть его адрес в FS вам никто не помешает. Или можете использовать для той же цели ячейку в родной Линуксовой TLS (использует регистр GS), но эта фича появилась сравнительно недавно и в старых версиях ядра и glibc отсутстует.
http://people.redhat.com/drepper/tls.pdf
http://people.redhat.com/drepper/nptl-design.pdf
Подсказка вторая: из обработчика сигнала надо возвращаться в ядро, поэтому вызывать Фортовый обработчик исключения надо не напрямую, а через подмену адреса возврата в сохранённом контексте.
Подсказка третья: в Wine SEH реализован, можете посмотреть как - исходники под LGPL.

Стандартная Линуксовая механика обработки исключений заточена под С++, использует специальные секции ELF и для Форта не подойдёт.
http://refspecs.linux-foundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html

> Вот, похоже, первое предложение в нашем трёпе, заслуживающее внимания.

Ну так тебя же, не меня, пробило на гон по вопросу, в котором не разбираешься и разбираться не желаешь. Просто спросил бы вместо этого, что делать с исключениями - я бы давно ответил и не терял бы напрасно время.
Сил же никаких нету смотреть, как по граблям топчетесь... ;-)

> посмотреть, а твои лошади последний раз пахали в 1999м?).

Ну, мой нынешний открытый проект популярен несколько поболее твоего. ;-)
Но Форт я, действительно, забросил. :-( Ибо надоели, в конце концов, игры со стеком. Да и некогда - mtPaint не бросишь раз уж взялся, а два проекта в свободное время не потянуть.


-= With best regards, Dmitry Groshev =-


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
1001

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Groshev-2
Dmitry Groshev пишет:
> Какой дистрибутив? Хочется знать, от чего держаться подальше. :-)
> Лично у меня MOPS Linux 5.1 надёжен как скала.
>
>  
omg! Бедная слака!
и до тебя пряморукие добрались..

~1001


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
On Sun, 24 Feb 2008 20:01:02 +0200
Andrey Cherezov <[hidden email]> wrote:

> Добрый день, ygrek!
>
> Ваше сообщение от 24.02.2008 17:51:
> > WordByAddr поломанный, поэтому идёт вложенный segfault при дампе стека
> > возвратов. Пока отключил его в дампе, чтобы хотя бы по адресам можно
> > было ориентироваться.
> >  
> Он не поломанный - в винде же работает (SEH на то и 'structured'). Это в
> Linux'е с
> вложенными segfault может быть проблема (пряморукий Dmitry Groshev поможет
> авось).
Я помню что на оригинальной версии видал полный дамп. Что-то поломалось.

--
 ~ygrek


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Andrey Cherezov

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Groshev-2
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Groshev!

Ваше сообщение от 25.02.2008 21:44:
Асинхронные сигналы в Виндах есть.
        
Какие именно?
      
Например, PostThreadMessage ;)
    
С Вами, сэр, всё ясно. ;-)
  
Почему нельзя считать PostThreadMessage асинхронным сигналом? Вот мне они эту службу служат. Или ты спрашивал гвозди заданного образца? Ну так уточнил бы вопрос чтоли.

Если ты пришел постоять в сторонке, раздавая отвлеченные
советы, то лучше проходи мимо.
    
Увы - опять забыл, что некоторые люди учатся только на своих ошибках. Спасибо что напомнил.
  
Нет, я учусь не только на своих ошибках. На ошибках Игрека, Юры, Миши, Рувима, Кости, Димы (Якимова) и т.д. тоже. Даже на ошибках Линуса и БГ временами :)
Ошибки - это побочные эффекты ДЕЛ. А к чему нам советы, не проверенные на практике? Такие советы навредить могут (как минимум времязатратами на их проверку).
Запиши и URL нашей дискуссии для будущих ссылок :)
    
А смысл? Ничего нового в области бессмысленного флейма ты не изобрёл. ;-)
  
Ссылка пригодится тебе для иллюстрации, как можно раззадорить линуксоида и получить от него немножко пользы.
Ну и конечно для иллюстрации, как некоторые тупые фортеры (я конкретно) ничерта не смыслят в терминологии и еще в чем-нибудь, и при этом имеют наглость спорить с линуксоидами и даже десятилетиями продавать свои никчемные неправильные творения.
понимают, и что-нибудь для этого сделали. Кто-нибудь знает, 
и может подсказать. Хорошо будет, если ты.
    
Ну вот - то мои "отвлеченные советы" не нужны, то опять нужны - тебя не поймёшь... ;-)
  
Отвлеченные (типа объяснения терминов) не нужны. А практические в той области, в которой я ни собак ни ел, ни пудов соли - нужны.
Но лучше в виде готового кода для posix-spf.
Своим решением поделюсь, мне не жалко: нужен вам SEH - сделайте, это несложно.
Эх бережешь ты своих лошадей :) Но все-таки - значит SEH в линуксе возможен? Уже хлеб :) Но мне почему-то кажется, что SEH в юниксе и так должен присутствовать в каком-то виде, хотя бы для системных нужд.
 Или можете использовать для той же цели ячейку в родной Линуксовой TLS (использует регистр GS), но эта фича появилась сравнительно недавно и в старых версиях ядра и glibc отсутстует.
  
В SPF мы уж несколько лет как отказались от использования TLS (имена в SPF остались по традиции, но функции TLS не используют) , а в линуксе только что написали? Неужели и впрямь так старательно взялись за эмуляцию винды?
http://people.redhat.com/drepper/tls.pdf
http://people.redhat.com/drepper/nptl-design.pdf
  
ОК, спасибо, может и пригодится.
Подсказка вторая: из обработчика сигнала надо возвращаться в ядро, поэтому вызывать Фортовый обработчик исключения надо не напрямую, а через подмену адреса возврата в сохранённом контексте.
  
Тут не понял. Из обработчика аппаратного исключения в винде тоже надо возвращаться в ядро. Это нам не мешает использовать для обработки форт. Почему в линуксе мешает? Опять ту ссылку читать?
Подсказка третья: в Wine SEH реализован, можете посмотреть как - исходники под LGPL.
  
В самом деле, идея - проверить, работает ли SEH в wine также как в Windows. Если по другому (проще) не выйдет, можно будет подсмотреть, как это сделали.
Все лучше, чем дизассемблировать (что мне пришлось делать при расковыривании виндового SEH, т.к. на тот момент не было никакой другой информации о его реализации).
Ну так тебя же, не меня, пробило на гон по вопросу, в котором не разбираешься и разбираться не желаешь. Просто спросил бы вместо этого, что делать с исключениями - я бы давно ответил и не терял бы напрасно время.
Сил же никаких нету смотреть, как по граблям топчетесь... ;-)
  
Так убери грабли. Я юрину критику поддержал, чтобы на линуксоидах шапки загорелись. И они загорелись! (перечитай как я радостно встречал первые типичные ответы - раздувал огонь :) Я бы, конечно, предпочел довести уровень ожега до выпадения из них конкретного кода, но, чтож, не всегда срабатывает, ладно.
Ну, мой нынешний открытый проект популярен несколько поболее твоего. ;-)
  
С каких пор тебя популярность волнует? Винда вот популярнее юникса, а ты её не уважаешь за это.
Ты какие проекты хоть сравниваешь? mtPaint и SPF? Зачем тогда преувеличивать, на sf ведь статистика открыта, и каждый может проверить.
А вообще, если уж сравнивать, то форты с фортами (или хотя бы языки с языками), а рисовалки с рисовалками.
Но Форт я, действительно, забросил. :-( Ибо надоели, в конце концов, игры со стеком.
Да ты и не был фортером, если стек оставался проблемой.
 Да и некогда - mtPaint не бросишь раз уж взялся, а два проекта в свободное время не потянуть.
  
А какой у тебя критерий "пора закрыть проект" или "пора уйти из проекта"? С фортом понятно, стек надоел. Но ведь в mtPaint'е могут пикселы надоесть (или тот же стек где-нибудь вылезет наружу). Почему не бросишь на этот раз?

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by 1001
Some javascript/style in this post has been disabled (why?)
Добрый день, 1001!

Ваше сообщение от 25.02.2008 22:20:
Лично у меня MOPS Linux 5.1 надёжен как скала.  
    
omg! Бедная слака!
и до тебя пряморукие добрались..
  
А, MOPS - это Slackware? А то на mops.ru мне вместо линукса собак втюхивают, на
mops.org матерей дошкольников (а у меня своя матерь дошкольников уже давно есть).
Слэкварь знаю года с 95го - это был первый "брендовый" Linux, привезенный нашими
немцами (по сети тогда еще было нереально скачать такие большие по тогдашним
меркам вещи), его в Германии SUSE двигала, позже сваявшая собственный дистр.
При смене работы в 96м я оказался в лапах RedHat, поэтому потом "опустился" до FC,
и несколько лет выслушиваю, что это только для тестеров, а не для таких криворуких как я :)
А я всего-то включаю в них сеть (для чего приходится ставить поддержку PPTP, словно
кроме меня никто его не использует), ставлю mc и wine, и обычно больше ничего не трогаю.
И честно говоря не вижу никакой разницы в стабильности разных дистров. Есть микро
различия в удобстве установки, и всё.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Groshev-2
Ваше сообщение от 24.02.2008 22:29:
> Если лишние знания о Линуксе уважаемому сэру ни к чему, то мне пустая говорильня не нужна и подавно - я, кажется, уже упоминал что в этом забеге моей лошади нет. Если же сэр всё-таки пожелает узнать о чём же собственно идёт речь в нашем странном диалоге, эту информацию можно найти по уже упомянутой ссылке:
> http://www.gnu.org/software/libtool/manual/libc/Nonreentrancy.html
>  
Да, это стоило прочесть сразу :-)))
Не могу поверить, что ты всерьез можешь кому-то её рекомендовать!!!
ВСЁ, что там написано, любой программист знает как минимум с DOS-времен,
потому что это справедливо для любой ОС (даже CP/M). В нашем SPF-DEV
точно нет таких, кто вычитает там хоть один новый факт!
И если там есть противоречия с тем, что я говорил, то ткни пальцем
конкретно, пожалуйста.

Нового там ничего нет (кстати, точно такими словами писали в учебниках
про обработку прерываний (от клавиатуры и таймера) в DOSе - "измени
счетчик (таймер) или помести скан-код в циклический буфер (клавиатура),
выставь флаги и немедленно верни управление!"; на практике я последний
раз делал это в 94м году в ForthEditor 2.5 - по приколу обрабатывал
клавиатуру именно через прерывания). Но сейчас поспорить в этой странице
есть с чем. Как раз с этим классическим советом:
The best practice is to write a handler that does nothing but set an
external variable that the program checks regularly
уже можно не согласиться. То что было справедливо в DOS'е и "досе на
стероидах", не обязательно справедливо в современной ОС. На то оно и
прерывание, что требует немедленной реакции и возврата решения, что с
этим прерыванием делать (а не в стиле Скарлетт "я потом подумаю"). Если
событие не срочное, то система не будет прерывать задачу (себе дороже),
а сама превратит "синхронное" прерывания в асинхронное событие (наличие
которого program checks regularly или получает по подписке на события) и
через соответствующие механизмы программе и передаст - через системные
или специализированные очереди входящих событий. Там никаких проблем с
реентерабельностью нет даже в нереентерабельной среде. И best practice в
этом случае вовсе не check regularly, а сидеть себе тихонько на
wait-функции, и не греть попусту процессор своими регулярными чеками.
Когда будет что чекать - поток разбудят. Если по какой-то причине
приходится таки регулярно чекать, то современный программист вовсе не
радуется, что использует best practice, а страдает от этой тупой
заморочки и ищет пути замены чеканья спящим ожиданием (в серверном софте
это особо актуально, поэтому могу привести примеры, в каких местах
Eserv'а я эту вынужденную якобы 'best practice' стараюсь изжить; а в
SPF'е, к счастью, таких бед и вовсе нет).

Слушай, я давно так не злился в ответ на "помощь" :) Я понимаю, что это
неблагодарно и невежливо, но подсовывание учебников для, как говорит моя
жена, "5й класс вторая четверть" - это тоже большое неуважение к
взрослому человеку. Это ведь даже не 5й класс, из 5го-то я может что-то
и подзабыл, а тут вообще начальная школа - это там обсуждают различия
push/poll/pub-sub моделей в обработке событий. Будем считать, что ты
меня специально разыгрывал в ответ на поджиг твоей шапки. Тогда ладно.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
1001

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Andrey Cherezov пишет:
> Добрый день, 1001!
>
> Ваше сообщение от 25.02.2008 22:20:
> А, MOPS - это Slackware? А то на mops.ru мне вместо линукса собак
> втюхивают, на
> mops.org матерей дошкольников (а у меня своя матерь дошкольников уже
> давно есть).

www.mopslinux.org


>
> И честно говоря не вижу никакой разницы в стабильности разных дистров.
> Есть микро
> различия в удобстве установки, и всё.
>

увы, это так.



~1001


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Dmitry Groshev-2

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Приветствую!

Andrey Cherezov пишет:
> Почему нельзя считать PostThreadMessage асинхронным
> сигналом?

Потому что пока поток не вызвал GetMessage, ему от этого "сигнала" ни холодно ни жарко. В отличие от.

> Ошибки - это побочные эффекты ДЕЛ. А к чему нам советы, не
> проверенные на практике? Такие советы навредить могут (как
> минимум времязатратами на их проверку).

Ладно, впредь буду помнить - пока не обделаетесь, советы вам ни к чему. ;-)

> наглость спорить с линуксоидами и даже десятилетиями
> продавать свои никчемные неправильные творения.

Ещё чем-нибудь похвастайся, авось полегчает.

> Но лучше в виде готового кода для posix-spf.

У вас свой проект, у меня свой. Я и о том, что вообще вмешался, уже три раза пожалел.

> возможен? Уже хлеб :) Но мне почему-то кажется, что SEH в
> юниксе и так должен присутствовать в каком-то виде, хотя бы
> для системных нужд.

Читать надо было внимательней - то, что для системных нужд, завязано на специальные секции ELF.
Впрочем, если сумеете как-то приспособить - честь вам и хвала.

> Тут не понял. Из обработчика аппаратного исключения в винде
> тоже надо возвращаться в ядро. Это нам не мешает
> использовать для обработки форт.
> Почему в линуксе мешает? Опять ту ссылку читать?

Читать надо man 2 signal - до возврата из обработчика повторные сигналы блокируются. Если это не мешает - можно обрабатывать и до возврата.
Впрочем, через sigaction() можно установить обработчик и без такого блокирования.

> С каких пор тебя популярность волнует? Винда вот популярнее
> юникса, а ты её не уважаешь за это.

Ну, на помериться... проектами опять-таки пробило тебя, не меня. А как вышла незадача, так сразу отмазки? ;-)

> Ты какие проекты хоть сравниваешь? mtPaint и SPF? Зачем
> тогда преувеличивать, на sf ведь статистика открыта, и
> каждый может проверить.

Ну так и проверь - сколько народу скачало то и другое, за месяц, за год и за всё время. Заодно можешь число упоминаний в Гугле сравнить.

> А вообще, если уж сравнивать, то форты с фортами (или хотя
> бы языки с языками), а рисовалки с рисовалками.

Напишешь рисовалку - сравним. :-)

> Да ты и не был фортером, если стек оставался проблемой.

Ну, значит, не был. Не состоял, не участвовал. Партбилет куда положить? ;-)

> А какой у тебя критерий "пора закрыть проект" или "пора
> уйти из проекта"? С фортом понятно, стек надоел. Но ведь в
> mtPaint'е могут пикселы надоесть (или тот же стек
> где-нибудь вылезет наружу). Почему не бросишь на этот раз?

Потому что _пока_ не надоело, разумеется. Ещё не всё сделал, что хотел - и ещё не расхотел делать.


-= With best regards, Dmitry Groshev =-


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Dmitry Groshev-2

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Приветствую!

Andrey Cherezov пишет:
> И если там есть противоречия с тем, что я говорил, то ткни
> пальцем конкретно, пожалуйста.

Первый абзац. "the handler can be called asynchronously, at unpredictable times perhaps in the middle of a primitive function, or even between the beginning and the end of a C operator that requires multiple instructions."

То есть сигнал доставляется именно как аппаратное прерывание. Чего ты упорно понимать не желал.

> Если событие не срочное, то система не будет прерывать
> задачу (себе дороже), а сама превратит "синхронное"
> прерывания в асинхронное событие (наличие которого program
> checks regularly или получает по подписке на события) и
> через соответствующие механизмы программе и передаст -
> через системные или специализированные очереди входящих

В Линуксе такие "превращения" делаются уже на уровне библиотек, а не ядра. Сигналы - это то, _что_ надо превращать, а не то _во_ что.

> Когда будет что чекать - поток разбудят.

Вот именно. Есть такое слово - sigsuspend() ;-)

> Слушай, я давно так не злился в ответ на "помощь" :) Я

А я давно так не жалел что не остался спокойно наблюдать со стороны. Думаешь, мне делать нечего кроме как маны пересказывать? Да ещё, как в поговорке, "медленно и дважды"?

Мне глубоко пофиг, что с твоей точки зрения лучше сделано - винды или Линукс. Это _твоя_ точка, и твоё право выбрать себе любую. Но вот то, что ты не владеешь информацией, но зачем-то принимаешься спорить не по делу - это как раз и есть "большое неуважение к взрослому человеку" (С) твой.


-= With best regards, Dmitry Groshev =-


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Groshev-2
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Groshev!

Ваше сообщение от 26.02.2008 3:34:
Andrey Cherezov пишет:
  
Почему нельзя считать PostThreadMessage асинхронным
сигналом?
    
Потому что пока поток не вызвал GetMessage, ему от этого "сигнала" ни холодно ни жарко. В отличие от.
  
На то он и асинхронный, что не лезет куда попало. Но я могу оставить поток висеть на GetMessage, и заниматься другими делами в другом потоке - и сделать этому другому жарко, когда первого разбудят. Т.е. реализовать любое поведение, какое взбредет в голову. Если мне нужно "сразу жарко", то я могу заказать у системы колбэк (асинхронные варианты - без ожидания возврата - есть у большинства "долгих" функций винды), но тогда сам колбэк - это уже фактически прерывание - т.е. уже синхронное событие.
Впрочем, через sigaction() можно установить обработчик и без такого блокирования.
  
Значит ничто не мешает обрабатывать как в винде, так?
Ну, на помериться... проектами опять-таки пробило тебя, не меня. 
Нет, разговор о популярности ты поднял. А меня интересовал только твой вклад в наше поле,
ты в курсе где мы общаемся.
Ну так и проверь - сколько народу скачало то и другое, за месяц, за год и за всё время.
За всё время - сопоставимо (с SPF). Но ты посмотри все наши SPF-проекты (там же на sf.net) -
чем ближе к простому юзеру, тем популярнее ес-но. Даже прокси обгоняет рисовалку.
Напишешь рисовалку - сравним. :-)
  
Рисовалок и без меня хватает. А по категориям можно там же на sf.net сравнить -
mtPaint'а не видно в топах raster-based, а мы в compilers и interpreters попадаем на первую страницу,
хотя в raster-based 17 страниц, а у нас 146.
Ну, значит, не был. Не состоял, не участвовал. Партбилет куда положить? ;-)
  
Вот сюда:
https://lists.sourceforge.net/lists/listinfo/spf-dev
  


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Groshev-2
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Groshev!

Ваше сообщение от 26.02.2008 3:37:
Первый абзац. "the handler can be called asynchronously, at unpredictable times perhaps in the middle of a primitive function, or even between the beginning and the end of a C operator that requires multiple instructions."

То есть сигнал доставляется именно как аппаратное прерывание. Чего ты упорно понимать не желал.
  
Это из чего следует, что не желал? Я же сам и приводил дамп вылета spf-posix по такому сигналу, с чего разговор и начался.
В Линуксе такие "превращения" делаются уже на уровне библиотек, а не ядра. Сигналы - это то, _что_ надо превращать, а не то _во_ что.
  
Это как? Исключение процессора или нажатая кнопка сразу имеет вид линуксового сигнала? (в винде на той же машине тоже? :)
Или мы уже на уровне схемотехники обсуждаем? :)

Или ты имеешь в виду, что в линуксе любой залётный SPF может установить свой вектор на любое прерывание, перекрыв системный вектор?
Я конечно ожидаю досовых глупостей от доса на стероидах, но не до такой же степени.
Когда будет что чекать - поток разбудят.
    
Вот именно. Есть такое слово - sigsuspend() ;-)
  
Ты это автору той странички скажи, чтоб не морочил голову молодежи.
Мне глубоко пофиг, что с твоей точки зрения лучше сделано - винды или Линукс. Это _твоя_ точка, и твоё право выбрать себе любую.
А пофиг, так сиди в сторонке тихонько, не мешай работать. Умел же когда-то и помочь - помнишь linux stub года три назад? - хорошая вещь получилась.
На этот раз не очень вышло. Ну нет так нет. Сдавай партбилет или оставайся наблюдателем, но помни какой я нетерпимый к расшатыванию партии и политическим вопросам. Не первый раз ведь нарываешься. По остальным вопросам я и сам обычно молчу в тряпочку, восхищаясь мудрыми мыслями (и особенно commit'ами) коллег. Вот Игрек не трындел тут с нами, а пошел и починил кое что из замеченного.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Dmitry Yakimov-2

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
Andrey Cherezov wrote:
>>  
> Ты это автору той странички скажи, чтоб не морочил голову молодежи.
>> Мне глубоко пофиг, что с твоей точки зрения лучше сделано - винды или Линукс. Это _твоя_ точка, и твоё право выбрать себе любую.
> А пофиг, так сиди в сторонке тихонько, не мешай работать. Умел же
> когда-то и помочь - помнишь linux stub года три назад? - хорошая вещь
> получилась.

Мне почему-то всегда казалось что это я его сделал. Видимо неправильно
казалось :)

Дмитрий.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

linux stub

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Добрый день, Dmitry Yakimov!

Ваше сообщение от 26.02.2008 11:42:
А пофиг, так сиди в сторонке тихонько, не мешай работать. Умел же 
когда-то и помочь - помнишь linux stub года три назад? - хорошая вещь 
получилась.
    
Мне почему-то всегда казалось что это я его сделал. Видимо неправильно 
казалось :)
  
Пошел, проверил. (Хорошо, что во время последней агитации за этот stub я сохранил
копию на sf.net: http://downloads.sourceforge.net/spf/lnxstub.zip). Не исключаю, что это ты,
но тогда ты сделал сразу несколько опечаток в фамилии:

;Linux ELF stub loader (C) 2005 by Dmitry Groshev
;Distributed under GNU LGPL
;To use, add your executable code to the end of assembled stub; when resulting
;file is run, stub will load your code and pass control to its 0th byte.
;Code 'll be loaded into a contiguous memory block of "lamemem" bytes in size
;at fixed base address 0804A000h with readable/writable/executable permissions.
;On top of stack, your code will receive address of GOT, and under it, every-
;thing else Linux passes to an ELF executable.
;GOT contains:
;+00 DD address of DYNAMIC
;+04 DD reserved
;+08 DD reserved
;+12 DD address of dlopen()
;+16 DD address of dlsym()
;+20 DD address of dlvsym()
;What your code will do with all of this, is entirely up to you.

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

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Andrey Cherezov

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by ygrek-3
Some javascript/style in this post has been disabled (why?)
Добрый день, ygrek!

Взял твои изменения, добавил свои (spf-asm.f и несколько в branch-linux-port) -
регистры, слэши и LTL, теперь можно делать описанный ранее фокус -
скомпилировать под виндой spf4.o, скопировать на линукс, слинковать,
и полученным spf4 еще раз скомпилировать spf4, т.е. без jpf и без wine.
Это хороший тест, чтобы убедиться, что базовые механизмы работают.
В прошлый раз этот второй spf4 уже не запускался, а сейчас запускается,
и им можно еще раз скомпилить самого себя, и т.д.

А вот SAVE из этих spf4 не работает, и в исходном юрином тоже (ERROR #2)
Чего ему не хватает - еще не смотрел.

P.S. Размер файла spf4 - 66606 ;) (под ubuntu)

Ваше сообщение от 24.02.2008 17:51:
Больше похоже на мой косяк :)
VOC-LIST неправильный был с учётом >VIRT
Теперь VOCABULARY работает ок, но tools.f всё равно сбоит
    
Теперь tools.f подключается и работает :)
Добавил >VIRT в 'DROP который попадает в noopt.f
  


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Yuriy Zhilovets

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Andrey Cherezov пишет:

> При смене работы в 96м я оказался в лапах RedHat, поэтому потом
> "опустился" до FC,
> и несколько лет выслушиваю, что это только для тестеров, а не для
> таких криворуких как я :)
> И честно говоря не вижу никакой разницы в стабильности разных дистров.
> Есть микро
> различия в удобстве установки, и всё.

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

Ю. Жиловец


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Yuriy Zhilovets

Re: windows/linux holy war

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Yakimov-2
Если мы почитаем всяких гуру, например, Реймонда, то увидим, что
использование потоков - совсем не unix-way и осуждается им как
противоречащее дизайну системы (см.
http://www.catb.org/~esr/writings/taoup/html/ch07s03.html#id2923889).
Однако же мы видим, что вопреки этим гуру кто-то все-таки запихал их
зачем-то в ядро. Очевидно, они кому-то понадобились.
Интересно, как уважаемый т. Грошев объяснит эти противоречия.

Ю. Жиловец


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Yuriy Zhilovets

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Some javascript/style in this post has been disabled (why?)
Andrey Cherezov пишет:
А я не знал, что такое есть в Реболе :) 
Очень любопытный язык, кстати. Сочинен неким Carl Sassenrath, кое-что взято от Форта (умение создавать новые диалекты). Сильно повышен уровень языка, в качестве элементарных типов данных добавлены, например, имена файлов и URL.

Поэтому можно написать
do %file.r
а можно
do http://site.ru/file.r

Ю. Жиловец


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: spf/linux by ~yz

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
On Wed, 27 Feb 2008 05:26:46 +0200
Andrey Cherezov <[hidden email]> wrote:

> В прошлый раз этот второй spf4 уже не запускался, а сейчас запускается,
> и им можно еще раз скомпилить самого себя, и т.д.

Отлично!
Может тогда уже слить в trunk?
 
> А вот SAVE из этих spf4 не работает, и в исходном юрином тоже (ERROR #2)
> Чего ему не хватает - еще не смотрел.

Для сохранения там вызывается shell-скрипт который вызывает линковщик
системный - ищет в каталоге save. Ошибка #2 - т.е. файл не найден -
т.е. наверное так и есть.
Кстати возможно имеет смысл этот shell скрипт с ld-файлами вкомпилить
внутрь бинарника и доставать по необходимости..

> P.S. Размер файла spf4 - 66606 ;) (под ubuntu)

Надо ещё 60 байт найти :)

--
 ~ygrek


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
1 2 3 4 5