LINUX.ORG.RU
ФорумTalks

Утечка исходного кода Windows XP

 


1

3

Слив включает в себя также исходники DirectX 8 и Microsoft Paint и весит 12.9 Гбайт в распакованном виде и 2.539 Гбайт в запакованном (обе ОСи). Есть также полный торрент (magnet в комментах), вам нужен файл nt5src.rar (не windows_xp_source, это другой запороленный архив).

Во многих файлах добавлена поддержка IA64 и amd64 (да, есть поддержка Windows XP 64 bit edition). Есть pow.s, на ассемблере. mspaint в XPSP1\NT\shell\osshell\accesory\mspaint\ вполне компилируется! Содержит игры Hearts (на C++), Reversi, Solitare! Также есть исходники mssipotf, которые позволяют подписывать файлы шрифтов и проверять эти подписи (MD5 + RSA). Есть mscms, система управления цветом от Microsoft. Есть UI драйвер Postscript шрифтов NT\printscan\print\drivers\usermode\driverui\ps и makentf. Есть charmap.exe исходники.

https://m.habr.com/ru/news/t/520598/

★★

Последнее исправление: a1batross (всего исправлений: 1)

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

Ржу в голос.

Кстати, пытался Колибри скомпилировать с нуля.

Официальная документация утверждает, что если я хочу собрать её с нуля, то я хочу странного, и всё это на моей ответственности.

Увлекательное было приключение.

Сборочная система на tup, которую им написала какая-то женщина (ничего не имею против женщин-разработчиков, просто запомнил сам факт). Хорошо, что сборочная система хотя бы есть.

Одна из мелких деталей: Хорошо, что можно просто запустить ubuntu:14.04 в докере и выдернуть оттуда недостающие so-шки для запуска их сборки gcc 5.4.0, к которой положить нужные so-они не догадались.

Ну и дальше в том же духе.

Но когда оно попыталось собрать образ дискеты и сказало, что «том переполнен», я решил сделать перерыв. Оно пытается записать дискету чертову уйму файлов, которые туда, очевидно, не влезут.

А грузиться и работать напрямую с iso оно не умеет, под капотом тот же самый древний метод с подсовыванием образа дискеты.

Так пока и не собрал. Может послезавтра найдётся время…

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

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

Всё, я понял, о чем ты:

https://www.microsoft.com/resources/documentation/windowsnt/4/workstation/res...

Но суть в том, что окна-то изначально были спроектированы в ядре для взаимодействия процессов. Да, сама логика работы GUI в NT 3 была в отдельном процессе, но окна были в ядре. Потом все менюшки, курсоры, GDI из этого процесса перенесли в само ядро, убрав лишнее переключени контекста. Но даже в том, старом виде NT 3 ядерная логика работы GUI была сильно более развита (сложна), чем у тех же иксов.

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

Какими «другими»? Назови мне систему, которой пользовались больше двух человек, и которая была сравнима с NT?

Да та же OpenVMS.

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

Также, как я понимаю, если бы в винде был некий переключатель «отключить сисколы win32k.sys», то ты бы сказал, что это годная для сервера система?

Не переключатель, а полностью выпилить win32k.sys или по крайней мере оставить только невидимые окна для обмена сообщениями.

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

По ссылке говорят, что мой ip зобанен. Вот это поворот))

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

VMS — это и есть NT.

Там нету win32k.sys и она пригодна для серверов. Графика опциональна и работает в пользовательском режиме. Поделка Microsoft - это испорченный клон VMS.

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

чтобы открыть его только для записи

O_WRONLY?

только для запроса метаинформации

fstat?

асинхронные stateless операции

io_uring?

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

чтобы открыть его только для записи

O_WRONLY?

Принимается.

только для запроса метаинформации

fstat?

Во-первых, придумай мне асинхронный fstat. Во-вторых, я не спорю с тем, что подобные фичи (запрос метаданных) реализованы в никсах. Я спорю с тем, что open/read/write является годным интефрейсом и его не нужно менять.

io_uring?

2019 год — самое время. А до этого было «это никому не нужно». Но вот не прошло и каких-то 30 лет — ввели таки асинхронные операции.

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

Во-первых, придумай мне асинхронный fstat.

А как это будет выглядеть в Windows?

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

Я спорю с тем, что open/read/write является годным интефрейсом и его не нужно менять.

Для большинства задач его предостаточно. На тяжёлый случай можно всё что угодно сделать асинхронным с помощью пула потоков с небольшим стеком (можно ради интереса сделать замер thread pool vs async IO).

