进程

一、进程

1.背景

开发操作系统是为了给应用程序提供一个方便的、安全的、一致的接口。操作系统是计算机硬件和应用程序之间的一层软件,对应用程序提供了支持。

可以把操作系统想象成为资源的统一表示,可以被应用程序请求。资源包括:内存、网络接口、文件系统等。一旦操作系统为应用程序创建了这些资源的抽象表示,就必须管理他们的使用。例如:一个操作系统可以允许资源共享和资源保护。

2.进程和进程控制块

2.1进程定义:

   一个正在执行的程序。

   一个正在计算机上执行的程序实例。

   能分配给处理器并由处理器执行的实体。

   一个具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集。

2.2进程的基本元素

  程序代码、与代码相关联的数据集

2.3进程控制块

(1)该进程快由操作系统创建和管理。进程控制块包含充分的信息,这样可以中断一个进程的执行,并且在后来恢复执行进程时就好像进程从未中断过一样。

(2)当进程中断时,操作系统会把程序计数器和处理器寄存器(上下文数据)保存到进程控制块中的相应位置,进程状态就会被改变撑起他的值。(阻塞态或者就绪态)

(3)操作系统可以自由地把其他的进程置为运行态,把其他进程的程序计数器和进程上下文数据加载到处理器寄存器中,这样其他的进程就可以开始执行。

(4)因此,进程由程序代码和相关数据还有进程控制块组成的。对于单处理器计算机,在任何时间最多都只有一个进程在执行,正在运行的这个进程是运行态。

二、进程状态

1.示例

假设操作系统仅允许一个进程连续执行6个指令周期,在此之后中断,避免一个进程独占处理器。进程B的第四条指令调用了进程必须等待的I/O操作。

2.两状态进程模型

队列轮转图:被中断的进程转移到等待进程的队列中,或如果进程已经结束或者取消则被销毁。在任何一种情况下,分派器从队列中选择一个进程来执行。

3.进程的创建与终止

3.1进程的创建:当一个新进程被添加到那些正在被管理的进程集合中去,操作系统需要建立用于管理该进程的数据结构,并在内存中给他分配地址空间 。

3.2创建进程的四个事件:

(1)新的批处理作业

(2)交互登录

(3)操作系统因提供一项服务而创建

(4)由现有的进程派生

3.3进程终止的原因

  正常完成  超过时限   无可用内存  越界  保护错误  算数错误  时间超出     

  I/O失败   无效指令   特权指令  数据误用  父进程终止  父进程请求

4.五状态模型

4.1状态转移

(1)新建 -> 就绪

操作系统准备好再接纳一个新进程时,把一个进程从新建态转换到就绪态。大多数系统基于现有的进程数或分配给现有的进程虚存数量设置一些限制,以确保不会因为活跃进程的数量过多而导致系统的性能能下降。

(2)运行 -> 就绪

最常见的原因是进程到达了“允许不中断执行”的最大时间段。还有其他原因:操作系统给不同的进程分配不同的优先级,加入进程A在一个给定的优先级运行,而具有更高优先级的进程B正处于阻塞态。如果操作系统直到B进程等待的事件已经发生了,则B转换到就绪态,然后因为优先级的原因终端进程A的执行,将处理器分派给进程B,说操作系统抢占了进程A。最后一种情况是进程自愿释放对处理器的控制。

(3)就绪/阻塞 –> 退出

父进程可以在任何时刻终止子进程。如果一个父进程终止,与该父进程相关的所有子进程都将会终止。

 

最优改进:按照优先级方案分配进程,维护多个就绪队列,每个优先级一个队列,会更加便利。操作系统很容易确定哪一个就绪进程具有最高的优先级且等待的时间最长(先进先出队列)。

5.被挂起的进程

5.1.机制原因是因为I/O活动比计算机速度慢得多,所以处理器大多时间是空闲的,解决办法是:

  (1)扩充内存:内存价格高。更大的内存往往导致更大的进程,而不是更多的进程。

  (2)交换(I/O操作):包括把内存中的某个进程的一部分全部移到磁盘中,当内存中没有处于就绪状态的进程时,操作系统就把被阻塞的进程换出到磁盘中的“挂起队列”,即暂时保存从内存中被“驱逐”出来的进程队列,或是被挂起的进程队列,操作系统在此之后取出挂起队列的另一个进程,或者接受一个新进程的请求,将其纳入内存中执行。

5.2  2V2组合(进程是否等待一个事件“阻塞与否”以及进程是否已经被换出内存“挂起与否”)

就绪态:进程在内存中并可以执行

阻塞态:进程在内存中并等待一个事件

阻塞/挂起态:进程在外存中并等待一个事件

就绪态/挂起态:进程在外存中,但是只需要被加载入内存中就可以执行

在虚拟内存方案中,可能会执行到只有一部分内容在内存中的进程,如果访问的进程地址不在内存中,则进程的相应部分可以被调入内存。如果有足够多的活动进程,并且所有进程都有一部分在内存中,则有可能导致虚拟内存系统崩溃。因此,即使在虚拟存储系统中,操作系统也需要不时地根据执行情况,显示的,完全换出进程。

