LINUX.ORG.RU

Сообщения ivan_gur

 

Опять о патентах

Форум — Talks

В последнее время прошло много дискуссий по поводу патентов на ПО. Но, оказывается, патенты в других областях науки не менее маразматичны.

Например, удивляют патенты на химические синтезы.

ivan_gur
()

Русские физики-ядерщики

Форум — Talks

Читаю "Краткий справочник по физике" авторов Карякина, Быстрова и Киреева, издание 1964 года. Натыкаюсь на интереснейший момент:

"К методам ударных волн относятся способы получения высоких температур с помощью кумулятивных взрывов. На ампулу, содержащую дейтерий или его смесь с тритием, направляются кумулятивные струи от обычного взрывчатого вещества (тринитротолуол или любое другое не менее мощное взрывчатое вещество). Возникающая при этом температура оказывается достаточной для протекания термоядерной реакции как D+T, так и LiD. При этом выделяется большое количество энергии; регистрирующая аппаратура оказывается уничтоженной.

Кумулятивный взрыв может служить запалом и в водородной бомбе (так называемые "чистые" бомбы)."

А к Ирану пристают из-за какого-то обогащения урана :)

ivan_gur
()

Микроядро (предложения)

Форум — Development

Основные недостатки микроядра:

1) Затрата времени на дополнительное переключение между задачами.

2) Трудности с синхронизацией.

Есть несколько предложений насчёт того, как от них избавиться:

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

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

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

ivan_gur
()

26 апреля - международный день ИС

Форум — Talks

Это, оказывается, не только годовщина Чернобыля. Интересно, почему защитники интеллектуальной собственности выбрали эту дату :)?

ivan_gur
()

Настройка bt8x8

Форум — Desktop

Как мне задать норму телесигнала PAL-B?

ivan_gur
()

Настройка Интернета

Форум — Linux-install

Такая ситуация: имеется локальная сеть. В ней есть сервер, у которого есть подключение к Интернету. На сервере стоит программа Traffic Inspector. Под Windows для неё есть клиентский агент, который позволяет подключиться через сервер к Интернету. Linux видит компьютеры в локальной сети, но я не знаю, как тут подключиться к Интернету...

ivan_gur
()

Пиратов распиратят

Форум — Talks
ivan_gur
()

VBA - вершина совершенства

Форум — Talks

Микрософ т делится своими соображениями:

http://www.microsoft.com/Rus/Government/Newsletters/Issue26/05.mspx

"В качестве программного обеспечения используются язык программирования Visual Basic for Applications (VBA) и табличный процессор Microsoft Excel.

Мы остановились на Microsoft Excel потому, что в этой среде можно решать разнообразнейшие задачи, а VBA был выбран нами из других языков программирования, так как он уже встроен в Microsoft Office, не требует дополнительной установки, позволяет показать детям способы написания (создания) собственного интерфейса, — поясняет О.Н. Волик."

ivan_gur
()

Продолжение: кооперативная многозадачность

Форум — Development

  Удалось сделать в userspace переключение задач за 44 такта (процессор Pentium IV Celeron). Это уже соизмеримо со временем простого выхова процедуры. Могло бы быть и меньше (порядка 11 тактов), если бы конвейер процессора не сбрасывался. Может, кому-нибудь будет полезно.

  Вот структуры данных (язык - Free Pascal):

unit threads;
interface
        const
		//размер стека в 32-х битных словах
                thr_st=1020;
        type
		//контекст задачи
                thr_task=record
			//место для стека
                        st:array[1..thr_st] of pointer;
			//параметр
			param:pointer;
			//сохранённый указатель стека
                        sp:pointer;
			//поддержка списка задач
                        next,
                        pred:^thr_task;
                end;
        var
		//выполняющаяся в данный момент задача
                thr_cur:^thr_task;

  Вот само переключение:

        procedure helper;assembler;
        asm
                mov     esp,[eax+4084] //загружаем сохранённый указатель стека
                sub     esp,8 //корректируем его
        end; //возврат произойдёт в новом стеке

        procedure schedule;assembler;
        asm
                mov     eax,thr_cur //загружаем указатель на контекст текущей задачи
                mov     [eax+4084],esp //сохраняем указатель стека текущей задачи. Потом в стек будет помещено содержимое регистра EBP и адрес возврата -> потом корректировка ESP на 8
                mov     eax,[eax+4088] //загружаем указатель на следующую активную задачу
                mov     thr_cur,eax //следующая выбранная задача становится текущей
                push    ebp //сохраняем указатель кадра стека
                call    helper //выполняем собственно переключение задач
                pop     ebp //восстанавливаем указатель кадра стека. Когда другая задача передаст управление этой задаче, она передаст его сюда.
        end;
ivan_gur
()

Кооперативная многозадачность

Форум — Development

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

У меня есть реализация кооперативной многозадачности (в данный момент для языка Free Pascal). Семафоры и передача сообщений реализованы, есть тестовые примеры.

Модуль не использует системные вызовы и привилегированные команды процессора, поэтому его можно компилировать под любую ОС.

Может, кто-нибудь ещё этим интересуется?

ivan_gur
()

Как упростить/улучшить Linux?

Форум — Development

Посмотрел исходники ядра linux 2.4-20.8. Заметил одно место, которое, ИМХО, можно сделать попроще. Это - передача аргументов и переменных среды вызываемой функцией exec программе. Довольно сложная вещь с хранением строк в памяти ядра. Предлагается следующий способ, не требующий каких-то особых действий со стороны ядра. Короче: будем передавать аргументы в файле с дескриптором равным, например, 3. Перед вызовом exec этот файл создаётся, открывается, потом удаляется из ФС функцией unlink. Затем в него пишутся аргументы, потом вызывается exec, потом вызванная программа читает из него аргументы и закрывает. Конечно, может это и не особо нужно, раз уже так реализовано, ведь проще - не всегда лучше, но, по-моему, чем меньше используется невыгружаемой памяти, тем стабильнее система. Может, у кого-нибудь ещё есть соображения по этому поводу и вообще по поводу улучшения linux?

ivan_gur
()

RSS подписка на новые темы