LINUX.ORG.RU

Microsoft Research подтверждает преимущество Линукс


0

0

Подразделение исследовательской группы (Microsoft Research) компании Microsoft, занимающееся разработкой новой ОС "Singularity", опубликовало отчет, который включает некоторые тесты, сравнивающие производительность собственно "Singularity", FreeBSD, Linux и Windows XP. Во всех тестах (что неудивительно) выиграла "Singularity", однако дальнейшее распределение мест довольно показательно - среди оставшихся ОС в подавляющем большинстве тестов лидирует Linux, за ним FreeBSD и далее со значительным отставанием - Windows XP. Отмечается также, что в единичных тестах Windows XP лидирует, однвко эти тесты выглядят как то очень Windows-ориентированными.

Очень интересно почитать сам отчет, т.к. он открывает некоторые особенности архитектуры "Singularity".

>>> Подробности

Ответ на: комментарий от anonymous

но ведь существуют еще дрова, как быть с ними?
какие критерии корректного обращения к апаратным средствам?
работа с контролерами, прерываниями(апаратными), 
таймером, портами...

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

Muller
()

Вообще, мне лично интересен этот гон. ОС, написанная на C#... Я как себе такое чудо представлю, так слезы на глаза наворачиваются! От смеха.

Ребят, ну ведь очевиден PR в чистейшем виде! Ну _НЕ МОЖЕТ_ быть код от C++ оптимальней, чем код от Си! Равно как код от Си не может быть оптимальнее кода ассемблера. И приведенные в треде варианты это подтвердили. Даже если предположить, что C# и C++ по оптимизированности кода равны (на самом деле, C++ дает более оптимизированный код, чем C#), то сравнивать Неопределенность и Linux - это LOL.

Действительно, дело (видимо) в том, что Неопределенность использует крайне простую, не учитывающую реальные требования, модель управления процессами и памятью.

R00T
()
Ответ на: комментарий от R00T

Тут вопрос даже не оптимальности - код сгенерированый под пользовательскую часть проги намного меньше чем "нагрузка" библиотек... так что об этом спорить глупо

интересно, а сколько времени понадобиться на такую "верификацию" кода? пол часа на ХеллоВорлд ?

Muller
()
Ответ на: комментарий от R00T

> Равно как код от Си не может быть оптимальнее кода ассемблера.

Он может быть почти также оптимален, если бы в природе вообще существовали нормальные компиляторы. Люди, вы хоть раз в жизни видели компилер под DOS, который бы "hello world" делал такого же размера как на асме? Сложного-то ничего нет. Так нет же, к любой проге надо прилепить 40 рантаймов - зачем?!

anonymous
()
Ответ на: комментарий от Muller

Вопрос именно оптимальности. Поскольку сами-то библиотеки ведь тоже на чем-то написаны! :-) Древний, как мир, пример:
xchg AX, BX
работает медленнее, чем
mov BX, CX
mov AX, BX
mov CX, AX

Это, конечно, если CX свободен. А если даже занят, то при достаточном L1 кеше быстрее xchg AX, BX будет работать даже вот такая радость:

push CX
mov BX, CX
mov AX, BX
mov CX, AX
pop CX

Я уж молчу, что блок предсказания переходов и блок "подмены регистров" все это вообще сведут в 1 такт процессора. :-)

R00T
()
Ответ на: комментарий от Zubok

> Кстати, идея SIP мне как-то сама-собой пришла в голову еще давно, но я не просто не знал, что с ней делать. Оказывается, не мне одному. :)

Zubok рулит! Не сосёт! ;0)

Dimentiy ★★
()
Ответ на: комментарий от R00T

> Вопрос именно оптимальности. Поскольку сами-то библиотеки ведь тоже на чем-то написаны! :-) Древний, как мир, пример

Ну это уже вопрос к тем, кто ТАК делает процессоры. Ну неужели трудно было оптимизировать внутри проца dec/inc, xchg тот же, строковые команды - удобные же фишки.

