Почему процесс Linux легче, чем Windows?

0

Я слышал, что процесс linux является "легким", чем процесс Windows.

Процесс Linux больше похож на "поток" в окнах.

Таким образом, приложения, такие как Oracle Database, внедряются многопроцессорными процессами в linux и многопоточными в windows.

Итак, что означает этот "легкий вес"?

  • 0
    из википедии: «В Linux пользовательские потоки реализуются, позволяя определенным процессам совместно использовать ресурсы, что иногда приводит к тому, что эти процессы называют« процессами легкого веса »»
  • 0
    Потому что Linux и Unix имеют отдельные системные вызовы fork (2) и execve (2) . Прочитайте Расширенное программирование Linux .
Теги:
multithreading

2 ответа

6
Лучший ответ

Под "легким" они подразумевают, что стоимость создания нового процесса в Linux меньше затрат на создание нового процесса в Windows. Термин стоимость в основном означает время и ресурсы ОС.

Процессы Linux запускают новый процесс, вызывая fork (2). Это создает новый процесс, но не дублирует память и поэтому очень быстро. Вместо этого память нового процесса помечена как копия при записи, так что если новый процесс начнет изменять его адресное пространство, будут скопированы только те страницы, которые были затронуты. Из-за скорости этого подхода приложения могут быстро создать новый экземпляр для обработки входящей работы. Он также имеет преимущество перед потоками, если дочерние процессы выходят из строя, он не будет выполнять родительский процесс.

Windows не поддерживает fork и единственный способ начать новый процесс - запустить совершенно новую копию. Это означает, что даже если proces собирается запустить новый экземпляр сам по себе, ОС будет обрабатывать новый процесс как полностью независимый процесс и не сможет использовать страницы текущего процесса. Из-за этого для запуска нового процесса требуется больше времени, чем для Linux.

2

В Linux потоки и процессы - это и "задачи". На уровне ядра нет разделения этих двух. Чтобы создать новую задачу, вы делаете системный вызов clone и вы решаете, какой из ваших ресурсов вы хотите поделиться с ним. Когда задача разделяет пространство памяти его родителя, вы, как правило, называете его потоком, и когда он получает собственное пространство памяти, вы обычно называете это процессом.

Поэтому описание программы в Linux как многопоточного или многопроцессорного процесса мало вводит в заблуждение: за кулисами они одинаковы. Являются ли они более легкими, чем процессы Windows? Вам нужно будет написать тест, чтобы узнать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню