C++ 为什么linux进程比windows';s

C++ 为什么linux进程比windows';s,c++,linux,multithreading,C++,Linux,Multithreading,我听说linux进程比windows进程“轻量级” Linux进程更像windows中的“线程” 因此,像Oracle数据库这样的应用程序在linux下是通过多进程实现的,在windows下是通过多线程实现的 那么,这种“轻量级”意味着什么呢?所谓“轻量级”,它们意味着在Linux上创建新进程的成本低于在Windows上创建新进程的成本。术语成本基本上是指所需的时间和操作系统资源 Linux进程通过调用启动一个新进程。这会创建一个新进程,但不会复制内存,因此速度非常快。相反,新进程的内存会被标记

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

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

因此,像Oracle数据库这样的应用程序在linux下是通过多进程实现的,在windows下是通过多线程实现的

那么,这种“轻量级”意味着什么呢?

所谓“轻量级”,它们意味着在Linux上创建新进程的成本低于在Windows上创建新进程的成本。术语成本基本上是指所需的时间和操作系统资源

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


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

在Linux上,线程和进程都是“任务”。在内核级别,两者没有分离。要创建一个新任务,您需要进行
克隆
系统调用,然后决定要与它共享哪些资源。当任务共享其父任务的内存空间时,您倾向于将其称为线程;当任务获得自己的内存空间时,您倾向于将其称为进程


因此,将Linux上的程序描述为多线程或多进程有点误导:在幕后它们是一样的。它们是否比Windows进程更轻量级?您必须编写一个基准来找到答案。

来自维基百科:“在Linux上,用户线程是通过允许某些进程共享资源来实现的,这有时会导致这些进程被称为“轻量级进程”,因为Linux和Unix有单独的和系统调用。阅读