anonymous
()
Ответ на: комментарий от R00T

Хм, да, действительно. Теперь понятно.

anonymous
()
Ответ на: комментарий от Sorcerer

>Естественно. Только вот Ваш вирус никак не сможет заразить установщик кода, потому что если вирус идет в байткоде, то он не сможет изменить установщик при всем желании, а если не в байт-коде, то установка такой программы почти аналогична запуску из-под рута бинарного файла, который неизвестно что делает. Потому как такая программа может быть установлена только как "Trusted", а права на установку таких программ должны быть только у администратора.

Тут возникают два вопроса:
1. Насколько trusted реально trusted?
2. Не получится ли как с примером на перле, когда маскировали rm -rf?

Я не думаю, что компилятор такую последовательность сможет разобрать.

jackill ★★★★★
()
Ответ на: комментарий от R00T

>Ну _НЕ МОЖЕТ_ быть код от C++ оптимальней, чем код от Си!

Смысл видимо не в оптимальности, а защищенности. Ты посмотри, как происходит преобразование типа переменных, например.

jackill ★★★★★
()

$ cat hello_world.s
.data
msg:
.ascii"Hello, world!\n"
len = . - msg
.text
.global _start
_start:
movl $len,%edx
movl $msg,%ecx
movl $1,%ebx
movl $4,%eax
int $0x80

movl $0,%ebx
movl $1,%eax
int $0x80
$ as hello_world.s -o hello_world.o
$ ld hello_world.o -o hello_world
$ ls -lh hello_world
-rwxr-xr-x 1 fghj users 428 Ноя 9 23:29 hello_world

fghj ★★★★★
()
Ответ на: комментарий от jackill

Ну а я что написал? То самое.

Защищенность требует ресурсов. Самый ощутимый пример этого - "антивирусные мониторы", которые в режиме реального времени сканят систему на наличие вирусов.
Если из венды убрать сканеры вирусов и spyware, производительность явно на порядок увеличится.

То же самое верно для внутренних процессов ОС: если убрать функции безопасности из менеджеров памяти и процессов, то, конечно, "производительность" ОС возрастет в десятки раз...

R00T
()
Ответ на: комментарий от R00T

А вот гораздо более умный человек, чем ты, считает совсем иначе. Те же array bounds проверять можно на современных процессорах БЕЗ потерь производительности, как намерял и описал тов. Ксавье Лерой.

anonymous
()
Ответ на: комментарий от R00T

> Ну _НЕ МОЖЕТ_ быть код от C++ оптимальней, чем код от Си!

Может. В Си шаблонов нет, а ручками специализацию не везде проделаешь. Си только и остаётся, что примитивные инлайны делать, иногда наоборот с потерей производительности.

anonymous
()
Ответ на: комментарий от jackill

целью ставиться не это, а обнаружение обращений к чужому адресному пространству, девайсам, и прочим интерфейсам, кроме тех, которые предварительно описаны в манифесте.

доступ к ФС должен осуществляться через списки доступа - походу так как это осуществляеться скажем в СЕЛинукс - каждый СИП имеет идентификатор, и проверяються права на доступ...

Muller
()
Ответ на: комментарий от MaratIK

> Не беспорядочное, а реликтовое.

Не, реликтовое - от большого взрыва. Там процес чуть другой был...

atrus ★★★★★
()
Ответ на: комментарий от Sorcerer

> Сначала её код нужно установить. Установщик кода - это не просто некоторая программа - это неотъемлимая часть системы.

Понятно, Java с мобильников дорастёт до рабочего стола... ;-)))

atrus ★★★★★
()
Ответ на: комментарий от anonymous

Он, наверное, какой-то суперпроцессор имел в виду... Или если оперативка работает на частоте процессора. Разве что так.