А до этого было «это никому не нужно».

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

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от byko3y

Назови мне систему, которой пользовались больше двух человек, и которая была сравнима с NT?

NeXTSTEP.

Кстати именно с неё Microsoft слизала всеми любимый нами, тёплый, ламповый и квадратно псевдо 3D’шный GUI у WinAPI. Ту же кнопку закрытия окна и кнопку разворота (maximizing window), хотя на NeXTSTEP последняя сворачивала окно в докбар.

NeXTSTEP для своего времени была прорывной может быть не по части ядра (там вроде Mach), но по части GUI точно. Вместо иксов, которые ели коммерческие UNIX’ы того времени, там уже использовали для отрисовки всего интерфейса полноценный PostScript-движок, лицензированный у Adobe, что позволяло в плане графики вытворять довольно сложные вещи. Когда Microsoft только-только релизнул первую версию своей «прорывной» NT, NeXTSTEP уже подарила нам первый (с практически современной концепцией) веб-браузер, первый RAD с возможностью визуального программирования, DOOM и на подходе был Quake.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от X512

На тяжёлый случай можно всё что угодно сделать асинхронным с помощью пула потоков

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

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

И если у вас нет этой асинхронности в дизайне с самого начала, вы обречены её изобрести ad hoc – возможно, с костылями, возможно, неоднократно в разных частях системы. Что часто мы на практике и наблюдаем, когда отдельные «асинхронные» модели сидят на каком-нибудь синхронном локе на более высоком уровне.

Смысла делать криво, а потом радоваться, что наконец побороли кривизну, я не вижу. Если можно сразу сделать прямо.

Ядро NT имеет хоть и сложный для понимания, но мощный механизм организации IO – с этим глупо спорить.

IO вообще по своей природе сложен. Просто всё только на уровне echo и cat.

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

Ядро NT имеет хоть и сложный для понимания, но мощный механизм организации IO – с этим глупо спорить.

Мне так никто не показал пример софта где асинхронный ввод-вывод NT давал бы существенные преимущества такие что выбрали бы Windows вместо Linux или BSD в качестве серверной ОС. Пока одни только теоретические рассуждения и любование архитектурой.

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

Так драйвера же.

Какая разница что там в драйверах? Драйверы пишут разработчики ОС и железа. Прикладное серверное ПО не в ядре работает.

Единая модель вместо кучи ad hoc костылей.

Это опять теоретические рассуждения без цифр.

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

Сложный NT работает 30 лет, а простой linux за 30 лет полностью переписали раз 5. Куда еще более показательные числа.

Драйверы пишут разработчики ОС и железа.

Ну или не пишут. Потому что не выгодно.

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

Сложный NT работает 30 лет, а простой linux за 30 лет полностью переписали раз 5.

Значит ядро NT настолько сложное, что рефакторингу не поддаётся, а Линукс можно спокойно переписывать без потери совместимости с пользовательским режимом.

Куда еще более показательные числа.

Числа сравнения производительности прикладного серверного софта под NT и Linux.

Ну или не пишут. Потому что не выгодно.

Проблем с недостатком драйверов под серверное железо в Линуксе не наблюдается. А для десктопа Линукс не предназначен, хотя и на десктопе большинство драйверов есть.

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

Сложный NT работает 30 лет, а простой linux за 30 лет полностью переписали раз 5. Куда еще более показательные числа.

Сложный NT забрался только на десктоп, а простые UNIX-like сегодня в каждой кофеварке (мобилки, роутеры, embedded, сервера и т. д.).

Это куда более показательные числа.

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

Разрабатывать NT начали в 88-м, первый релиз NT 3 был в 93-м.

В 96-м вышла NT 4, которая дальше не имела существенных архитектурых изменений и эволюционно развивается уже 24 года, получается.

То есть в 96-м для PC-совместимых машин вышла система, которая на обычном ширпотребном компьютере реализовала практически весь спектр возможностей ОС, которые тогда только были в IT вообще.

Досадным исключением, как уже тут обсудили, была только невозможность запуска без графики.

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

Для большинства задач его предостаточно. На тяжёлый случай можно всё что угодно сделать асинхронным с помощью пула потоков с небольшим стеком (можно ради интереса сделать замер thread pool vs async IO)

«Большинство задач» — это башеговно. Любая минимально сложная задача, будь то проигрыватель музыки, DNS/HTTP сервер, служба печати уже не справляются с задачей. У меня постоянно пукан горел с того, что в никсах принято делать синхронные DNS запросы, которые иногда завешивает софтину к чертям. Да, к слову, работа с сетью — это крест над гробом классического юникса, потому что сеть — это практически всегда асинхронщина, а юникс фундаментально синхронен.

