操作系统第二章:进程的描述与控制

Posted 九死九歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统第二章:进程的描述与控制相关的知识,希望对你有一定的参考价值。

2.1_1 进程的定义、组成、组织方式、特征

1.定义

  首先,程序就是一个指令序列,早期的计算机仅支持单道程序。

  这个时候内存只有两个部分,程序段和数据段。程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)

  引入多道程序技术后,内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。操作系统要怎么才能找到各程序的存放位置呢?

  系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)

  PCB、程序段、数据段三部分构成了进程实体(进程映像),简称为进程。

  • 进程的四种定义
    • 进程是程序的一次执行过程
    • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
    • 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
    • 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

  注:严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。不过,除非题目专门考察二者区别,否则可以认为进程实体就是进程。因此我们也可以说“进程由程序段、数据段、PCB三部分组成”

2.组成

  PCB部分:

  另外两个组成部分就是程序段和数据段了,此处略。

  PCB是进程的管理者(操作系统)所需的数据都在PCB中。另外两个程序本身需要的数据。

3.组织:

  在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式把这些PCB组织起来。

  注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题

  链接方式:链式存储

  索引方式:顺序存储

4.特征:

  进程和程序是两个概念,相比于程序,进程有以下特征:

2.1_2 进程的状态与转化

1.三种基本状态

  进程是程序的一次执行。在这个执行过程中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见,进程的状态是会有各种变化。为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态。

  另外,就绪队列只有一个,而阻塞队列是有好多个,每个事件有一个阻塞队列。

2.另外两种状态:


  创建态:

  终止态

3.状态之间的转换:

2.1_3 进程控制

1.进程控制的过程:

  进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

  • 创建进程:需要初始化PCB、分配系统资源。
  • 创建态→就绪态:需修改PCB内容和相应队列
  • 就绪态→运行态:需恢复进程运行环境、修改PCB内容和相应队列
  • 运行态→就绪态(进程切换):需保存进程运行环境、修改PCB内容和相应队列
  • 运行态→阻塞态:需保存进程运行环境、修改PCB内容和相应队列
  • 阻塞态→就绪态:需修改PCB内容和相应队列。如果等待的是资源,则还需为进程分配系统资源
  • 运行态→终止态:需回收进程拥有的资源,撤销PCB
2.原语

  用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作即原子操作

  原语采用**“关中断指令”和“开中断指令”**实现。

  (有点像java里边的sychronized关键字)

  显然,关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令

  无论是那条原语指令,要做的无非三件:

  • 更新PCB中的信息(如修改进程状态标志、将运行环境保存到PCB、从PCB恢复运行环境)
    • a.所有的进程控制原语一定都会修改进程状态标志
    • b.剥夺当前运行进程的CPU使用权必然需要保存其运行环境
    • c.某进程开始运行前必然要恢复期运行环境
  • 将PCB插入合适的队列
  • 分配/回收资源



2.1_4 进程通信

1.何为进程通信?

  顾名思义,进程通信就是指进程之间的信息交换。进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

  为了保证安全,一个进程不能直接访问另一个进程的地址空间。

  但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。如图:

2.方法一:共享存储

  共享空间的互斥说的是我读写的时候你不能读写,你读写的时候我也不能读写。

3.方法二:管道存储

  管道存储的半双工互斥则是我写的时候你不能读,我读的时候你不能写。必须把管道写满了,才能释放掉让对方读。读完了以后管道就是空的,释放掉,让另一方写。

4.方法三:消息传递


  如上图,消息传递方式还分为两个小类:直接通信方式和间接通信方式。

  其中,直接通信方式就是直接把消息挂在接收进程的消息缓冲队列上。


  而间接通信方式则是消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。例如计网中的电子邮件系统。

2.1_1 线程的概念以及多线程模型

1.啥叫多线程?为啥要引入多线程?

  我就不咋写了,咱又不是没学过javaThread编程

  可以八线程理解为轻量级进程

  线程是一个基本的CPU执行单元,也是程序执行流的最小单元

  引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)

  引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

2.线程的属性


3.线程的实现方式及模型

  用户级线程

  内核级线程

  内核级与用户级混合

  多对一模型

  一对一模型

  多对多模型

以上是关于操作系统第二章:进程的描述与控制的主要内容,如果未能解决你的问题,请参考以下文章

操作系统笔记 第二章 进程管理

操作系统二1进程

操作系统二1进程

操作系统二1进程

操作系统二1进程

操作系统 王道考研2019 第二章:进程管理 -- 进程的状态和转换进程控制进程通信