На практике, даже в PIV современных кеш L2 - это всего 1-2Мб. Ну-ка посчитаем, сколько чудесных структур и функций от .NET/C++/Win32/COM в эти мег-два влезит? Немного. Очень немного.
А чтобы было "много", нужен интенсивный обмен данными с гораздо более медленной оперативкой. Что означает, что процессор будет простаивать, дожидаясь новых данных из оперативки. О, да! Проц не будет простаивать - он будет просчитывать ветки условных переходов в 8 (или сколько там?) потоков, из которых понадобится только один... Но рано или поздно наступит абзац: дата в кеше кончится. И проц начнет работать вхолостую, дожидаясь новой даты и инструкций из оперативки.

Так не проще ли отказаться от громоздких структур и функций высокоуровневых объектных языков (на уровне ядра, ессно, прикладуху можно писать на чем угодно) в пользу куда более компактного Си, но зато (путем увеличения "плотности" инструкций) обеспечить качественную и бесперебойную работу процессора?

R00T
()
Ответ на: комментарий от R00T

> Так не проще ли отказаться от громоздких структур и функций высокоуровневых объектных языков (на уровне ядра, ессно, прикладуху можно писать на чем угодно) в пользу куда более компактного Си, но зато (путем увеличения "плотности" инструкций) обеспечить качественную и бесперебойную работу процессора?

В QNX пальцы кидали, мол ядро целиком в кэш ПЕРВОГО уровня влезает. Не знаю как применительно к серверным задачам, но интерактивность в QNX хуже и линукса, и виндов. Т.е десктоп "тормознее".

anonymous
()
Ответ на: комментарий от Sorcerer

Что мешает положить тот же вирус в этот "объектник"? Пусть в этот установщик они положат СВОЙ антивирус и антируткит, но! Всегда же выходят вирусы, которые не находят антивирусы.
Потом ещё момент. Как что они будут её проецировать? Даже если только как серверную ОС, то постепенно (если она вообще там приживётся) она перейдёт на десктоп и заменит устаревшую НТ (как НТ в своё время 9x линейку). И вот тут-то пользователи захотят админских прав всегда и во всём. Почему в винде всё время большинство сидит с админскими правами? Потому что сетапят уйму прог. А такое желание загубит эту Неопределённость в конец или же желание пользователей её юзать. Но пользователи-то - это десктоп, а это миллионы коробочных версий...
Одним словом, только лишь ресёрч, мелкософт почитала учебники 30-ти летней давности, собрало всё в кучку и написала свой неюзабельный (с виду) вариант.
Фактически, насколько я понимаю идея проста:
Не заморачиваться с безопасностью в реалтайм, а проверить один раз всё перед установкой монолита и "забыть" про проблему безопасности. Устанавливать программы только лицензированные мелкософтом (DRM поможет, Pentim D - будущее ;-) ) ибо только они будут работать ещё лучше и быстрее в ring 0, а остальные будут проверяться и наверно работать с меньшими правами/скоростью, т.к. вся заточка системы будет на trusted-код от мелкософта.
Одним словом они идут в нужную им сторону, постепенно закручивая гайки. Что вобщем-то логично.
http://imperium.lenin.ru/LENIN/32/C/c4.html
...Единственное решение этой проблемы - модифицировать компьютеры таким образом, чтобы нарушение копирайтов (дизассемблированое, вскрытие паролей, обмен peer-to-peer) стало физически невозможно; сделав из компьютера игровую приставку под Майкрософт Оффис с Виндовсом. И к этому все идет.

Serega_S
()
Ответ на: комментарий от R00T

>Вопрос именно оптимальности. Поскольку сами-то библиотеки ведь тоже на чем-то написаны! :-) Древний, как мир, пример: >xchg AX, BX >работает медленнее, чем >mov BX, CX >mov AX, BX >mov CX, AX

>Это, конечно, если CX свободен. А если даже занят, то при достаточном >L1 кеше быстрее xchg AX, BX будет работать даже вот такая радость:

