进程和程序的区别 The relationship between process and program

遇到一个概念性的问题:程序和进程有什么区别?


一个程序是代码和数据的集合。一个进程是程序执行时候的一个特殊实例。程序总是运行于一个进程之中。

对于进程和程序概念性的区分对于理解fork函数和execl函数都是有很大帮助的。fork在相同的程序之中创建一个新的子进程,子进程具有父进程的很多性质,除了

fork返回值不同

PID不同

两者的父进程不同

父进程如果有文件锁,子进程不继承

父进程附加的信号,子进程不具有

tms结构体的值不同

几乎没有什么是不同的。在很大程度上,子进程 是父进程的一份拷贝



而exe family函数可以加载并运行新的程序。

很多时候,由于程序单进程而导致进程和程序的概念区分不清。这里要特别注意


一个进程触发和初始化一个程序!而一个程序能够多进程化,同时运行多个应用。

一个程序是可执行指令集的集合,目的是完成既定任务。



一个进程是一个模块,这个模块可以并行的执行其他模块。这些模块分别被加载到同一个用户指定的程序中。

 Process is always dependent on execution of a program. 


好比我写了一个hello world的source file。这个时候我编译链接完成生成了一个./a.out 

这个时候./a.out就是程序,他是数据和代码的集合,他是可执行的程序。这个时候还没process什么事


当我们在运行这个程序的时候,系统就会为我们的./a.out创建进程,进程就会触发并初始化我们的程序。在当前系统上执行这个程序的可执行指令。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值