Найти тему
Holpa

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

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

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

Некоторые люди просто приравнивают сложность кода к размеру, часто измеряемому в строках кода (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 # но это относительно небольшой процент от общей базы кода.

Здесь не включены 16-битные версии, выпущенные с 1985 по 2000 годы. 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

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

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