>push CX >mov BX, CX >mov AX, BX >mov CX, AX >pop CX

>Я уж молчу, что блок предсказания переходов и блок "подмены регистров" все это вообще сведут в 1 такт процессора. :-)

>R00T # (*) (09.11.2005 22:37:32)

Тогда уж так

push BX mov AX,BX pop AX

anonymous
()

Читал обсуждение.
Долго удивлялся.
(С быстрее чем C++, примитивная CLR и пр. )

Друзья, учите основы, если не хотите глупо выглядеть.

zlobny_anonymous
()
Ответ на: комментарий от anonymous

На самом деле, всю часть про новую ОС можно пропустить, IMHO. Не потому что она плохая или хорошая, а потому что ее никто не видел. Вот что действительно важно - так это то, что Microsoft действительно признал преимущество Linux в техническом плане. А Singuilarity как копец Linux пока рассматривать рано, так как когда этот Singuilarity выйдет-то? Хорошо, если Vista выйдет в 2006 году. Ладно. Но следующая ОС от Microsoft, причем новая по своей сути точно выйдет даже не в 2008, причем и из-за маркетинга и из-за физической невозмржности написать хорошую ос за 3 года. А может, мы сначала поймем, что произойдет с Linux к тому времени?

NoMad ★★
()
Ответ на: комментарий от avatar

>то после понадобиться много времени для достижения такого же уровня какого достигнет новая OS от Microsoft. Итог не утешительный, надо плотнее браться за разработку микроядра.

как тока республиканцы продуют выборы - писец мс. и без всяких там микроядер

anonymous
()
Ответ на: комментарий от anonymous

>> зря Линус не читал камменты профессора Т.?
> Он их читал, а затем положил
наверное не то и не туда положил :))
___
да есть там защита
есть
просто другой совершенно механизм микроядерного IPC
там схема: user <-> user
а не класическая унаследованая от монолитных ядер:
user <-> kernel <-> user
если учесть что на L4 удалось добиться только 10-20% падения производительности в класической схеме
то основной вопрос: что ж эта Singularity такая тормознутая
скорее всего сказывается что это всего только
исследовательская разработка для виста, а исследователи ложили откровенно на эфективность (и правильно сделали :)
___
кстати - размеры бинарников говорят о том что там дебажные версии :)
типа постеснялись заниматься откровенным пиаром и притормозили слегка :)))

yeolahim
()
Ответ на: комментарий от yeolahim

>но микрософт всегда славилась хорошим IPC

ага. то то народ в свое время от DDE плевался

anonymous
()
Ответ на: комментарий от Serega_S

>Что мешает положить тот же вирус в этот "объектник"? Пусть в этот установщик они положат СВОЙ антивирус и антируткит,

там нет антивируса, просто все вызовы за границу СИП сверяються с манифестом, где описаны "права" проги, манифест естесно доверяемый, то есть планируеться метить электонной подписью микрософта, следовательно повлиять на другие процессы нельзя... в теории

>... модифицировать компьютеры таким образом, чтобы нарушение копирайтов (дизассемблированое, вскрытие паролей, обмен peer-to-peer) стало физически невозможно; сделав из компьютера игровую приставку под Майкрософт Оффис с Виндовсом. И к этому все идет.

да уж, давно, например в мобильной версии офтопика(для смартфонов) предполагаеться невозможность установки програм неподписаных мокрософтом, вот такой вам ДРМ... к счастью есть возможность это обойти.

Muller
()
Ответ на: комментарий от MaratIK

codex

> Это правда, что прога helloworld в лялихе весит 431900 ... ?
наглый гон! just the facts:
ls -l
итого 12
-rw-rw-r-- 1 byg byg 59 Ноя 10 13:54 helloworld.c
-rwxrwxr-x 1 byg byg 4708 Ноя 10 13:54 hw
byg@wax:~/c>cat helloworld.c
#include <stdio.h>

