操作系统-2-进程管理

进程

在这里插入图片描述

一、进程的定义

程序:就是一个指令序列
为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。
系统为每个运行的程序配置了一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码的存放位置)。

程序段、数据段、PCB三部分组成了进程实体(进程映像),一般来说我们把进程实体称为进程。

PCB是进程存在为唯一标志。

进程是具有独立功能的程序在数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单位

进程实体是静态的,进程是动态的。

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

进程控制块(PCB,进程存在的唯一标志)

在这里插入图片描述

在这里插入图片描述

进程的组织(链接方式、索引方式)

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

进程的特征(动态性、并发性、独立性、异步性、结构性)

在这里插入图片描述

总结

在这里插入图片描述

二、进程的状态

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

五种基本状态(运行、就绪、阻塞、创建、终止)

  • 运行态:占用CPU,并在CPU上运行
  • 就绪态:已经具备运行条件,但是由于没有空闲CPU,而暂时不能运行
  • 阻塞态:因等待某一事件而暂时不能运行。

进程状态的转换

在这里插入图片描述

小结

在这里插入图片描述

三、进程控制(创建进程、撤销进程、实现进程状态转换)

在这里插入图片描述

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

简单理解即进程控制就是实现进程状态转换。
在这里插入图片描述

1、如何实现进程控制?

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

如果状态改变了,在把PCB放入相应的队列的时候被中断了。这就会产生问题,所以引入了原语。

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

原语采用“关中断指令”和“开中断指令”实现
在这里插入图片描述
虽然,关/开中断的权限非常大,必然是只允许在核心态下执行的特权指令。

进程切换过程
  • 1、保存处理机上下文,包括程序计数器和其他寄存器
  • 2、更新PCB信息
  • 3、把进程PCB移入相应的队列,如就绪、在某时间阻塞等队列
  • 4、选择另外一个进程执行,应更新其PCB
  • 5、更新内存管理的数据结构
  • 6、恢复处理机上下文

2、进程控制相关的原语

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

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

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

在这里插入图片描述

总结

在这里插入图片描述

四、进程通信

在这里插入图片描述

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

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

但是进程之间的信息交换又是必须实现的,为了保证进程之间的安全通信,操作系统提供了一些方法。
在这里插入图片描述

操作系统提供的进程通信(进程间信息交换,共享存储、消息传递、管道通信)

进程通信是指进程之间的信息交换,PV操作是低级通信,高级通信是指以较高的效率传输大量数据的通信方式。

  • 共享存储
  • 消息传递
  • 管道通信
共享存储

在这里插入图片描述
进程1往共享空间写数据的时候进程2是不允许访问共享空间的
在通信的进程之间存在一块可直接访问的共享空间,通过对这片共享空间进行写/读操作实现进程之间的信息交换,在对共享空间进行写/读操作的时候,需要使用同步互斥工具(如PV操作),对共享空间的读写进行控制,共享存储分为两种:低级的是基于数据结构的共享,高级的是基于存储区的共享。

管道通信

在这里插入图片描述

消息传递(进程间的数据交换以格式化的消息为单位)

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

在这里插入图片描述

总结

在这里插入图片描述

五、线程

在这里插入图片描述
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。进程是除CPU之外的系统资源的分配单元

在这里插入图片描述

进程是资源分配的基本单位,线程是调度的基本单位。

传统的进程并发,需要切换进程的运行环境,系统开销比较大,引入线程之后,如果是同一进程内的线程切换,不需要切换进程环境,系统开销小。 不需要PCB换入换出。

在这里插入图片描述

在这里插入图片描述

线程的实现方式(用户级线程、内核级线程)

在这里插入图片描述

在用户级线程中,用户级线程切换可以在用户态下即可完成,无需操作系统的干预。
在用户看来,是有多个线程,但是在操作系统看来,并意识不到线程的存在,用户级线程对用户不透明,对操作系统透明。

可以这么理解,“用户级线程”就是“从用户视角能看到的线程。”

在这里插入图片描述
内核级线程的管理工作由操作系统内核完成,线程调度、切换等工作都由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。

可以这样理解,“内核级线程”就是“从操作系统内核视角看能看到的线程”。

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

多对一的时候,只需要用户级线程的切换,且只需要在用户空间即可完成,不需要切换到核心态。
在这里插入图片描述

一对一这种模型的唯一缺点是,创建一个用户线程就要创建一个相应的内核线程。由于创建内核线程的开销会影响应用程序的性能
在这里插入图片描述

总结

在这里插入图片描述

内核级线程才是处理机分配的单位。

进程和线程的比较

  • 1、线程是cpu调度的基本单位,进程是拥有资源的基本单位,但是线程可以访问其所属的进程的资源。在同一个进程中,线程的切换不会引起进程的切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另外一个进程中的线程时,会引起进程切换。
  • 2、不仅进程之间可以并发,线程也可以并发执行,从而使得操作系统有更好的并发性,提高了系统吞吐量。
  • 3、系统开销,创建进程的开销远大于创建或者撤销线程时候的开销。
  • 4、进程间通信需要同步或者互斥手段的辅助,以保证数据的一致,而进程间可以直接读写进程数据段(如共享变量)来进行通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值