进程的描述、控制与通信

一、概念

  1. 进程的状态
    • 进程的最基本状态
      • 就绪态
      • 执行态
      • 阻塞态
        进程的描述、控制与通信_第1张图片
    • 为保证完整性,再引入两种状态
      • 创建态
      • 终止态
        进程的描述、控制与通信_第2张图片
    • 引入挂起操作后,引入的状态
      • 活动就绪
      • 静止就绪
      • 活动阻塞
      • 静止阻塞
        进程的描述、控制与通信_第3张图片

挂起:当挂起操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如正在执行的进程会暂停执行;处于就绪状态的进程将暂不接受调度。与挂起对应的操作是激活

  1. 进程管理中的数据结构:系统对每个资源和进程都设置了一个数据结构用于表征其实体,其中包含了资源和进程的各种信息和一批指针。通过这些指针,可以将同类资源和进程的信息表,或同一进程所占用的资源信息表分类链接成不同队列,便于OS查找。OS管理的这些控制表一般可分为如下四类
    • 内存表
    • 设备表
    • 文件表
    • 进程表(即PCB)
      • 作用:
        • 作为独立运行基本单位的标志:系统通过PCB来感知进程,一个程序只有配置了PCB后,才表示其能够开始在多道程序环境下独立运行
        • 实现间断性运行方式:因调度或阻塞而暂停运行时,系统将CPU现场信息保存在该进程的PCB中(这点也可证明第一点,传统意义上的静态程序因为没有这些保护运行现场的手段,故而不能在多道程序环境下正常执行)
        • 提供进程管理所需信息:如程序和数据(在内存或外存的)始址、该进程所需的全部资源信息等
        • 提供进程调度所需信息:如进程优先级、进程等待时间和已执行时间等
      • PCB的组织方式
        • 线性方式:把系统中所有PCB组织在一张线性表中
        • 链接方式
        • 索引方式:根据进程状态的不同建立不同的索引表,如就绪索引表、阻塞索引表,把各索引表在内存中的起始地址记录在内存的一些专用单元中。在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址

二、进程控制

  1. 进程的创建
    • 引起进程创建的事件
      • 用户登录:分时系统中,用户在终端登录成功后,系统会为该用户创建一个进程并将其插入就绪队列中
      • 作业调度:调度作业时,会将他们装入内存、为其创建进程,并把它们插入就绪队列中
      • 提供服务:如用户进程要求打印文件,系统就为其创建一个打印进程,这样打印进程可与该用户进程并发执行,还便于计算完成打印任务所需花费的时间
      • 应用请求:上述三种都是系统内核为用户创建新进程,应用请求这类事件是用户进程自己创建新进程,以使新进程以同创建进程并发执行的方式完成特定任务。如某用户进程需要不断地先从键盘终端读入数据,再对读入的数据进行相应处理,最后将处理结果以表格的形式显示在屏幕上。该用户进程为使这几个操作能并发执行以加速完成任务,可分别建立键盘输入进程、数据处理进程和表格输出进程
    • 进程创建的步骤:
      • 申请空白PCB
      • 为新进程分配其运行所需的资源:如内存、文件、I/O设备、CPU时间等
      • 初始化PCB
      • 若进程就绪队列能接纳新进程,就将新进程插入就绪队列
  2. 进程的终止
    • 引起进程终止的事件
      • 正常结束
      • 异常结束
        • 越界错:程序所访问的存储区越出该进程所占存储区域的范围
        • 保护错:进程试图去访问一个不允许访问的资源或文件,或写一个只读文件这种
        • 指令错:程序试图执行一条不存在的指令(非法指令),出现该错误的原因可能是程序错误地转移到了数据区,把数据当成了指令
        • 特权指令错:进程试图执行特权指令
        • 运行超时:进程的运行时间超过了设定的最大值
        • 等待超时:进程等待某事件的时间超过了指定的最大值
        • 算术运算错:如整除0
        • I/O错:指在I/O过程中发生了错误
      • 外界干预
        • 操作员或OS干预:如发生系统死锁,则由操作员或OS采取终止某些进程的方式,把系统从死锁状态中解救出来
        • 父进程请求:当子进程完成父进程所要求的任务时,父进程可提出请求以结束该子进程
        • 父进程终止:当父进程终止时,它的所有子孙进程都应当结束
    • 进程的终止过程
      • 根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,并读出其状态
      • 若处于执行状态:则立即终止该进程的执行,并置调度标志为真,以指示该进程被终止后应重新进行调度
      • 若该进程还有子孙进程:则应终止其所有子孙进程,以防止它们成为不可控的进程
      • 将被终止的进程所拥有的全部资源,或归还给其父进程,或归还给系统
      • 将被终止进程的PCB从其所在队列(或链表)中移出,等待其他程序来搜集信息
  3. 进程的阻塞与唤醒
    • 引起进程阻塞与唤醒的事件
      • 向系统请求共享资源失败:如进程请求使用打印机,而系统已将打印机分配给了其他进程,这时该进程就会被阻塞,仅在其他进程释放打印机后,才会被唤醒
      • 等待某种操作的完成:如进程在启动了某I/O设备后,变自动进入阻塞状态等待,I/O操作完成后,再由中断处理程序将该进程唤醒
      • 新数据尚未到达
      • 等待新任务的到达
    • 进程阻塞过程:正在执行的进程,若发生了上述事件,就会自动调用block原语阻塞。进入block阶段后,系统先停止执行该进程,把PCB中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。最后转到调度程序进行重新调度操作,将处理机分配给另一就绪进程并进行切换,即保留被阻塞进程的处理机状态,并按照新进程的PCB中的处理机状态设置CPU的环境
    • 进程唤醒过程:当被阻塞进程所期待的事件发生时,有关进程会调用唤醒原语wakeup以将等待该事件的进程唤醒。调用wakeup后,首先把被阻塞进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞态改为就绪,然后将该PCB插入就绪队列中
  4. 进程的挂起与激活
    • 挂起:首先检查被挂起进程的状态,若为活动就绪状态则将其改为静止就绪状态,若为活动阻塞状态则也将其改为静止就绪状态。然后将该进程的PCB复制到某指定的内存区域。最后若被挂起的进程正在执行,则转向调度程序重新调度
    • 激活:先将进程从外存调入内存,然后检查其现行状态。若为静止就绪就改为活动就绪,若为静止阻塞就改为活动阻塞。若采用抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,就检查是否要进行重新调度,即调度程序比较被激活进程和当前进程的优先级

