leonardovich683

Categories:

Насколько сложен код в Microsoft Windows

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

Конечно, чтобы прочитать и понять код, вам нужно было иметь представление об общей архитектуре Windows NT. Вероятно, лучшим источником информации о внутренностях Windows сегодня являются книги о Windows Internals 7th Edition (два тома).

Внутреннее устройство Windows:Марк Руссинович, 7-е издание 2018 книга PDF

Внутреннее устройство Windows Руссинович Марк 7-е издание 2018 книга PDF
Внутреннее устройство Windows Руссинович Марк 7-е издание 2018 книга PDF

Торрент файл,проверен.Работает.

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

Тем не менее, вот некоторые лакомые кусочки о размере современной кодовой базы Windows. Строки кода здесь являются приблизительными и неофициальными , но основаны на достаточно надежных источниках. Это иллюстрирует, как база кода Windows NT развивалась с 1993 года:

Windows NT 3.1 (1993) - 5,6 миллиона строк исходного кода (MLOC)

Windows NT 3.5 (1994) - 8,4 MLOCs

Windows NT 3.51 (1995) - 10,2 MLOCs

Windows NT 4.0 (1996) - 16 MLOC

Windows 2000 (2000) - 29 MLOC

Windows XP (2001) - 35 MLOC

Windows Vista (2007) - 45 MLOCs

Windows 7 (2009) - 42 MLOCs

Windows 8 (2012) - 50 MLOCs

Windows 10 (2015) - 55 MLOCs

Исходный код Windows состоит в основном из C, C ++ и небольшого количества кода на ассемблере. Некоторые из утилит пользовательского режима и т. д. Находятся в C # но это относительно небольшой процент от общей базы кода.

Windows. NT была основой для всех современных 32-битных и 64-битных версий Windows. Количество строк кода в серверных версиях было таким же, как и в не серверных версиях, выпущенных в том же году (т. е. они имели одинаковую базу исходного кода).

Работа над ядром NT началась в 1988 году, она была написана с нуля как 32-разрядная превентивная многозадачная ОС. Ядро NT впервые загрузилось в июле 1989 года на процессоре Intel i860 RISC. С самого начала был сильный толчок к тому, чтобы новая ОС была переносимой на различные архитектуры ЦП и не была привязана только к архитектуре Intel x86 (IA-32). NT в конечном итоге работал на MIPS, DEC Alpha, PowerPC, Itanium и, конечно, Intel x86 и x64.

Некоторая сложность была добавлена к базе кода, прежде всего на уровне абстрагирования оборудования (HAL), для поддержки архитектур не-Intel.

Чтобы примерно было понятно посмотрите на картинку:

Это трассировка вызовов Linux для apache в Linux.
Это трассировка вызовов Linux для apache в Linux.

А вот трассировка вызовов для microsoft IIS

Трассировка вызовов для microsoft IIS
Трассировка вызовов для microsoft IIS

Вот ссылка где можно увидеть картинки получше и почитать про них.

http://web.archive.org/web/20060615055607/http://blogs.zdnet.com/threatchaos/?p=311

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

ОС - это очень сложный продукт. Часто имеет legacy-код. Вероято, нет ни одного человека в мире, который знает полностью весь код windows. Т.о. задача "выпилить что-то" превращается в задачу анализа разных компонент ОС (чтобы ничего не отвалилось), задачу выпиливания и задачу тестирования регрессионных багов (с покрытием тестами заведомо меньше 100% кода).

В результате, могут появится "непоправимые улучшения", которые приходится откатывать (патч на патч). Что мы сейчас и наблюдаем у MS - то одно отваливается, то другое. Это не такая простая задача, как кажется.

Было несколько слияний кода начиная с win95 и nt4 завершившихся окончательным слиянием веток в winxp.
По сути winxp это слегка допиленное ядро win2000(в основном в части скорости загрузки) поверх которого натянута модернизированная оболочка разработанная для win me.Это стало возможным потому что ядро начиная win95 было по большей части 32 битным и предоставляло 32 битное winapi

Да, в 16 битных ОС подавляющее большинство кода было 32 бита. Но стартовали они поверх МС-ДОС, и режим был для загрузки в голом МС-ДОС. У НТ с самого начала такого рудимента не было. Ну, и, олдфаги прекрасно помнят, что ХП — разукрашенная Вин2000 с выпиленными серверными компонентами. Были такие варианты ХП, как ХП Фреймворк (в результате чего ХП через копирование кусков реестра внезапно превращался в домашний полноценный сервер на 10 пользователей).

Парадокс,конечно..Пара перцев(Марк Русинович и Дэвид Соломон),знающих всю кухню оси,лучше индийско-китайских разработчиков..Да ешё после увольнения людей кодящих всё семейство NT..

Error

Anonymous comments are disabled in this journal

default userpic