AlgerFan | Blog AlgerFan | Blog

Step by step, the sun

目录
(2)进程的描述与控制——计算机操作系统复习笔记
/  

(2)进程的描述与控制——计算机操作系统复习笔记

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

进程的定义

程序:就是一个指令序列。
引入多道程序技术后:为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。

程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进程实体就简称为进程,例如,所谓创建进程,实质, 上是创建进程实体中的 PCB;而撤销进程,实质上是撤销进程实体中的 PCB。
注意: PCB 是进程存在的唯一标志!

引入进程实体的概念后,可把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。

进程和进程实体严格来说是不同的,进程实体是静态的,进程是动态的。

进程的组成

进程(进程实体)由程序段、数据段、PCB三部分组成。

进程的组织

在一个系统中,通常有数十、数百乃至数千个 PCB。为了能对他们加以有效的管理,应该用适当的方式把这些 PCB 组织起来。
注:进程的组成讨论的是一个进程内部由哪些部分构成的问题,而进程的组织讨论的是多个进程之间的组织方式问题。

进程的组织方式
1.链接方式

  • 按照进程状态将 PCB 分为多个队列
  • 操作系统持有指向各个队列的指针
    • 执行指针:同一时刻只会有一个进程处于运行态
    • 就绪队列指针:通常把优先级高的进程放在队头
    • 阻塞队列指针:指向当前处于阻塞态的进程

2.索引方式

  • 根据进程状态的不同,建立几张索引表
  • 操作系统持有指向各个索引表的指针
    • 执行指针
    • 就绪表指针:建立就绪索引表
    • 阻塞表指针:建立阻塞表

进程的特征

进程的特征

总结

二、进程的状态与转换

进程的三种基本状态

另外两种状态
创建态(New, 又称:新建态)

  • 进程正在被创建,操作系统为进程分配资源、初始化 PCB
    终止态(Terminated, 又称:结束态)
  • 进程正在从系统中撤销,操作系统会回收进程拥有的资源、撤销 PCB

进程状态的转换

总结

三、进程控制

进程控制:就是要实现进程状态转换。

原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。这种不可被中断的操作即原子操作
原语采用“关中断指令”和“开中断指令”实现。
关/开中断指令的权限非常大,必然是只允许在核心态下执行的特权指令。

进程控制会导致进程状态的转换。无论哪个原语,要做的无非三类事情:

  • 1.更新 PCB 中 的信息(如修改进程状态标志、将运行环境保存到 PCB、从 PCB 恢复运行环境)
  • 2.将 PCB 插入合适的队列
  • 3.分配/回收资源。

进程的创建

进程的终止

进程的阻塞与唤醒

进程的切换

总结

四、进程通信

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

为了保证安全,一个进程不能直接访问另一个进程的地址空间。但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。

共享存储

两个进程对共享空间的访问必须是互斥的( 互斥访问通过操作系统提供的工具实现)。

共享存储

  • 基于数据结构的共享
    • 比如共享空间里只能放 一个长度为 10 的数组。这种共享方式速度慢、 限制多,是一种低级通信方式。
  • 基于存储区的共享
    • 在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

管道通信

1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道
2.各进程要互斥地访问管道。
3.数据以字符流的形式写入管道,当管道写满时,写进程的 write() 系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的 read()系统调用将被阻塞。
4.如果没写满,就不允许读。如果没读空,就不允许写
5.数据一旦被读出,就从管道中被拋弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

消息传递

进程间的数据交换以格式化的消息( Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

总结

五、线程、多线程模型

线程的概念、属性

可以把线程理解为“轻量级进
程”
线程是一个基本的 CPU 执行单元,也是程序执行流的最小单位
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如 QQ 视频、文字聊天、传文件)
引入线程后,进程只作为除 CPU 之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。

引入线程机制后,有什么变化?

线程的属性

线程的实现方式

用户级线程
用户级线程由应用程序通过线程库实现。所有的线程管理工作都由应用程序负责(包括线程切换)。用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。可以这样理解,“用户级线程” 就是“从用户视角看能看到的线程”

内核级线程
内核级线程的管理工作由操作系统内核完成。线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。
可以这样理解,“内核级线程”就是“从操作系统内核视角看能看到的线程”

在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式: 将 n 个用户级线程映射到 m 个内核级线程上( n>=m)

重点:
操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位

在同时支持用户级线程和内核级线程的系统中,由几个用户级线程映射到几个内核级线程的问题引出了“多线程模型”问题。

  • 多对一模型:多个用户及线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。
  • 多对一模型:多个用户及线程映射到一个内核级线程。每个用户进程只对应一一个内核级线程。
  • 多对多模型: n 用户及线程映射到 m 个内核级线程(n>=m)。每个用户进程对应 m 个内核级线程。

总结


标题:(2)进程的描述与控制——计算机操作系统复习笔记
作者:AlgerFan
地址:https://www.algerfan.cn/articles/2019/12/28/1577540339439.html
版权声明:本文为博主原创文章,转载请附上博文链接!