【计算机操作系统学习笔记】第二章:进程的描述与控制

前言:

感谢大佬们的不求回报的分享,
感谢好人们的百忙之中的帮助。

爱的传递,希望能帮到更多的人。

2.1 前趋图和程序执行……P32

  1. 由于程序并发执行时的特征,才在操作系统中引入进程的概念。
  2. 前趋图:指一个有向无循环图(允许有循环),可记为:DAG 。
  • 没有前趋的结点称为初始节点
  • 没有后趋的结点称为终止结点
  • 每个节点还有一个重量,用于表示该节点所含有的程序量或程序的执行时间。
  1. 程序顺序执行的特征:
  • 顺序性。
  • 封闭性。(不受外界影响)
  • 可再现性。(重复执行的结果都是一样的,无论执行是否流畅)
  1. 程序并发执行特征:
  • 间断性。
  • 失去封闭性。
  • 不可再现性。

2.2 进程的描述……P35

  1. 资源分配独立运行基本单位 都是进程
  2. 进程控制块简称:PCB
  3. 系统利用PCB来描述进程的基本情况和活动过程。
  4. 由程序段、相关的数据段、PCB三部分构成 进程实体(又称进程映象)。简称:进程
  5. 创建、撤销 进程,实质就是创建、撤销进程中的PCB
  6. 进程的定义:
  • (1)进程是程序的一次执行。
  • (2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
  • (3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
  1. 进程的特征:
  • PCB结构。
  • 动态性。(最基本的)
  • 并发性。(OS的重要特征)( 程序没有建立PCB,所以不能参与并发执行。)
  • 独立性。
  • 异步性。
  1. 进程的三种状态:
  • 就绪状态。(排成的队列叫:就绪队列)
  • 执行状态。
  • 阻塞状态。(又叫暂停状态、等待状态、封锁状态)

三种基本状态的转换:
三种状态转换

  1. 进程的五种基本状态及转换:

在这里插入图片描述

  1. 挂起原语 (Suspend) 和激活原语 (Active)
  • 静止就绪状态Readys
  • 静止阻塞状态Blockeds
  • 活动阻塞状态Blockeda
  1. 在这里插入图片描述在这里插入图片描述在这里插入图片描述

  2. 进程控制块PCB的作用
  • 作为独立运行基本单位的标志。(系统就是通过PCB感知进程的存在)
  • 能实现间断性运行方式。
  • 提供进程管理所需要的信息。
  • 提供进程调度所需要的信息。
  • 实现与其他进程的同步与通信。
  1. 进程控制块中的信息
  • 进程标识符
  • 处理机状态

处理机状态信息也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成的。这些寄存器包括:

  • ①通用寄存器,又称为用户可视寄存器,它们是用户程序可以访问的,用于暂存信息,在大多数处理机中,有8~32个通用寄存器,在RISC结构的计算机中可超过100个;
  • ②指令计数器,其中存放了要访问的下一条指令的地址;
  • ③程序状态字PSW,其中含有状态信息,如条件码、执行方式、中断屏蔽标志等;
  • ④用户栈指针,指每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用参数及调用地址。栈指针指向该栈的栈顶。处理机处于执行状态时,正在处理的许多信息都是放在寄存器中。当进程被切换时,处理机状态信息都必须保存在相应的PCB中,以便在该进程重新执行时能再从断点继续执行。
  • 进程调度信息

在os进行调度时,必须了解进程的状态及有关进程调度的信息,这些信息包括:

  • ①进程状态,指明进程的当前状态,它是作为进程调度和对换时的依据;
  • ②进程优先级,是用于描述进程使用处理机的优先级别的一个整数,优先级高的进程应优先获得处理机;
  • ③进程调度所需的其它信息,它们与所采用的进程调度算法有关,比如,进程已等待CPU的时间总和、进程已执行的时间总和等;
  • ④事件,是指进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因。
  • 进程控制信息

是指用于进程控制所必须的信息,它包括:

  • ①程序和数据的地址,进程实体中的程序和数据的内存或外存地(首)址,以便再调度到该进程执行时,能从PCB中找到其程序和数据;
  • ②进程同步和通信机制,这是实现进程同步和进程通信时必需的机制,如消息队列指针、信号量等,它们可能全部或部分地放在PCB中;
  • ③资源清单,在该清单中列出了进程在运行期间所需的全部资源(除CPU以外),另外还有一张已分配到该进程的资源的清单;
  • ④链接指针,它给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址。
  1. 进程控制块的组织方式

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.3 进程控制……P42

  1. OS内核的功能
  • 支撑功能。
  1. 中断处理。(最基本的)
  2. 时钟管理。
  3. 原语操作。(* 所谓的原语【Primitive】,就是由若干条指令组成的,用于完成一定功能的一个过程。** 原子操作:一个不可分割的基本单位。)
  • 资源管理功能。
  • 进程管理。
  • 存储器管理。
  • 设备管理。
  1. UNIX具有进程层次结构,Windows不存在任何进程层次结构的概念。而是采用获得句柄与否,控制被控制的简单关系。

在这里插入图片描述

  1. 进程的创建。
  • 申请空白PCB。
  • 为新进程分配其运行所需的资源。(包括:各种物理和逻辑资源。如内存、文件、I/O设备、CPU时间。)
  • 初始化进程控制块PCB。(包含三步)
  • 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。
  1. 引起进程终止的事件。
  • 正常结束。
  • 异常结束。
  1. 越界错。
  2. 保护错。
  3. 非法指令。
  4. 特权指令错。
  5. 运行超时。
  6. 等待超时。
  7. 算术运算错。
  8. I/O故障。
  • 外界干预。
  1. 进程的阻塞与唤醒。
  2. 进程的挂起和激活。

2.4进程同步……P47

  1. 硬件同步机制
  • 关中断。
  • 利用Test-and-Set指令实现互斥。
  • 利用Swap指令实现进程互斥。
  1. 信号量机制
  • 整型信号量。(通过原子操作)
  • 记录型信号量。
  • AND型信号量。
  • 信号量集。
  1. 信号量的应用
  • 利用信号量实现进程互斥。
  • 利用信号量实现前趋关系。
  1. 管程机制
  • Hansan为管程所下的定义是:“一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作, 这组操作能同步进程和改变管程中的数据。”
  • 管程由四部分组成:

①管程的名称;
②局部于管程的共享数据结构说明;
③对该数据结构进行操作的一组过程;
④对局部于管程的共享数据设置初始值的语句。在这里插入图片描述

  • 管程是一种程序设计语言的结构成分,它和信号量有同等的表达能力,从语言的角度看,管程主要有以下特性:

①模块化,即管程是一个基本程序单位,可以单独编译;
②抽象数据类型,指管程中不仅有数据,而且有对数据的操作;
③信息掩蔽,指管程中的数据结构只能被管程中的过程访问,这些过程也是在管程内部定义的,供管程外的进程调用,而管程中的数据结构以及过程(函数)的具体实现外部不可见。

  • 管程和进程不同

① 虽然二者都定义了数据结构,但进程定义的是私有数据结构PCB,管程定义的是公共数据结构,如消息队列等;
② 二者都存在对各自数据结构上的操作,但进程是由顺序程序执行有关操作,而管程主要是进行同步操作和初始化操作;
③ 设置进程的目的在于实现系统的并发性,而管程的设置则是解决共享资源的互斥使用问题;
④ 进程通过调用管程中的过程对共享数据结构实行操作,该过程就如通常的子程序一样被调用,因而管程为被动工作方式,进程则为主动工作方式;
⑤进程之间能并发执行,而管程则不能与其调用者并发;
⑥进程具有动态性,由“创建”而诞生,由“撤消”而消亡,而管程则是操作系统中的一个资源管理模块,供进程调用。

2.5经典进程的同步问题……P60

  1. 生产者——消费者问题
  • 利用记录型信号量解决生产者——消费者问题
  • 利用AND信号量解决生产者——消费者问题
  • 利用管程解决生产者——消费者问题
  1. 哲学家进餐问题
  • 利用记录型信号量解决哲学家进餐问题
  • 利用AND信号量机制解决哲学家进餐问题
  1. 读者——写者问题
  • 利用记录型信号量解决读者——写者问题
  • 利用信号量集机制解决读者——写者问题

2.6 进程通信……P67

  1. 进程通信的类型
  • 共享存储器系统
  • 管道通信系统
  • 消息传递系统
  • 客户机——服务器系统
  1. 消息传递通信的实现方式
  • 直接消息传递系统
  • 信箱通信

2.7 线程(Threads)的基本概念……P75

  1. 线程作为调度和分配的基本单位。
  2. 线程控制块TCB
  • 如同每个进程有一个进程控制块一样,系统也为每个线程配置了一个线程控制块TCB,将所有用于控制和管理线程的信息记录在线程控制块中。线程控制块通常有这样几项:

① 线程标识符,为每个线程赋予一个唯一的线程标识符;
② 一组寄存器,包括程序计数器PC、状态寄存器和通用寄存器的内容;
③ 线程运行状态,用于描述线程正处于何种运行状态;
④ 优先级,描述线程执行的优先程度;
⑤ 线程专有存储区,用于线程切换时存放现场保护信息,和与该线程相关的统计信息等;
⑥ 信号屏蔽,即对某些信号加以屏蔽;
⑦ 堆栈指针,在线程运行时,经常会进行过程调用,而过程的调用通常会出现多重嵌套的情况,这样,就必须将每次过程调用中所使用的局部变量以及返回地址保存起来。为此,应为每个线程设置一个堆栈,用它来保存局部变量和返回地址。相应地,在TCB中,也须设置两个指向堆栈的指针:指向用户自己堆栈的指针和指向核心栈的指针。前者是指当线程运行在用户态时,使用用户自己的用户栈来保存局部变量和返回地址,后者是指当线程运行在核心态时使用系统的核心栈。

  1. 多线程OS中的进程属性
  • 进程是一个可拥有资源的基本单位。
  • 多个线程可以并发执行。
  • 进程已不是可执行的实体。

2.8 线程的实现……P79

  1. 线程的实现方式
  • 内核支持线程KST

优点

  • 在多处理器系统中,内核能够同时调度同一进程中的多个线程并行执行;
  • 如果进程中的一个线程被阻塞了,内核可以调度该进程中的其它线程占有处理器运行,也可以运行其它进程中的线程;
  • 内核支持线程具有很小的数据结构和堆栈,线程的切换比较快,切换开销小;
  • 内核本身也可以采用多线程技术,可以提高系统的执行速度和效率。

内核支持线程的主要缺点是:

  • 对于用户的线程切换而言,其模式切换的开销较大,在同一个进程中,从一个线程切换到另一个线程时,需要从用户态转到核心态进行,这是因为用户进程的线程在用户态运行,而线程调度和管理是在内核实现的,系统开销较大。
  • 用户级线程ULT

优点

  • 线程切换不需要转换到内核空间。对一个进程而言,其所有线程的管理数据结构均在该进程的用户空间中,管理线程切换的线程库也在用户地址空间运行,因此进程不必切换到内核方式来做线程管理,从而节省了模式切换的开销。
  • 调度算法可以是进程专用的。在不干扰OS调度的情况下,不同的进程可以根据自身需要选择不同的调度算法,对自己的线程进行管理和调度,而与OS的低级调度算法是无关的。
  • 用户级线程的实现与OS平台无关,因为对于线程管理的代码是属于用户程序的一部分,所有的应用程序都可以对之进行共享。因此,用户级线程甚至可以在不支持线程机制的操作系统平台上实现。

主要缺点则在于:

  • 系统调用的阻塞问题。在基于进程机制的OS中,大多数系统调用将使进程阻塞,因此,当线程执行一个系统调用时,不仅该线程被阻塞,而且,进程内的所有线程会被阻塞。而在内核支持线程方式中,则进程中的其它线程仍然可以运行。
  • 在单纯的用户级线程实现方式中,多线程应用不能利用多处理机进行多重处理的优点,内核每次分配给个进程的仅有 个CPU,因此,进程中仅有一个线程能执行,在该线程放弃CPU之前,其它线程只能等待。
  • 组合方式在这里插入图片描述

End :

如果觉得有收获,就请我喝杯咖啡吧!

点击一键返回到目录!

**** 小白上路 ****
**** 多多关照 ****
*******
**** 完于 2020.3.17 周二14点 ****
发布了7 篇原创文章 · 获赞 15 · 访问量 1004

猜你喜欢

转载自blog.csdn.net/qq_45637040/article/details/104753444