进程(1)

                                                                         进程

为何有进程的存在????????

多个程序在执行时都想占用CPU,但CPU没有分身术,于是OS设计者发明了进程这一概念。

伪并行:CPU在多道程序之间快速的切换。

 

程序和进程

进程是正文段、用户数据段和系统数据段的信息的交叉综合体,其中系统数据段是进程实体最重要的一部分程序是由一组指令和数据组成的静态事物,他们是程序最初使用的正文段和用户数据段。程序装入内存以后才得以运行,在程序计数器的控制下,指令不断的从内存取至CPU中运行。程序的执行过程可以看成是一个执行环境的总和,这个执行环境除了包括程序中的各种指令和数据外,还有一些额外的数据比如寄存器的值、用来保存临时数据的堆栈、被打开的文件及输入输出设备的状态等。上述执行环境的动态变化表征了程序的运行。

 

进程映像:进程是一个动态的实体,随着程序中指令的执行而不断的变化,在某个时刻进程的内容被称为进程映像。

 

linux是多任务OS:可以有多个进程同时装入内存并运行,OS为每一个进程建立一个运行环境即创建进程。运行环境也是“进程的上下文”。

 

进程是由正文段、用户数据段、系统数据段共同组成的一个执行环境。

正文段:存放被执行的机器指令,这个段是只读的,她允许OS中正在运行的两个或者多个进程之间能够共享这一代码。例如,有几个用户都在使用文本编辑器,在内存中仅需要该程序指令的一个副本,他们全都共享这一副本。

用户数据段:存放程序在执行时直接进行的操作的所有数据,包括程序使用的全部全局变量在内,这里包含的信息可以被改变。进程之间可以共享正文段,但是每个进程需要有他自己的专用用户数据段。

系统数据段:该段有效的存放程序运行的环境。这正是程序和进程区别所在。这一部分存放进程的控制信息,系统中有许多进程,OS要管理他们、调度他们运行就是通过这些控制信息。LINUX OS为每个进程建立了task_struct数据结构来容纳这些控制信息。

 

进程的层次结构:

进程有生命周期,在系统中进程的生死随时发生。

每个进程都只有一个父进程(INIT进程除外),但可以有0个或者多个子进程。可以使用fork来创建一个子进程

LINUX启动的时候就创建一个称为init的特殊进程,故名思议,他是起始进程是祖先进程以后诞生的所有进程都是他的后代。init进程为每一个终端创建一个新的管理进程,这些进程在终端上等待着用户的登陆,当用户正确登陆后系统再为每个用户启动一个shell进程,有shell进程等待并接受用户输入的命令信息。init进程还负责管理系统中的孤儿进程,如果某个进程创建子进程之后就终止,而子进程还活着,则子进程成为孤儿进程。init负责收养孤儿进程。

可以使用pstree来查看系统中的树状结构以清楚表示程序间的相互关系。

 

进程状态:

最基本的进程之间有以下三种状态

运行态:进程占有cpu并在cpu上运行。

就绪态进程已经具备运行条件,但由于CPU忙而暂时不能运行。

阻塞态:进程因等待某种条件的发生而暂时不能运行(即使CPU空着也不能运行)

进程在生命周期中处于且仅处于三种基本状态之一、

运行态-》阻塞态:进程发现他不能运行下去时发生这种转换,例如IO请求或者等待某件事情

运行态-》就绪态:系统认为运行进程占有CPU的时间已经过长。

就绪态-》运行态:运行进程已经用完分配给他的CPU的时间,调度程序从处于就绪状态的进程中选择一个进程投入运行

阻塞态-》就绪态:当一个进程等待一个外部事件发生时则发生这种转换。

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值