main()
{
printf("Hello, World!\n");
}

mumpster ★★★★★
()
Ответ на: комментарий от Muller

А может всё таки проще не проверять, а просте предоставлять НЕ БОЛьШЕ чем нужно ? приложению конструируется свой namespace в котором оно и работает, причём без прав его менять. В случае если процесс хакнут важные элементы системы не будут затронуты.

robot12 ★★★★★
()
Ответ на: комментарий от robot12

конечно проще, рациональнее, но...

если внимательно полистать этот отчетик, то там мелькают фразы о тотальном контроле исполнения, и отмазочки "на данный момент еще не используем". так что то что на данный момент этой защиты нет ничего не значит... мелькала фраза о проверкуе манифеста при каждом обращении к каналам или другим системным обьектам, так что это не про Сингу...

хотя сама идем предоставлять ровно столько сколько надо для работы - достаточно интересна, и потенциально Синга могла бы это реализовать...

>...конец лялиху... ... но синга - это не ОС, это лабораторная работа, поэтому рассматривать ее как реального конкурента чему-либо - глупо. максимум - эти разработки где-то используют... не верю что мокрософт выпустит систему, с которой не справиться чайник... а так - готов поспорить, что не я один сразу бы поставил ее "на посмотреть"... ;-)

Muller
()
Ответ на: codex от mumpster

наглый гон - это использовать printf для вывода примитивной костантной строки:)

Led ★★★☆☆
()
Ответ на: комментарий от robot12

У вас ошибка в программе (Это надо умудриться - в helloword ошибку допустить:))

Led ★★★☆☆
()
Ответ на: комментарий от MaratIK

> Это правда, что прога helloworld в лялихе весит 431900 для С и 984520 для С++?????

Неправда!
-rwxrwxr-x 1 cas cas 4719 Ноя 10 12:18 hello_shared
-rwxrwxr-x 1 cas cas 428087 Ноя 10 12:19 hello_static

Skull ★★★★★
()
Ответ на: комментарий от Dead

>> А что debug версия работает медленее?
не всегда конечно, но очень редко по праздникам - бывает

yeolahim
()
Ответ на: комментарий от Skull

[led@led tmp]$ tcc -static -o hello hello.c

[led@led tmp]$ strip -s hello

[led@led tmp]$ ls -l hello

-rwxr-xr-x 1 led led 381196 Ноя 10 11:27 hello

А это static:)

Led ★★★☆☆
()
Ответ на: комментарий от Skull

[led@led tmp]$ cat hello.c
int main() {
puts("Hello, World!\n");
}
[led@led tmp]$ tcc -o hello hello.c
[led@led tmp]$ strip -s hello
[led@led tmp]$ ls -l hello
-rwxr-xr-x 1 led led 2304 Ноя 10 11:25 hello
[led@led tmp]$

Так что shared - ещё меньше:)

Led ★★★☆☆
()
Ответ на: комментарий от Skull

А как такой прикол:

$ diet -Os gcc -static -o hello hello.c
[led@led tmp]$ strip -s hello
[led@led tmp]$ ls -l hello
-rwxr-xr-x 1 led led 796 Ноя 10 11:41 hello
[led@led tmp]$
[led@led tmp]$ ldd hello
        not a dynamic executable

итого - 796 байт. Вывод: майкрософтовцы соврамши на 3 порядка!:)

Led ★★★☆☆
()
Ответ на: комментарий от xnix

Вообще-то есть хорошая статей-ка (кажеться в Assembler Programming Journal) как покоцать заголовок ELF до 12 байт => helloworld будет занимать не больше 30 байт.

anonymous
()
Ответ на: комментарий от Led

смешно листатб последние посты, кто больше пожмет Хелловорлд :-D % diet -Os cc main.cpp -static && strip a.out && ls -al 784 Nov 10 12:15 a.out 83 Nov 10 11:58 main.cpp

