进程和程序间的区别

在UNIX 中,进程是正在执行的程序。它相当于Windows 环境内的任务这一概念。每个进程包括程序代码和数据。其中数据包含程序变量数据、外部数据和程序堆栈等。每个进程有一个程序计数器,用于存放下一条指令所在单元的地址。

关于进程和程序的区别,《现代操作系统》中用了一个比喻形象说明,我觉得很明了清晰,摘抄在这里:

一位有一手好厨艺的计算机科学家正在为他的女儿烘制生日蛋糕。他有做生日蛋糕的食谱,厨房里有所需要的原料,在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法),计算机科学家就是处理机(CPU),而做蛋糕的各种原料就是输入数据。进程就是厨师阅读食谱,取来各种原料以及烘制蛋糕等一系列动作的总和。

现在假设计算机科学家的儿子哭着跑了进来,说他被一只蜜蜂蛰了。计算机科学家就记录下他照着食谱做到哪儿了(保存进程的当前状态),然后拿出一本急救手册,按照其中的指示处理蛰伤。这里,我们看到处理机从一个进程(做蛋糕)切换到另一个高优先级的进程(实施医疗救治),每个进程拥有各自的程序(食谱和急救手册)。当蜜蜂蛰伤处理完之后,这位计算机科学家又回来做蛋糕,从他离开的那一步继续做起。

这里的关键思想是:一个进程是某种类型的一个活动,它有程序、输入、输出以及状态。单个处理机可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。

---------------------------------------------------------------------------------------------------------------------------------------

守护进程--停留在后台处理诸如电子邮件、Web页面、新闻、打印之类活动的进程。


导致创建进程的四种原因:
1、系统初始化
2、执行了从事创建进程的一个系统调用,该系统调用被正在执行的进程所调用。
3、用户请求创建一个新进程
4、一个批处理作业的初始化(仅在大型机的批处理系统中应用)


UNIX---fork + execve
Windows---CreateProcess


进程的终止:
1、正常退出
2、出错退出
3、严重错误
4、被其他进程杀死


进程的层次结构:
1、UNIX---父子进程是继承的关系
2、Windows---父进程持有控制子进程的句柄,但可以转让,不存在层次结构


进程的状态:
1、运行态
2、就绪态
3、阻塞态          

   

1. 进程为等待输入而阻塞

2. 调度程序选择另一个进程

3. 调度程序选择这个进程

4. 出现有效输入


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值