mweerden: NT был спроектирован для многопользовательской работы с первого дня, так что на самом деле это не причина. Однако вы правы в том, что создание процессов играет в NT меньшую роль, чем в Unix, поскольку NT, в отличие от Unix, предпочитает многопоточность, а не многопроцессорность.
Роб, это правда, что форк относительно дешевый, когда используется COW, но на самом деле за форком в большинстве случаев следует exec. И исполнительный директор должен также загрузить все изображения. Таким образом, обсуждение эффективности fork является лишь частью правды.
При обсуждении скорости создания процесса, вероятно, будет хорошей идеей провести различие между NT и Windows / Win32. Что касается NT (то есть самого ядра), я не думаю, что создание процессов (NtCreateProcess) и создание потоков (NtCreateThread) значительно медленнее, чем в среднем в Unix. Возможно, будет происходить немного больше, но я не вижу основной причины разницы в производительности здесь.
Однако, если вы посмотрите на Win32, вы заметите, что он добавляет много накладных расходов на создание процесса. Во-первых, он требует, чтобы CSRSS был уведомлен о создании процесса, который включает в себя LPC. Для этого требуется как минимум ядро 32 для дополнительной загрузки, и он должен выполнить ряд дополнительных рабочих операций бухгалтерии, прежде чем процесс будет считаться полноценным процессом Win32. И давайте не будем забывать обо всех дополнительных накладных расходах, возникающих при разборе манифестов, проверке, требует ли образ прокладку совместимости, проверке применения политик ограниченного использования программ, yada yada.
Тем не менее, я вижу общее замедление в сумме всех тех мелочей, которые нужно сделать в дополнение к необработанному созданию процесса, пространства виртуальных машин и начального потока. Но, как было сказано в начале - из-за предпочтения многопоточности по сравнению с многозадачностью, единственное программное обеспечение, которое серьезно затронуто этими дополнительными расходами, - это плохо портированное программное обеспечение Unix. Хотя эта ситуация меняется, когда такие программы, как Chrome и IE8, внезапно открывают преимущества многопроцессорности и начинают часто запускать и завершать процессы ...