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