Куда делась плавающая точка? =(

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Куда делась плавающая точка? =(

Непрочитанное сообщение Alex Keda » 2009-03-05 8:33:50

Код: Выделить всё

srv# cat /var/db/resusage/txt/h1200.all.txt
0 0 0
0 0.9 3
0.5 1.1 3
0 0 0
0.8 1.1 3
0 0 0
0.7 1.1 3
0.1 1.1 3
0 1.1 3
0 1.1 3
0.4 1.1 3
0.6 1.1 3
1.3 1.1 3
0 1.1 3
0.6 1.2 3
1.4 1.1 3
srv#
srv#
srv#
srv# cat /var/db/resusage/txt/h1200.all.txt | awk '{cpu += $1; mem += $2 }; {print cpu, mem}'
0 0
0 0
0 1
0 1
0 2
0 2
0 3
0 4
0 5
0 6
0 7
0 8
1 9
1 10
1 11
2 12
srv#
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Куда делать плавающая точка? =(

Непрочитанное сообщение Alex Keda » 2009-03-05 9:02:33

в русской локали, разделитель - запятая.
закрыто =)
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делать плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 12:05:33

чего ж закрывать
можно продолжить флейм про то какая бсд не полноценная
и что в ядре к примеру нельзя делать операции с плавающей точкой))))

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Куда делать плавающая точка? =(

Непрочитанное сообщение Alex Keda » 2009-03-05 12:08:57

а зачем тебе они в ядре?
Убей их всех! Бог потом рассортирует...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 12:16:45

ну это вопрос насчет "что такое полноценная ОС" )))
в винде например в ядре можно использовать операции с плавающей точкой
в бсд что то ни вкакую((((
в линухе незнаю.....

Аватара пользователя
chd
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-01-06 21:09:50
Откуда: msk

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение chd » 2009-03-05 12:45:32

а для чего в ядре float? чего считать надо интересно..
chd,
Have fun!

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 12:49:13

ну мне float нужен был для драйвера
там уровень сигнала нужно было перевести
в итоге конечно выкрутился и сделал на %
но имхо бред
что нельзя заюзать плавающую точку
это недописаная ОС
если она не умеет этого)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 13:10:27

Код: Выделить всё

zg# cat 1.c
#include<stdio.h>

int main(void)
{
  float d = 1.000009;
  printf("%.20f\n", d);
  return 0;
}
zg# cc 1.c -o 1.bin && ./1.bin
1.00000894069671630859
zg#
флоат как флоат, не лучше не хуже :unknown:

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 13:12:21

ты модулем сделай)))
что бы в ядре
а не в приложении верхнего уровня

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 13:20:58

paradox писал(а):ты модулем сделай)))
каким макаром? скажи как, может попробую -))
paradox писал(а):а не в приложении верхнего уровня
странно, вроде операции с плавающей запятой давным давно появились в процах :unknown:

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 13:23:55

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

да возьми любой модуль в бсд
какой то сетевки с которой ты работаешь
выгрузи его с ядра
попробуй собери отдельным модулем
что бы работала и загружалась
ну и все
дальше попробуй простой
флоат и принтФ )))
расскажешь как там оно....

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 13:36:30

Код: Выделить всё

