C++多核高级编程 - 04 多进程

一,进程概念,为什么是多进程而不是多线程

进程是由操作系统创建的工作单元。值得注意的是进程和程序未必是等同的。一个程序可能由多个任务组成,而每个任务可以和一个或多个进程相关联。程序是由程序员创建的,而进程是由操作系统创建的。一个工作单元要想被称作进程,它必须要有操作系统指派给他的地址空间,必须拥有进程ID,必须拥有状态和进程表中的表项。进程和线程之间最大的区别是进程有着自己的地址空间,而线程共享创建它们的进程的地址空间。

在将C++任务映射为操作系统能够理解的执行单元时,结果证明线程更易于编程,其主要原因是线程共享相同的地址空间,使得线程间的通信和同步都要易于进程。创建或终止线程所要做的工作都要少于创建进程的相关工作,而且速度也要快于进程。

那为什么还有使用进程呢?

首先,进程有自己的地址空间,可以有效的提供安全性和隔离性,阻止流氓进程的干扰。

其次,线程所能使用的打开的文件数目受限于一个进程能拥有的打开的文件数目。这使得使用进程时能够对更多的资源进行访问。

第三,对于多用户的程序,每个用户程序还是应该更独立一些,如果一个用户进程失败,其他用户还是可以继续工作的,但如果一个用户线程失败,则有可能影响所有用户的操作。

但使用多进程时进程间通信启动时间是主要的代价。

二, 对进程的详细讨论

当执行进程时,操作系统将它指定到一个处理器上。进程在一个时间片(quantum)内执行他的指令。进程是可抢占的。分为操作系统进程和用户进程。

操作系统进程:是执行的系统代码,也被称作内核进程。执行的是系统管理的任务。

用户系统进程:是执行的用户代码。


进程控制块 PCB

进程拥有一些标识来描述他们运行的特性。内核维护数据,并提供可以允许用户访问的接口。这些信息被保存在进程控制块中(Process Control Block)。

PCB中的信息:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值