为什么linux进程比windows更轻量级?

lov*_*ing 0 c++ linux multithreading

我听说linux进程比windows进程"轻量级".

Linux进程更像是Windows中的"线程".

因此,Oracle数据库等应用程序受到Linux中的多进程和Windows中的多线程的支持.

那么,这种"轻量级"是什么意思呢?

Sea*_*ean 6

"轻量级"意味着在Linux上创建新流程的成本低于在Windows上创建新流程的成本.成本一词基本上意味着必要的时间和操作系统资源.

Linux进程通过调用fork(2)启动一个新进程.这会创建一个新进程,但不会复制内存,因此非常快.而是将新进程的内存标记为写入时的副本,以便如果新进程开始更改其地址空间,则仅复制所触摸的页面.由于这种方法的速度,应用程序可以快速生成自己的新实例来处理传入的工作.它还具有优于线程的优势,如果子进程崩溃,它不会取消父进程.

Windows不支持fork,启动新进程的唯一方法是启动它的全新副本.这意味着即使进程即将启动自身的新实例,操作系统也必须将新进程视为完全独立的进程,并且无法使用当前正在运行的进程的页面.因此,启动新进程所需的时间比Linux要长.