c++ - 为什么linux进程比windows轻量级?

标签 c++ linux multithreading

<分区>

听说linux进程比windows进程“轻量级”。

Linux进程更像是windows中的“线程”。

因此,Oracle 数据库等应用程序在 linux 中实现了多进程,在 windows 中实现了多线程。

那么,这个“轻量级”是什么意思呢?

最佳答案

“轻量级”是指在 Linux 上创建新进程的成本低于在 Windows 上创建新进程的成本。成本一词基本上是指所需的时间和操作系统资源。

Linux 进程通过调用 fork(2) 启动一个新进程.这会创建一个新进程,但不会复制内存,因此速度非常快。相反,新进程的内存被标记为 copy on write因此,如果新进程开始更改其地址空间,则只会复制接触到的页面。由于这种方法的速度,应用程序可以快速生成自己的新实例来处理传入的工作。与线程相比,它还有一个优势,即如果子进程崩溃,它不会关闭父进程。

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

关于c++ - 为什么linux进程比windows轻量级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21577051/

相关文章:

linux - Vim 不显示最后一个空行

c# - 从另一个线程捕获异常

DB写操作中的Java并发

java - java中Thread.interrupted()如何工作?

c++ - 检查迭代器是否对 QT 容器有效

linux - 我的 Android 手机中有大约 50 个 kcryptd 进程?

c++ - 使一些对象对用户可用

linux - 如何使别名在运行时工作?

c++ - 出现随机 ascii 字符

c++ - 正则表达式很奇怪