操作系统第二章进程线程部分小结

第二章进程管理

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

在这里插入图片描述
在这里插入图片描述
PCB的详细结构: 如图
在这里插入图片描述
怎么样管理组织内存里成百上千的PCB呢?,有链接方式和索引方式两种办法。
这是链接的,把进程按照进程状态分成几个队列,把PCB放进去管理
在这里插入图片描述
这是索引的,建立一张索引表,这样就能很快找到所需要的PCB了,
在这里插入图片描述
在这里插入图片描述
注意第一句话,进程和程序是截然不同的两个概念
在这里插入图片描述

2.2进程的状态与转换

在这里插入图片描述
在三态模型基础上的五态模型
在这里插入图片描述
七态模型 用到了虚拟技术,本来内存是不够大的,把展示用不上的进程放到外存,等需要用的时候再调回内存,这样用户用起来就感觉内存变大了。
在这里插入图片描述
七态模型在五态模型的基础上增加了挂起就绪态(ready suspend)和挂起等待态(blocked suspend)。

挂起就绪态: 进程具备运行条件,但目前在外存中,只有它被对换到内存才能被调度执行。

挂起等待态: 表明进程正在等待某一个事件发生且在外存中。
引起进程状态转换的具体原因如下:

等待态→挂起等待态: 操作系统根据当前资源状况和性能要求,可以决定把等待态进程对换出去成为挂起等待态。

挂起等待态→挂起就绪态: 引起进程等待的事件发生之后,相应的挂起等待态进程将转换为挂起就绪态

挂起就绪态→就绪态: 当内存中没有就绪态进程,或者挂起就绪态进程具有比就绪态进程更高的优先级,系统将把挂起就绪态进程转换成就绪态。

就绪态→挂起就绪态: 操作系统根据当前资源状况和性能要求,也可以决定把就绪态进程对换出去成为挂起就绪态。

挂起等待态→等待态: 当一个进程等待一个事件时,原则上不需要把它调入内存。但是在下面一种情况下,这一状态变化是可能的。当一个进程退出后,主存已经有了一大块自由空间,而某个挂起等待态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时便发生了这一状态变化。

运行态→挂起就绪态:
当一个具有较高优先级的挂起等待态进程的等待事件结束后,它需要抢占 CPU,而此时主存空间不够,从而可能导致正在运行的进程转化为挂起就绪态。另外处于运行态的进程也可以自己挂起自己。

新建态→挂起就绪态: 考虑到系统当前资源状况和性能要求,可以决定新建的进程将被对换出去成为挂起就绪态。
挂起进程等同于不在内存中的进程,因此挂起进程将不参与低级调度直到它们被调换进内存。

挂起进程具有如下特征:

该进程不能立即被执行

挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。 (等待事件结束后进程变为挂起就绪态)

进程进入挂起状态是由于操作系统、父进程或进程本身阻止它的运行。

结束进程挂起状态的命令只能通过操作系统或父进程发出。

2.3进程控制

在这里插入图片描述
原语:
关中断:关中断用来实现原语的原子性,在关中断之后,当有接到外部中断信号,程序也不会中断。
开中断:当原语执行完毕了,开中断指令执行后,外部中断信号才能被CPU处理。
在这里插入图片描述
原语的功能:
在这里插入图片描述
举例子几种原语的运行原理
在这里插入图片描述
在这里插入图片描述

2.4进程通信

在这里插入图片描述

**基于数据结构的共享:**比如设置一个数组,但是这样访问速度很满而且限制颇多,比较低级
**基于存储区的共享:**在内存里划出一块共享存储区,数据的形式和管理存放位置都由进程控制,而不是操作系统。这样速度很快。

消息传递
在这里插入图片描述

2.5线程的概念和多线程模型

在这里插入图片描述
**为啥要引入线程:**在没有线程概念的操作系统里,比如打开qq这个程序,和同学聊天,既要有管理I/O设备的进程,那我要和对方视频,又得多开一个视频设备的进程,这样并发执行的话,操作系统会花费大量的开销在切换进程上。引入线程后,一个进程而已有多个线程,进程是资源分配的最基本单位,线程是处理机调度的基本单位,而且属于同一个进程的线程,资源是共享的,这样省去了频繁切换进程的开销,提供性能。

线程的实现方式
下图是也是一个多对一的模型
多对一模型:多个用户级线程映射到一个内核级线程。每个用户进程只对应一个内核级线程。
优点:用户级线程的切换在用户空间就能完成,不需要切换到内核态,管理开销小,效率高
缺点:当一个用户级线程阻塞之后,整个进程都会被阻塞(因为操作系统是不知道用户线程的,阻塞了也无法作处理),并发度不高,多个线程无法在多核处理机上运行。
在这里插入图片描述
这个是一对一模型:一个用户级线程会映射到一个内核级线程,
**优点:**当一个用户级线程阻塞后,别的线程还能继续执行,并发度高,多线程可以在多核处理机上运行
缺点:一个用户进程对应了多个内核线程,这样的话线程切换就要由操作系统进行,系统开销大。

在这里插入图片描述
组合方式
多对多模型
优化了上面两种模型的缺点
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值