C++多核高级编程:进程与线程的差异与应用

5 下载量 142 浏览量 更新于2024-08-27 收藏 201KB PDF 举报
"C++多核高级编程-多进程" 一、进程概念 进程是由操作系统创建的工作单元,值得注意的是进程和程序未必是等同的。一个程序可能由多个任务组成,而每个任务可以和一个或多个进程相关联。程序是由程序员创建的,而进程是由操作系统创建的。一个工作单元要想被称作进程,它必须要有操作系统指派给他的地址空间,必须拥有进程ID,必须拥有状态和进程表中的表项。 二、进程和线程的区别 进程和线程之间最大的区别是进程有着自己的地址空间,而线程共享创建它们的进程的地址空间。在将C++任务映射为操作系统能够理解的执行单元时,结果证明线程更易于编程,其主要原因是线程共享相同的地址空间,使得线程间的通信和同步都要易于进程。 三、为什么使用多进程 为什么还有使用进程呢?首先,进程有自己的地址空间,可以有效的提供安全性和隔离性,阻止流氓进程的干扰。其次,线程所能使用的打开的文件数目受限于一个进程能拥有的打开的文件数目。这使得使用进程时能够对更多的资源进行访问。第三,对于多用户的程序,每个用户程序还是应该更独立一些,如果一个用户进程失败,其他用户还是可以继续工作的,但如果一个用户线程失败,则有可能影响所有用户的操作。 四、进程的详细讨论 当执行进程时,操作系统将它指定到一个处理器上。进程在一个时间片(quantum)内执行他的指令。进程是可抢占的。分为操作系统进程和用户进程。操作系统进程:是执行的系统代码,也被称作内核进程。执行的是系统管理的任务。用户系统进程:是执行的用户代码。 五、进程控制块PCB 进程拥有一些标识来描述他们运行的特性。内核维护数据,并提供可以允许用户访问的接口。这些信息被保存在进程控制块中(ProcessControlBlock)。 PCB中的信息: * 进程当前的状态和优先级 * 进程标识,父进程的标识,子进程的标识 * 指向以分配资源的指针 * 指向进程内存位置的指针 * 指向父进程和子进程的指针 * 进程所使用的处理器 * 控制和状态寄存器 * 栈指针 六、进程的地址空间 在进程的地址空间内分为3个逻辑段:代码段,数据段,栈段。进程的地址空间是虚拟的。虚拟存储使得在执行的进程中引用的地址同内存中的实际可用的地址是无关的。这使得可寻址的存储空间大小远远大于实际的内存大小。 七、进程的优缺点 使用多进程时进程间通信和启动时间是主要的代价。多进程可以提供安全性和隔离性,阻止流氓进程的干扰。但是,使用多进程时需要考虑进程间的通信和同步问题。 八、结论 使用多进程可以提供安全性和隔离性,但是需要考虑进程间的通信和同步问题。在实际应用中,需要根据具体情况选择使用多进程或多线程。