2 进程(上)

  1. 前驱图:为了能更好地描述程序的顺序和并发执行情况,通常用前趋图来描述程序执行的先后顺序

    -前趋图中是不允许有循环的

  2. 程序顺序执行时的特征:

    ① 顺序性

    ② 封闭性:指程序在封闭的环境下运行,即程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响;

    ③ 可再现性:只要程序执行时的环境和初始条件相同,当重复执行时,都可获得相同的结果。

  3. 程序的并发执行

    1. 程序原来的顺序执行:I -> C -> P (输入程序 -> 计算程序 -> 打印程序)
    2. 并发运行方式的基本特征:异步,资源共享,相互制约;间断性,失去封闭性,不可再现性
  4. 进程:进程是一个程序的一次动态执行过程

    1. 为什么要引入进程?

      操作系统需要引进“进程”,使大程序的程序段可以并发,以加快程序推进且提高CPU利用率

    2. 进程和程序的区别?

      -程序是静态的;进程是动态的(本质区别)

      -程序只包含代码;进程包括要运行的代码、代码要处理的数据、运行过程中的状态参数等

    3. 进程和程序的关联?

      • 进程是操作系统为了管理控制程序的运行而加设的一个概念和实体
      • 程序不运行,就没有进程;一个进程是一个程序的一次执行过程。
      • 一个程序可能对应多个进程
    4. 作业、程序、进程之间的关系?

      • 作业:用户提交给系统的一个计算任务。

        批作业=程序+数据+作业控制说明书

        交互作业=程序+数据+交互命令

        作业是用于人机之间交互的一个概念。

      • 程序是作业的组成部分

      • 进程对应一个程序的一次动态执行过程。

  5. 进程的特征

    1. PCB
    2. 动态性;并发性;独立性;异步性
  6. 进程的三种基本状态

    1. 就绪状态(ready)
    2. 执行状态(running)
    3. 阻塞状态(block)
  7. 创建和终止

    1. 创建状态
    2. 终止状态:等待操作系统进行善后处理,最后将其PCB清零,并将PCB空间返还系统
  8. 五个状态之间的转换

    1. 创建状态----(许可)---->就绪状态
    2. 就绪状态----(进程调度)-----> 执行状态
    3. 执行状态----(时间片完)-----> 就绪状态
    4. 执行状态----(I/O请求)-----> 阻塞状态
    5. 阻塞状态-----(I/O完成)------> 就绪状态
    6. 执行状态-----(释放)------> 终止状态
  9. 挂起操作和五个状态之间的转换

    1. 创建状态----(许可)---->静止就绪 or 活动就绪
    2. 静止就绪-----(激活)----->活动就绪
    3. 活动就绪-----(挂起)----->静止就绪
    4. 活动就绪----(进程调度)-----> 执行状态
    5. 执行状态----(时间片完)-----> 活动就绪
    6. 执行状态-----(挂起)----->静止就绪
    7. 执行状态----(I/O请求)-----> 活动阻塞
    8. 活动阻塞-----(释放)------> 活动就绪
    9. 活动阻塞-----(挂起)------> 静止阻塞
    10. 静止阻塞-----(激活)------> 活动阻塞
    11. 静止阻塞-----(释放)------> 静止就绪
    12. 执行状态-----(释放)------> 终止状态
  10. 进程控制块PCB:

    1. 作用:

      1. 作为独立运行基本单位的标志;2. 能实现间断性运行方式;3. 提供进程管理所需要的信息;4. 提供进程调度所需要的信息;5. 实现与其它进程的同步与通信
    2. 组成信息:

      进程标识(用于唯一地标识一个进程);

      调度信息(系统调度选择进程的依据)(进程状态 进程优先级 其它信息 事件);

      处理机信息(通用寄存器、程序状态字PSW、程序计数器PC、进程的堆栈指针);

      进程控制信息(系统对进程实施控制的依据)

    3. 组织方式:

      线性方式;链接方式;索引方式

  11. 进程管理模块:是os最重要的组成部分

    1. 功能:进程调度、进程控制
  12. 进程控制

    1. 管理控制一个进程的生命周期
    2. 管理控制多个进程的并发
    3. 进程控制一般是由OS的内核中的原语来实现的
  13. 操作系统内核(OS内核)

    与硬件紧密相关的模块、常用设备的驱动程序、运行频率较高的模块,安排在紧靠硬件的软件层次,常驻内存。

    1. 功能:

      1. 支撑功能:

        中断处理(最基本)、时钟管理、原语操作(不可分割、实现进程管理和状态切换、不可中断)

      2. 资源管理功能:

        进程管理、存储器管理、设备管理

  14. 进程的创建

    1. 引起创建进程的事件:

      用户登录、作业调度、提供服务、应用请求

    2. 创建原语:

      1)申请空白PCB

      2)分配资源

      3)初始化PCB,填入进程信息

      4)就绪队列不满则新进程插入就绪队列

      (已经获得除CPU以外的所有运行所需资源的进程处于就绪状态)

  15. 进程的终止

    1. 引起进程终止的事件:

      正常结束(任务完成)、异常结束(程序无法正常运行)、外界干预(外界请求终止)

    2. 终止过程 撤销原语

      1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程的状态

      2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真,指示该进程可重新进行调度

      3) 若该进程还有子孙进程,还应将其所有子孙进程也都予以终止,以防它们成为不可控的进程

      4)将被终止进程所拥有的全部资源或者归还给其父进程,或者归还给系统

      5)将被终止进程(PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息

  16. 进程的阻塞与唤醒

    1. 引起进程阻塞和唤醒的事件:

      1)向系统请求共享资源失败,请求资源得不到满足

      2)等待某种操作的完成,,等待I/O

      3)新数据尚未到达,进程同步约束

      4)等待新任务的到达,服务进程无事可做

    2. 阻塞原语

      正执行的进程,如果发生了上述某事件,进程便通过调用阻塞原语block将自己阻塞。可见,阻塞是进程自身的一种主动行为。进入block过程后,该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由“执行”改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态,按新进程的PCB中的处理机状态设置CPU的环境。

    3. 唤醒原语

      当被阻塞进程所期待的事件发生时,比如它所启动的I/O操作已完成,或其所期待的数据已经到达,则由有关进程(比如提供数据的进程)调用唤醒原语wakeup,将等待该事件的进程唤醒。wakeup执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。

  17. 进程的挂起与激活

    1. 挂起原语

      事件:

      (1)当前内存空间紧缺,部分进程优先运行(2)应用户的要求,将用户进程挂起

      (3)应父进程要求,将其子进程挂起

      过程:

      找到被挂起进程的PCB,获得其内存地址,将内存空间归还给存储管理模块。
      进程状态阻塞转为“挂起阻塞”,或者就绪转为“挂起就绪”,将PCB从原队列转入相应队列。
      申请外存交换区空间,换出进程,地址写入PCB。

    2. 激活原语

      事件:

      (1)有进程运行完毕,当前内存空间并不紧张(2)应用户要求,将其进程激活

      (3)应父进程的要求,将将其子进程激活
      (4)进程设定的挂起周期已完成

      过程:

      扫描“挂起就绪队列”找到被激活进程的PCB,将PCB从所在队列上摘下来。
      按PCB登记的空间需求,申请内存,加载到内存中,归还外存交换区空间。
      将进程状态置为“就绪”,插入就绪队列。

  18. 进程同步

    1. 并发进程间制约关系

      1)资源共享关系 间接制约(互斥)体现竞争关系

      2)相互合作关系 直接制约 (同步)体现协作关系

    2. 临界资源

      -互斥资源,一段时间内只允许一个进程访问的资源

    3. 同步机制应该遵循的规则:

      1.空闲让进 2.忙则等待 3.有限等待 4.让权等待

    4. 解决进程同步和互斥的方法:

      1. 软件方法

      2. 硬件同步机制

        1. 关中断:关中断是实现互斥的最简单的方法之一。在进入锁测试之前关闭中断,直到完成锁测试并上锁之后才能打开中断。
        2. 利用Test-and-Set指令实现互斥:这是一种借助一条硬件指令——“测试并建立”指令TS(Test-and-Set)以实现互斥的方法。
        3. 利用Swap指令实现进程互斥:该指令称为对换指令,在Intel 80x86中又称为XCHG指令,用于交换两个字的内容。
      3. 信号量机制

        1. 整型信号量:不满足“让权等待”

          wait(S) : P操作

          signal(S): V操作 (原子操作)

          wait(s): while s≤0 do no_op;
          s:=s-1;
          signal(s): s:=s+1;

        2. 记录型信号量:只可申请一类资源,该资源有n个,一次只可申请1个,直到将资源分光,多类资源时易产生死锁

          信号量(value)的值,信号量的等待队列指针(L)

          P(s):用于进临界区之前检查资源, 当临界资源被其他进程占用时就将自己阻塞,具有 阻塞 功能

          V(s):用于出临界区释放资源
          ,它能将等待该资源的进程唤醒, 具有 唤醒 功能

        3. AND型信号量:可申请n类资源,每类资源有m个,每次可申请每类资源中的1个。

          同步机制的基本思想:将进程在整个运行中需要的所有资源,一次性全部分配给进程,待进程使用完后一起释放。(避免死锁状态)在Wait中加入AND条件,又称AND同步或同时wait操作:Swait

        4. 信号量集:可申请n类资源,每类资源有m个,每次可申请每类资源中的多个。但低于下限时,不予分配

      4. 管程机制

剩余部分在2 进程(下)

你可能感兴趣的:(计算机操作系统,操作系统,进程)