Всё, эпоха однозадачных компьютеров прошла, ее уже не вернуть, сейчас выполнять две функции одновременно — это рядовая ситуация. Архитектура юникса же застряла где-то в 1980 году. Не то, чтобы VMS/WinNT был передовым — просто юникс на то время был говном мамонта.

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

Высоконагруженные сервера баз данных — это постгрес, который форкает себя на каждый запрос и съедает 10 Мб поверх этого? Пока затыком был жесткий диск — этого хватало. Но все равно пришел MS SQL и сожрал рыночек, вытеснив начисто никсы из сферы серверов для мелкого-среднего бизнеса (который не может себе позволить Oracle).

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

Значит ядро NT настолько сложное, что рефакторингу не поддаётся,

Ядро NT должно запускать драйвера и предоставлять абстракции для прикладного кода.

Драйвера запускает?

Запускает.

Или переписывать ядро нужно просто https://www.youtube.com/watch?v=4CRbezZDb8Y ? Смысл экономический в чём?

а Линукс можно спокойно переписывать без потери совместимости с пользовательским режимом.

Его не «можно», а «нужно» переписывать. Приходится.

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

Сложный NT забрался только на десктоп

ну для приставок тоже есть(XBox), Windows Mobile был, Windows 10 IoT есть.

NT портировали под многие архитектуры процессоров и форм-факторы…

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

NeXTSTEP для своего времени была прорывной может быть не по части ядра (там вроде Mach), но по части GUI точно

Принято, NT слизан с NeXTSTEP.

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

Мне так никто не показал пример софта где асинхронный ввод-вывод NT давал бы существенные преимущества такие что выбрали бы Windows вместо Linux или BSD в качестве серверной ОС. Пока одни только теоретические рассуждения и любование архитектурой

Nginx. Как ни странно.

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

Windows Mobile был

Там не NT, а отдельное независимое ядро. А Линукс спокойно на мобильных платформах работает в том числе с ограниченными ресурсами. NT видимо оказалось слишком ресурсоёмкое.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от wandrien

Сложный NT работает 30 лет, а простой linux за 30 лет полностью переписали раз 5. Куда еще более показательные числа

Вообще-то NT перерабатывали. Модель драйверов меналась один или два раза серьезно.

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

Nginx. Как ни странно.

Version of nginx for Windows uses the native Win32 API (not the Cygwin emulation layer). Only the select() and poll() (1.15.9) connection processing methods are currently used, so high performance and scalability should not be expected. Due to this and some other known issues version of nginx for Windows is considered to be a beta version.

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

Не спорю с тем, что NT-ядро достаточно круто. Особенно было тогда, когда Linux делал свои первые шаги. Всё-таки его писали не какие-нибудь мимокроки, а спецы из DEC, в своё время пилившие VAX/VMS. Наверное они были одни из самых крутых специалистов того времени, если не самые. Особенно учитывая что их детище – OpenVMS – акула всяких там mission-critical применений, вроде АЭС, телекома и SWIFT.

Вот только смог ли Microsoft полностью раскрыть потенциал NT, влезть не только на десктопный, но и на мобильный, серверный и Embedded-рынки? Попытки-то были, куча их. Windows CE, Windows ME, Windows Phone и т. д. из всего этого жив лишь Windows Server, да и то в том же Azure такое: Whoa. Microsoft Is Using Linux to Run Its Cloud.

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

Мне тебе перевести? Нет хорошего релиза Nginx под винду — но я не про это. Я про то, что Nginx на линуксе сделал «прорыв», который был нормой для винде уже лет пять. И весь интернет пользуется nginx, потому что простейшие операции он обрабатывает в разы быстрее форкающихся серверов.

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

Не настолько, что ты через два года открываешь код и не понимаешь, что вообще это такое. В линуксе - запросто.

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

Ну МС не смог, это факт…

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

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

Не настолько, что ты через два года открываешь код и не понимаешь, что вообще это такое.

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

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

NT портировали под многие архитектуры процессоров и форм-факторы…

Я знаю. Windows NT 4 был под Alpha, MIPS, PowerPC… интересно, что-то ещё было? Под итаники может быть? Ну кроме WinCE под ARM/SH4/MIPS etc.?

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

Я про то, что Nginx на линуксе сделал «прорыв», который был нормой для винде уже лет пять.

