Linux中为什么要创建子进程?

Linux中为什么要创建子进程?,第1张

创建子进程才能多道程序并发执行,linux初始化的时候会创建swap进程、然后是init进程和一个init进程的兄弟进程,所有的进程(运行的程序)都是从父进程演化出去的,你可以看看proc里的东西,写个程序打印出各个进程的父进程~网上有源代码的,要的话我给你

咱要先搞明白进程究竟是什么,进程是资源分配的单位,是运行的程序。既然是运行的程序,一个进程自然只能代表一个程序,多道程序设计自然而然就有了多进程的概念。举个例子,多进程(线程)下载,我们可以给一个需要下载的资源分片,多个进程从不同的片分时下载,这样就提高了下载速度,因为对一个程序分配的更多的资源,你试试开迅雷的时候打开个网页,保证你觉得奇卡无比,因为网络带宽(资源)被迅雷的多个进程占用了。其实在本地的多进程程序并不多见,比如word算是个典型的多进程程序,有个进程接受你的键盘输入,有拼写检查进程,有显示进程等等。大多数都用到网络上了,比如服务器。一台服务器要在“同一时间”处理来自很多客户端的请求,这就必须使用多进程。

我个人觉得这跟汇编语句执行时的一种优化策略——分支预测 有点类似,分支预测讲的是在一个for循环100次的程序中,其选择分支跳转的语句,有99次跳转和1次不跳转,那么CPU在处理分支跳转时会默认当作跳转处理,以节省99次跳转的时间,而那一次不跳转则会由于这种默认而浪费时钟周期重新取指令,这种将普遍情况设为默认的做法,与我们的问题场景比较类似,因为在主进程创建子进程后往往需要等子进程完成其运行并返回结果才能使主进程继续运行,以至于fork()函数常常与wait()函数搭配使用以控制程序的运行次序,所以在大多数情况下,父进程创建完子进程后将资源让渡给子进程会更有利于程序的运行,这种情况如此普遍以至于成为一种默认的调度方式以在大多数情况下节省调度时间。

个人理解,仅供参考。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8721436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存