zg# pwd
/usr/src/sys
zg# grep -ir float net*
net/route.c:     * one more rtentry floating around that is not
net/route.c:             * One more rtentry floating around that is not
netatm/spans/spans_kxdr.h:extern bool_t xdr_float(XDR *, float *);
netinet/sctp_bsd_addr.c:         * make sure we lock any IFA that exists as we float through the
netinet/sctp_structs.h: uint32_t chunks_on_out_queue;   /* total chunks floating around,
zg#
походу spans_kxdr.h как-то умеет с ним работать -)))

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 13:42:39

ты забыл uname -a
)))
а то как то в 7 8 я такого не наблюдаю
а про 4 уже незнаю(((
может там чего и работало

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 13:47:39

paradox писал(а):ты забыл uname -a

Код: Выделить всё

zg# uname -a
FreeBSD zg.test.ru 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
zg#
у меня даже и дистра четвёрки нету :pardon:

но вообще да, ситуация с float довольно странная, хотя заметил, что некоторые абстрагируют, но это костыль

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 13:51:40

в RELENG_7
почикали
netatm/spans/spans_kxdr.h:extern bool_t xdr_float(XDR *, float *);
уже нету

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 14:11:49

нда... чё ещё заметил - константы с плавающей запятой есть, но в модулях они не используются
paradox писал(а):уже нету
угу, покоцали :bn: что-то тут не чисто :cz2:

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение MAK » 2009-03-05 16:15:51

Тоже удивился - и правда нетуть

Код: Выделить всё

#include <sys/param.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>

static int event_handler(struct module *module, int event, void *arg)
{
    int e = 0;
    switch (event)
    {
        case MOD_LOAD:
            printf("hello: loaded\n");
            float d = 1.000009;
            printf("%.20f\n", d);
            break;
        case MOD_UNLOAD:
            printf("hello: unloaded\n");
            break;
        default:
            e = EOPNOTSUPP;
            break;
    }
    return(e);
}

static moduledata_t hello_conf = {
    "hello",
    event_handler,
    NULL
};

DECLARE_MODULE(hello, hello_conf, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);

Код: Выделить всё

Mar  5 16:10:31 makbook kernel: hello: loaded
Mar  5 16:10:31 makbook kernel: %.20f

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 16:25:32

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

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение MAK » 2009-03-05 16:26:03

Во че нашел
http://www.onlamp.com/pub/a/bsd/2008/02 ... tml?page=3
For performance reasons, we don't use any floating point arithmetic in the kernel.

Аватара пользователя
chd
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-01-06 21:09:50
Откуда: msk

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение chd » 2009-03-05 16:31:19

ну контексты переключаются и так... иначе не было бы флоату в узерспайс.
тут я думаю нормальная схема работы должна быть между ядром, девайсом, и консумером.
по идее ядро не должно выполнять лишних действий, а просто уведомить/передать консумеру сигнал о наличие/данные.
обработка данных в ядре слишком дорого обойдется всей системе. я так думаю.
chd,
Have fun!

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 16:38:12

ну как я помню
там состояние FPU нужно сохранять и восстанавливать
этот контекст имел ввиду
давно вообщем было когда учили...
но факт)))
в винде пашет на ура
и как то не сильно влияет на производительности
а никсах нет
и толку
8)

Аватара пользователя
chd
мл. сержант
Сообщения: 79
Зарегистрирован: 2009-01-06 21:09:50
Откуда: msk

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение chd » 2009-03-05 17:06:37

ну так оно и сохраняется и прочее все такое :)

а я то говорю что ета бэд дизайн в ядре обрабатывать данные не ядра.
chd,
Have fun!

Гость
проходил мимо

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение Гость » 2009-03-05 17:11:42

хмм, а это забытый кусок?

Код: Выделить всё

> grep -r '^[[:space:]]*float' /sys/
/sys/sys/acct.h:  float       ac_utime;             /* user time */
/sys/sys/acct.h:  float       ac_stime;             /* system time */
/sys/sys/acct.h:  float       ac_etime;             /* elapsed time */
/sys/sys/acct.h:  float       ac_mem;               /* average memory usage */
/sys/sys/acct.h:  float       ac_io;                /* count of IO blocks */
/sys/dev/drm/radeon_drm.h:        float f[5];

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение paradox » 2009-03-05 17:34:36

>chd
из того что я помню
для fpu там чуть ли не отдальное сотояние задачи
что бы в случае чего
если на каком то месте кода происходят операции с плавающей точкой
то помимо сохранение и переключение контекста задачи
нужно еще и смотреть происходят ли в этом констексте операции с плавающей точкой
и делать еще кучу сложных телодвижений

>гость
смотреть надо
простых обьявлений мало
я когда писал сс3 драйвер
тоже думал что все просто
а там тупо компилятор не разрешает включать операции с плавающей точкой для ядра

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Куда делась плавающая точка? =(

Непрочитанное сообщение zg » 2009-03-05 19:02:03

Гость писал(а):хмм, а это забытый кусок?
нет, просто есть заглушка

Код: Выделить всё

#ifdef _KERNEL
#define float uint32_t
#endif