三、进程通信

  1. 概念:
    • 低级进程通信:效率低(生产者每次只能向缓冲区中投放一个产品,消费者每次只能从缓冲区中取得一个消息)、通信对用户不透明(进程之间通信所需的共享数据结构设置、数据的传送、互斥与同步等,都必须由程序员实现)。如进程的互斥与同步,由于它们的实现需要在进程间交换少量信息,因此归为低级进程通信
    • 高级进程通信:使用方便,通信过程对用户透明、高校传送大量数据
  2. 进程通信的类型:
    • 共享存储器系统:即相互通信的进程共享某些数据结构或存储区
      • 基于共享数据结构的通信方式
      • 基于共享存储区的通信方式
    • 管道通信系统:连接一个读进程和一个写进程以实现它们之间通信的一个共享文件。管道机制必须提供以下三种能力:
      • 互斥:一个进程正在对管道执行读/写操作时,另一进程必须等待
      • 同步:写进程把一定数量的数据写入管道后,便去睡眠(等待),直到读进程取走数据后,再把它唤醒。当读进程读一空管道时,也应睡眠(等待),直至写进程将数据写入管道后,再把它唤醒
      • 确定对方是否存在:只有确定对方存在,才能通信
    • 消息传递系统:不必借助共享数据结构或存储区,而是以格式化的消息为单位,将通信的数据封装在消息中,并利用OS提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换
      • 直接通信方式:发送进程利用OS所提供的发送原语,直接把消息发送给目标进程
        • 直接通信原语
        • 消息的格式
        • 进程的同步方式:在完成消息的发送或接收后,都存在阻塞和不阻塞这两种可能性,由此可得到三种情况:
          • 发送进程阻塞,接收进程阻塞:主要用于进程之间紧密同步,发送和接收进程之间无缓冲
          • 发送进程不阻塞,接收进程阻塞:平时发送进程不阻塞,因而可以尽快的把一个或多个消息发送给多个目标;而接收进程平时阻塞,直到发送进程发来消息才被唤醒
          • 发送进程和接收进程均不阻塞:平时发送进程和接收进程都在忙其他事情,仅当发生某事件而使它们无法继续运行时,它们才会把自己阻塞起来进行等待
        • 通信链路:分为单向和双向
      • 间接通信方式(信箱通信):发送进程和接收进程都通过共享中间实体(即信箱,是一种共享数据结构)的方式进行消息的发送与接收。该实体建立在随机存储器(RAM)的共享缓冲区上,用来暂存发送进程发送给目标进程的消息
        • 信箱的结构:信箱头+信箱体
        • 信箱通信原语:系统为信箱通信提供了若干条原语,分别用于如下情况:
          • 信箱的创建和撤销
          • 消息的发送和接收
        • 信箱的类型:有私用信箱、公用信箱、共享信箱
    • 客户-服务器系统(不在大纲)

你可能感兴趣的:(操作系统,操作系统)