现代操作系统-进程

进程是操作系统最核心的的概念,它是对正在运行程序的一个抽象。

1、进程模型

在进程模型中,计算机上所有可运行的软件,包括操作系统,被组织成若干顺序进程,简称进程(process)。一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。
一个进程是某种类型的一个活动,它有程序、输入、输出以及状态。当个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。

2、进程的创建

操作系统需要有一种方式来创建进程,其中,进程的创建因素:

  1. 系统初始化。
  2. 正在运行的程序执行了创建进程的系统调用。
  3. 用户请求创建一个新进程。
  4. 一个批处理作业的初始化。

停留在后台处理之类活动的进程称为守护进程

在UNIX系统中,只有一个系统调用可以用来创建新进程:fork。这个系统调用会创建一个与调用进程相同的副本。
在windows和UNIX系统中,进程创建之后,父进程和子进程有各自不同的地址空间。如果其中某个进程在其地址空间中修改一个字,这个修改对其他进程而言是不可见的。

3、进程的终止

进程在创建后,执行相应的工作后,会因为不同的方式终止,通常有以下因素:

  1. 正常退出(自愿的)。
  2. 出错退出(自愿的)。
  3. 严重错误(非自愿)。
  4. 被其他进程杀死(非自愿)。

在UNIX中调用exit来表示已经完成工作结束进程,而Windows中,则调用的是ExitProcess。

4、进程的层次结构

一个进程只有一个父进程,但是可以有零个、一个、两个或多个子进程。

在UNIX中,进程和它所有子进程以及后裔共同组成一个进程组。而在windows系统系统中没有进程层次概念,所有的进程都是地位相同的。

5、进程的状态以及实现

1. 状态

尽管每个进程有一个独立的实体,有其自己的程序计数器和内部状态,但是进程之间经常需要相互作用,一个进程的输出结果可能作为另一个进程的输入。
进程的三种状态:

  1. 运行态(该时刻进程实际占用CPU)。
  2. 就绪态(可运行,但因为其他进程正在运行而暂时停止)。
  3. 阻塞态(除非某种外部事件发生,否则进程不能进行)。
    运行和就绪状态在逻辑上类似,处于这两种状态的进程都可以运行,只是对于就绪态,暂时没有CPU分配给它。而阻塞态的进程不能运行,即使CPU空闲也不行。
    进程的三种状态
    一个进程可处于运行态、阻塞态和就绪态,各状态之间的转换如下:
  4. 进程因为等待输入而被阻塞。
  5. 调度程序选择另一个进程。
  6. 调度程序选择这个进程。
  7. 出现有效输入。

基于进程的操作系统中最底层的是中断和调度处理,在该层之上是顺序进程。

2. 实现

操作系系统维护进程表进行实现进程模型,每个进程占用一个进程表项。该表项包含了进程状态的重要信息(程序计数器、堆栈指针、内存分配状态、所打开文件的状态、账号和调度信息,以及其他在进程由运行到就绪态),保证该进程随后能再次启动,就像从未被中断过一样。
与每一I/O类关联的是一个称作中断向量的位置,它包含中断服务程序的入口地址。所有的中断都是从保存寄存器开始的,对于当前进程而言,通常是保存在进程表项中。随后会从堆栈中删除由中断硬件机制存入堆栈的那部分信息,并将堆栈指针指向由一个由进程处理程序所使用的临时堆栈。
一个进程在执行过程中可能被中断数千次,但关键是每次中断后,被中断的进程都返回到与中断发生前完全相同的状态。

6、多道程序设计模型

采用多道程序设计可以提高CPU利用率。严格地说,如果进程用于计算机的平均时间是进程在内存中停留时间的20%,且内存中同时有5个进程,则CPU将一直满负载运行。
更好的模型是从概率的角度来看CPU的利用率。CPU利用率是内存中进程数目的函数:CPU利用率=1-P^n;p表示一个进程等待I/O操作的时间与其停留在内存中时间的比。当内存中同时有n个进程时,则所有n个进程都在等待I/O(此时CPU空转)的概率的p的n次方。
函数关系
以n为变量的函数表示了CPU的利用率,n称为多道程序设计的道数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值