в 98 все длл общие. В NT каждый процесс имеет свою копию системных длл. Получается: маленькая прога и к ней вагон длл - время тратится на свопинг. В 98 на свопинг длл время не тратится. Это хорошо согласуется с практикой: ничто так не повышает быстродействие, как увеличение памяти.
Это так, или есть еще причины?
Попутный вопрос: по 95 есть по крайней мере 2 хорошие книги: "Неофициальная Win95" и "Win95 изнутри", есть ли что нить подобное по NT?
[Win32] Почему NT медленнее 98? ИМХО:12.04.02 12:14 Автор: NudleS Статус: Незарегистрированный пользователь
> в 98 все длл общие. В NT каждый процесс имеет свою копию > системных длл. Получается: маленькая прога и к ней вагон > длл - время тратится на свопинг. В 98 на свопинг длл время > не тратится. Это хорошо согласуется с практикой: ничто так > не повышает быстродействие, как увеличение памяти. > > Это так, или есть еще причины? > win 98 vsegda budet bistree, tak kak NT dobavljaet eshe nemerenno setevix bibliotek v reestr. > Попутный вопрос: по 95 есть по крайней мере 2 хорошие > книги: "Неофициальная Win95" и "Win95 изнутри", есть ли что > нить подобное по NT? Est'. Moja lubimaja - "Windows NT ne dlja vsex". O4en' daje ni4ego kniga. V etom je izdanii i win 95 est' ("Windows 95 ne dlja vsex")
В плане книг: меня интересует12.04.02 04:19 Автор: Zef <Alloo Zef> Статус: Elderman Отредактировано 12.04.02 04:21 Количество правок: 1
> процесс загрузки системы и функционирование ядра (типа, как > это описано в"Неофициальной 95")
Ужели с первого раза не понял? Я же привел список книжек, из них наиболее информативен в этом плане Russinovich&Solomon "Inside Windows 2000", но и остальные стоят своих денег...
[Win32] Почему NT медленнее 98? ИМХО:11.04.02 15:32 Автор: SerpentFly <Vadim Smirnov> Статус: Member
> в 98 все длл общие. В NT каждый процесс имеет свою копию > системных длл. Получается: маленькая прога и к ней вагон > длл - время тратится на свопинг. В 98 на свопинг длл время > не тратится. Это хорошо согласуется с практикой: ничто так > не повышает быстродействие, как увеличение памяти. > > Это так, или есть еще причины?
Нет, не так. Например страницы кода DLL (и shared data sections) физически разделяются между процессами, хотя и могут быть отмапены на различные виртуальные адреса в базовом пространстве процесса (например в случае необходимости relocations). Исключение составляют попытки записи в страницы кода DLL (VirtualProtect and ect..), тогда для процесса создаются локальные копии модифицированных страниц.
NT действительно более ресурсоемкая система чем 9х/ME, ядро 9х/ME написано преимущественно на ассемблере, занимает мало места и быстро работает. Ядро NT значительно сложнее, написано преимущественно на С (что облегчает перенос системы на другие платформы) и соответственно более медленное и тяжелое. Тут уже приходиться выбирать между функциональностью, стабильностью, безопасностью (не стоит правда забывать про такие дырки как недавно появившийся DebPloit) и ресурсоемкостью. Есть множество и намного менее легких и быстрых систем чем 9x/ME, смотря для чего тебе нужна система.
> > Попутный вопрос: по 95 есть по крайней мере 2 хорошие > книги: "Неофициальная Win95" и "Win95 изнутри", есть ли что > нить подобное по NT?
На русском кроме Коберниченко и Хастлер (старые книжки вряд ли найдешь):
Руссинович&Соломон "Inside Windows 2000" (перевод издан издательством Питер)
Шрайбер "Недокументированные возможности Windows 2000" (перевод издан издательством Питер)
Неббет "Справочник по базовым функциям API Windows NT/2000" (перевод издан издательством Вильямс)
На английском:
Prasad Dabak & Co "Undocumented Windows NT"
+
много книг по написанию драйверов, которые в той или иной степени касаются ядра NT, смотри www.amazon.com
Сказать, что 95 быстрее потому, что она писана на АСМе - ни чего не сказать.
Во первых: сам Микрософт признает, что для 95/98 использует специальный компилер С.
Во вторых: Если на АСМе, то должна быть надежней, чем NT
В третьих: NT "стройней" и "аккуратней", а в 95/8 все работает через "прослойку" 16бит кода.
В четвертых: утверждение о том, что NT создает для каждого процесса отдельную копию ядра я взял не с потолка. Я его читал, и не раз в различной литературе. Правда, не вспомню, где, иначе бы показал.
И в пятых: это подтверждается тем, что NT при переключении задач бешено долбит диск, даже при 128метрах мозгов.
У меня двойная инсталляция NT/98 на двух совершенно одинаковых дисках.
NT, правда на NTFS (она, проверенно существенно медленней FAT32), но 98 при переключении задач диск не трахает!
Не согласен!14.04.02 09:01 Автор: SerpentFly <Vadim Smirnov> Статус: Member
> Сказать, что 95 быстрее потому, что она писана на АСМе - ни > чего не сказать. > Во первых: сам Микрософт признает, что для 95/98 использует > специальный компилер С.
Можно взглянуть на это признание?
> Во вторых: Если на АСМе, то должна быть надежней, чем NT
Ну это вы батенька загоняетесь, с каких это пор большие проекты на асме стали надежней? В море кода куда проще утонуть... Да я и не утверждаю что вся 95 написана на асме, но ее существенная часть без сомнения... Например, при написани VxD без асма не обойтись, если только не использовать библиотеки типа VToolsD.
> В третьих: NT "стройней" и "аккуратней", а в 95/8 все > работает через "прослойку" 16бит кода.
Прослойка существует на уровне user-mode DLL-лей (ля поддержки Win3.11 бинарников), ядро уже давным давно 32-битное (оговорюсь, VxD могут содержать куски 16 битного кода, но это скорее исключение чем правило), а начиная с Win98 еще и поддерживает WDM драйвера, фактически пронаследованные от NT... Хотя лично мне никогда не нравилась эта гибридная ось, слава богу MS вроде как поставил крест на этой ветке...
> В четвертых: утверждение о том, что NT создает для каждого > процесса отдельную копию ядра я взял не с потолка. Я его > читал, и не раз в различной литературе. Правда, не вспомню, > где, иначе бы показал.
Молодец, возьми с полки пирожок... Что ты имеешь ввиду под ядром в данном случае? ntoskrnl.exe? Если его то извини, он один для системы... Если kernel32.dll, тогда ты погорячился назвав его ядром, эта DLL в основном обертка вокруг сервисов ntdll.dll, которая в свою очередь в соновнм просто gate к сервисам ntoskrnl.exe. Но даже для DLL система использует одни и те же страницы физической памяти для всех процессов, если только один из этих процессов не попытается записать что-то в эти страницы (тогда работает механизм COPY-ON-WRITE описанный в предыдущем постинге). Так что внимательнее нужно читать книжки дорогой товарищ...
> И в пятых: это подтверждается тем, что NT при переключении > задач бешено долбит диск, даже при 128метрах мозгов.
А кто сказал что это много? Для NT 4.0 положим достаточно, а опыт использования 2000/XP показывает что желательно иметь не менее 256 метров. Ядро, как я уже упоминал у NT значительно более громоздкое чем у 9x/ME и ему нужно место чтобы разместиться... А если ты еще и сайс поставил, который выключает спопирование для неиспользуемых секций kernel-mode компонент (в том числе и ядра), то обьем необходимой физической памяти еще возрастает...
> У меня двойная инсталляция NT/98 на двух совершенно > одинаковых дисках. > NT, правда на NTFS (она, проверенно существенно медленней > FAT32), но 98 при переключении задач диск не трахает!
Опять же, небольшой факт, сетевые приложения на NT при условии предоставления ей достаточных ресурсов работатю быстрее чем 9x/ME на том же железе, в свое время я тестировал производительность стека... Так что кто реально быстрее вопрос сложный...Плюс 9х/МЕ не использует дополнительных процессоров на SMP системах, только один...
Хотел поспорить, но14.04.02 10:37 Автор: Zef <Alloo Zef> Статус: Elderman
но уж очень у тя классно про структуру ядра, и опять же сайс у меня естессно воткнут, а без него я ее и не запускал...
Интересно, откуда ты это все почерпнул? Тех книжек, которые ты мне рекомендовал я пока не нашел, кроме того, меня интересует именно NT4, а не 2к, в которой слишьком много прибамбасов.
Насчет 98 и 32 бит ядра, эт ты загнул... Я сейчас как-раз долбаю дисковую подсистему, так вот все дисковые сервисы (для совместимости) в ней работают через int21 и 16код. Сам трейсил!
Молодец, возьми с полки пирожок... Что ты имеешь ввиду под
> ядром в данном случае? ntoskrnl.exe? Если его то извини, он > один для системы... Если kernel32.dll, тогда ты погорячился > назвав его ядром, эта DLL в основном обертка вокруг > сервисов ntdll.dll, которая в свою очередь в соновнм просто > gate к сервисам ntoskrnl.exe. Но даже для DLL система > использует одни и те же страницы физической памяти для всех > процессов, если только один из этих процессов не попытается > записать что-то в эти страницы (тогда работает механизм > COPY-ON-WRITE описанный в предыдущем постинге). Так что > внимательнее нужно читать книжки дорогой товарищ... > А если ты еще и сайс поставил,
> который выключает спопирование для неиспользуемых секций > kernel-mode компонент (в том числе и ядра), то обьем > необходимой физической памяти еще возрастает... >
Хотел поспорить, но15.04.02 08:30 Автор: SerpentFly <Vadim Smirnov> Статус: Member
> Интересно, откуда ты это все почерпнул? Тех книжек, которые > ты мне рекомендовал я пока не нашел, кроме того, меня > интересует именно NT4, а не 2к, в которой слишьком много > прибамбасов.
Те книги что я перечислил (на русском языке) можешь заказать с сайта издательтва Питер (www.piter-press.ru). Что до Win2k и NT4, то принципы все те же, не все конечно что есть в 2000 есть в НТ, но в целом архитектура сохранена, только расширена...
> Насчет 98 и 32 бит ядра, эт ты загнул... Я сейчас как-раз > долбаю дисковую подсистему, так вот все дисковые сервисы > (для совместимости) в ней работают через int21 и 16код. Сам > трейсил!
Опять что ты понимаешь под ядром? Я под ядром имею ввиду VxD модули и драйвера устройств, последние в 98 в основном WDM драйвера и естественно 32 разрядные, первые содержат 16-битный код (причем далеко не все), но основная масса кода все-таки 32-битная. Поэтому мне кажется, что называть ядро 16 разрядным ты поспешил. Ну а что касается kernel32.dll, то то что большинство ее вызовов переадресуются к 16-битной kernel.dll известный факт, обратная совместимость и все такое... Кстати тоже далеко не положительным образом сказывается на производительности...
Резюмируя, каждая система предназначена для своих нужд, на хорошем железе лучше будет работать NT/2000/XP, на плохом 9х/ME...
Читай книгу14.04.02 19:45 Автор: Бяша <Biasha> Статус: Member
> но уж очень у тя классно про структуру ядра, и опять же > сайс у меня естессно воткнут, а без него я ее и не > запускал... > Интересно, откуда ты это все почерпнул? Тех книжек, которые > ты мне рекомендовал я пока не нашел, кроме того, меня > интересует именно NT4, а не 2к, в которой слишьком много > прибамбасов. Вот это всё описано в Руссиновиче&Соломоне "Внутреннее устройство Microsoft Windows 2000" ("Inside for MS Win2K") третье издание, о котором здесь уже говорили, и не раз :)
Для нт 4 - эта же книжка только первое издание и by Хелен Кастер.
Хотя советую читать для 2000 - принципы не так уж и изменились, а описано всё лучше в третьем издании.
К тому же ты не найдёшь для нт 4 - на русском она в 95/96 издавалась последний раз, кажется. А для 2000 - несколько месяцев назад она ещё везде была, сейчас не знаю.
P.S.
А кто-то может рассказать что с Хелен случилось - чего так вышло?
[Win32] Почему NT медленнее 98? ИМХО:11.04.02 15:00 Автор: Idkfa Статус: Незарегистрированный пользователь
На сколько мне извесно код dll никогда не дублируется. В том их и прелесть, и отличие от статических библиотек - не надо держать в памяти один и тот же код.
> в 98 все длл общие. В NT каждый процесс имеет свою копию > системных длл.