Ну и где высоконагруженные сервера на Windows за пять лет до Nginx? И до этого большая часть серверов работала на UNIX-подобных системах. Помимо всего прочего в Windows очень тормозная файловая система NTFS совершенно не пригодная для серверов. EXT работает в разы быстрее.

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

С точки зрения прикладного программиста, linux и NT одинаково стабильны. А с точки зрения драйверщика — нет.

Зачем вы пытаетесь доказывать точку зрения, которая и так очевидна?

Или драйвера пишут пони на зарплате радугой? Или это еще как-то бесплатно?

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

Был этот, интел с длинным словом, предшественник итаников. Так и не вышел. Не помню маркировку.

NT хотели ставить на него.

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

ну для приставок тоже есть(XBox)

А кто выиграл Console Wars по продажам? Sony или Microsoft? Просто напомню, что в PS3/PS4 (и возможно PS5) OS относится к UNIX-like. Как и в Nintendo в своих Wii U/Switch и т. д.

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

А с точки зрения драйверщика — нет.

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

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

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

А я бы сказал, что у руля задержались люди старой закалки, которые хорошо соображали в технологиях прошлого и шли по этой линии, но не заметили, как рынок стал совершенно другим. как десктоп отошел на второй план, как софт превратился в сервис, что перевернуло рынок верх ногами, а MS продолжал тешить себя надеждами, что какая-то доля старого рынка останется. Да, осталась, но настолько смешная, что делать там крупной фирме нечего. MS же думало, что у него есть винда, а значит всё под контролем. А оказалось, что рулит всем тот, у кого есть сервисы, а софт не значит ничего. Да они единую платформу для десктопов и мобилок, UWP/WinRT, сделали только к 2015 году.

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

тут пишут, что Sony конечно

Here are the top-ten best-selling consoles of all time:

    PlayStation 2 — 155 million units sold
    Nintendo DS — 154.02 million units sold
    Game Boy / Game Boy Color — 118.69 million units sold
    PlayStation 4 — 108.9 million units sold
    PlayStation 1 — 102.49 million units sold
    Wii — 101.63 million units sold
    PlayStation 3 — 87.4 million units sold
    Xbox 360 — 84 million units sold
    Game Boy Advance — 81.51 million units sold
    PlayStation Portable — between 80 and 82 million units sold

Way down in 15th place you have the Xbox One with an estimated 46.9 million units sold. The original Xbox lands at 19th place with 24 million units sold, behind the Atari 2600, Nintendo 64 and Sega Genesis. Meanwhile, PS1, PS2, PS3 and PS4 have each outsold every single Xbox system.

https://www.forbes.com/sites/erikkain/2020/02/28/theres-never-really-been-a-console-war-because-playstation-left-xbox-behind-from-the-start/#4007c72413d7

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

Назвать код, который третье десятилетие эксплуатируется сотнями миллионов копий академической поделкой — это сильно…

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

Назвать код, который третье десятилетие эксплуатируется сотнями миллионов копий академической поделкой — это сильно…

Всё равно большая часть функционала NT не используется или вообще недоступна для стороннего программиста. Эксплуатируется Win32, а не NT. OVERLAPPED IO, WDM драйвера и в Windows 9x работают.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 3)
Ответ на: комментарий от X512

Без драйверщика у вас не будет ничего.

Не вижу желающих сидеть в vesa режиме с ide диском и выходить в сеть через единственный поддерживаемый модуль сетевой карты.

Я в свою очередь не понимаю, почему отсутствие руководящей воли сделать четкое ddk и обозначить поверхность соприкосновения разных уровней абстракции выдается за какое-то преимущество.

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

Без драйверщика у вас не будет ничего.

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

Не вижу желающих сидеть в vesa режиме с ide диском и выходить в сеть через единственный поддерживаемый модуль сетевой карты.

Даже в любительских ОС нет такого.

Я в свою очередь не понимаю, почему отсутствие руководящей воли сделать четкое ddk и обозначить поверхность соприкосновения разных уровней абстракции выдается за какое-то преимущество.

Это не преимущество, просто это не имеет особой важности. Главное - интерфейсы режима пользователя. Ядро - это чёрный ящик.

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

Под линуксом многие годы драйвер ntfs существовал лишь потому, что имелась хоть и кривая-косая, но стабильная абстракция fuse. Сомневаюсь, что кто-то стал бы тащить этот код в ядре.

Просто частный пример.

В условиях хронической lack of manpower писать, что мол всего и всех хватает, это сильный ход.

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