(1)就绪 -> 就绪/挂起

通常会挂起阻塞态的,因为就绪态可以直接执行,而阻塞态进程占有空间却不能执行。但如果释放内存的唯一方法是挂起就绪态进程,这也是必须的转换。并且如果操作系统确信高优先级的阻塞态进程,那么它可能选择挂起一个低优先级的就绪态进程,而不是一个高优先级的阻塞态进程。

 

 

(2)导致进程挂起的原因

交换               操作系统需要足够的内存空间,以调入并执行处于就绪态的进程

其他OS原因        操作系统可能挂起后台进程或工具程序进程,或者被怀疑导致问题的进程

交互式用户请求     用户希望挂起一个程序执行,目的是为了调试或与一个资源的使用进行连接

定时               一个进程可能会周期式执行周期式挂起

父进程请求         父进程可能会希望挂起子进程的执行,一检查修改挂起的进程

 

三、进程描述

1.操作系统的控制结构

2.进程控制结构

2.1进程位置

(1)一个进程至少包括足够欧的内存空间,以保存该进程的程序与数据,此外程序的执行通常涉及用于跟踪过程调用和过程见参数传递的栈。最后,与每个进城相关联的还有操作系统用于控制进程的属性。通常,属性的集合称为进程控制块,程序、数据、栈和属性的集合称为进程映像。

(2)进程映像的位置依赖于使用的内存管理方案,因此,如果操作系统要管理进程,其进程映像至少有一部分必须位于内存中,未执行该进程,整个进程必须载入内存中或者至少载入虚拟内存中。因此,操作系统需要知道每个进程在磁盘中的位置。(操作系统维护的进程必须标明每个进程映像中的每页的位置)

(3)进程映像元素

  用户数据

用户程序

  系统栈           栈用于保护参数 过程调用地址  系统调用地址

  进程控制块       操作系统控制系统所需要的数据

2.2进程属性

(1)标识符

     进程ID  父进程ID   用户ID

(2)控制和状态寄存器

     程序计数器   条件码   状态信息

(3)调度和状态信息

     进程状态  优先级  调度相关信息 

 等等

2.3进程控制块信息

   进程标识信息  进程状态信息   进程控制信息

虚拟内存中进程映像的结构 没有进程映像包括一个进程控制块、用户栈,进程的专用地址空间以及与别的进程共享的任何其他地址空间。 

四、进程控制

1.执行模式:用户态、内核态

两种模式可以保护操作系统和重要的操作系统表不受用户程序的干扰。处理器通过程序状态字判断是什么模式。

2.进程创建

(1)给信进程分配一个唯一的进程标识符,此时,在主进程表中增加一个新表项,表中的每一个表项对应着一个进程

(2)给进程分配空间(包括进程映像中所有的元素),因此操作系统必须知道私有用户地址空间(数据和程序)和用户栈需要多少空间。

(3)初始化进程控制块进程标识符、处理器状态信息部分初始化为0,但PC和系统栈指针除外。进程状态被初始化就绪或者就绪/挂起,默认最低优先级。除了显示继承父进程,否则进程最初不拥有任何资源。

(4)设置正确的连接,如果操作系统把每个调度队列都保存为立案表,则新进程必定放置在就绪/挂起或者就绪链表中。

3.进程切换

3.1

(1)系统中断包括中断和陷阱:中断与当前重在运行的进程无关的某种类型的外部事件有关,如完成一次I/O操作。陷阱与当前正在运行的进程产生的错误或异常有关,如非法访问。

(2)对普通中断控制首先转移给中断处理器,他做一些基本的辅助工作,然后转到与已经发生的特定类型的中断相关的操作系统例程

3.2模式切换

在中断阶段中,处理器检查是否发生了任何中断,通过信号标识,如果没有未处理的中断,处理器继续读取指令周期,如果存在,处理器将做以下步骤:

(1)把PC置成中断处理程序的开始地址

(2)从用户态切换内核态,是中断处理代码可以包含特权指令。

处理器现在继续取址阶段,并取中断处理程序的第一条指令,它将给中断提供服务。此时,被中断的进程上下文保存在被中断程序的进程控制块中。

上下文环境包括所有中断处理可能改变的信息和恢复被中断程序时所需信息。因此,必须保存称为处理器状态信息的进程控制块部分,这包括PC、其他处理器寄存器和栈信息。

大多数操作系统中,中断的发生并不伴随进程切换,保存和恢复由硬件来实现。

3.3进程状态的变化

模式切换可以不改变进程状态,很小的开销。但是进程状态切换则操作系统必须使其环境产生实质性的变化,步骤如下:

(1)保存处理器上下文环境,包括PC、其他寄存器

(2)更新当前处于运行态进程的进程控制块

(3)将进程的进程控制块转移到相应的队列

(4)选择另一个进程执行

(5)更新所选进程的进程控制块

(6)更新内存管理的数据结构

(7)恢复处理器在被选择的进程最近一次切换出运行态时的上下文环境,这可以通过载入程序计数器和其他寄存器以前的值来实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值