ну и какая разница, изврашаясь можно сжать до нескольких байт... НУ и что?

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

Muller
()
Ответ на: комментарий от Muller

Никто ничего не вылизывал: стандартный hello.c, стандартный gcc - где вы увидели "вылизывание"?:)

Led ★★★☆☆
()

Подброшу-ка я дров во флейм.

Господа, тут спорящие, явно не читали статью. Я сам ее мельком пробежал, но успел уяснить, что:

а) в Singularity в SIP исполняется _не_ JIT и _не_ байткод. Используется native компилятор C# (точнее, его расширения, как его там, Sling#, что ли? еще точнее, компилятор CLR-ного байткода в родные инструкции). Причем планируется перейти на использование type-safe ассемблера, что позволит исключить компилятор из trusted base: вместо проверки исходника и надежды, что компилятор работает правильно, можно будет проверять ассемблер, сгенеренный компилятором - что гораздо проще.

б) там _все_ бинари статические. И используется whole-program оптимизация. Т.е., например, код GC и "стандартной библиотеки" дублируется в каждом SIP-модуле, но при этом только те их части, которые реально используются (а не весь объектный архив, как при статической компиляции в существующих системах). Все остальное - по IPC.

в) под trusted имеется ввиду соответсвие спецификациям и инвариантам: т.е., например, сишный-ассемблерный модуль в ядре мог бы осущесвлять динамическое связывание (запрещенное в системе) - но они точно знают, что он этого не делает. safe code же - это код, автоматически проверенный компилятором/верификатором на вышеуказанное соотвествие.

Все это довольно клево, но, боюсь, гораздо менее полезно, чем им кажется. Ибо основной и самый страшный класс ошибок - логические, которые хрен отловишь компилятором. И их система, нацеленная на достижение "dependability", страдает от "нестабильности под нагрузкой". Т.е. они таки насажали багов несмотря на все свои проверки.

anonymous
()
Ответ на: комментарий от anonymous

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

Имхо проще проверить сам компилятор (чтоб он однозначно правильно генерил код), чем проверять ассемблерные инструкции в КАЖДОЙ программе, им скомпилированной.

>реально используются (а не весь объектный архив, как при статической компиляции в существующих системах)

Кто вам такое сказал???

Led ★★★☆☆
()
Ответ на: комментарий от anonymous

> там _все_ бинари статические. ты еще добавь что с момента дизайна все системные вызовы имеються в виде <Имя><Версия> :-), и система при загрузке модуля из манифеста должна подобрать и загрузить СИПу версию АПИ, которая соответствует той под какую писали... типа что б не терять совместимости :-) и что б программеры не теряли внимательности - следили за ежедневными релизами АПИ

Muller
()
Ответ на: комментарий от Led

>Имхо проще проверить сам компилятор (чтоб он однозначно правильно генерил код), чем проверять ассемблерные инструкции в КАЖДОЙ программе, им скомпилированной.

если ограничить набор используемых компилятором ассемблерных инструкций и наставить проверок- то это будет не так уж сложно, другое дело, что это серьезно уменьшит производительность- на N% на любом CPU, в то время как количесто операций, необходимых для переключения контекста в микроядерной архитектуре, более менее константа- то есть то количество переключений, которое на 486 занимало половину ресурсов, сейчас уже займет пренебрежимо мало


PS а когда в компиляторе Singularity будут находить очередную уязвимость, дающую возможность скомпилить вредоносный код, все дружно будут делать rebuild world,
а в целях обратной совместимости к Singularity будет прилагаться MS ЦедегаXP, позволяющая на этой системе без защиты памяти запустить любой com/exe,
a вирусы вовсю будут использовать vb и bat

a вообще, мне это напоминает не Plan 9/Inferno, а PalmOS с Java

PPS надо не забыть написать на S3Trio64 V+ "Designed for Singularity"...

Anonymous ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.