操作系统-进程与线程(线程的状态与转化,线程的组织与控制,处理机调度的概念与层次,进程调度的过程与方式)

1. 线程的转化

线程的状态转化只关注三种状态
运行态,阻塞态,就绪态

在这里插入图片描述
线程的状态转化与进程状态转化类似。

2. 线程的组织与控制

线程通过TCB(线程控制块来组织维护),线程控制块的结构如下:
在这里插入图片描述
发生线程切换时,需要保存的信息如上图(括号内)

多个线程组合起来形成线程表,线程表的组织可以又多种。取决于具体的操作系统

3. 处理机调度的概念与层次

在这里插入图片描述

调度: 由于资源优先,任务无法同时被执行,需要确定某种规则来决定任务处理顺序。

作业: 一个具体的任务

处理机调度的三个层次

  1. 高级调度:(作业调度)按一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只调入一次,调出一次。作业调入时会建立PCB,调出时才撤销PCB。(多个程序要启动,先启动哪一个,外存->内存)
  2. 低级调度:(进程调度、处理机调度)按照某种策略从就绪队列中选取一个进程,将处理机资源分配给它。操作系统最基本的调度(内存->CPU,面向进程)
  3. 中级调度:(内存调度)按照某种策略决定将哪个处于挂起状态的进程重新调入内存。(外存->内存,面向进程)
    如果计算机内存不足时,会考虑先将一部分进程从内存调出外存。等内存空闲时再重新调回内存。
    暂时调到外存等待的进程状态为挂起状态。被挂起的进程PCB会被组织成挂起队列

进程的挂起态与七状态模型

暂时调到外存等待的进程状态为挂起状态(挂起态)挂起态又可以进一步细分为就绪挂起、阻塞挂起两种状态。
在这里插入图片描述

挂起与阻塞的区别:
两种状态都是暂时不能获得CPU的服务,但挂起态是将进程映像调到外存去了,而阻塞态下进程映像还在内存中。

4. 低级调度(进程调度)

进程调度(低级调度),就是按照某种算法从就绪队列中选择一个进程为其分配处理机。

进程调度时机

当前CPU运行的进程主动放弃CPU

  1. 进程正常结束
  2. 运行过程中因为异常终止
  3. 进程等待某种资源主动进入阻塞态。

当前进程被动放弃CPU

  1. 进程时间片到
  2. 优先级更高的进程进入就绪队列
  3. 中断等

需要注意:

  1. 在处理中断的过程中,中断处理过程复杂,期间不能进行进程的调度。

  2. 进程在操作系统临界区时不能进行进程调度。
    临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源。
    内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)

  3. 原子操作时不能进行进程调度。

进程调度方式

非剥夺式:(非抢占式)只允许进程主动放弃处理机。在运行过程中即便有更紧迫的任务到达,当前进程依然会继续使用处理机,直到该进程终止或主动要求进入阻塞态。

剥夺式:(抢占式)当一个进程正在处理机上执行时,如果有一个更重要或更紧迫的进程需要使用处理机,则立即暂停正在执行的进程,将处理机分配给更重要紧迫的那个进程。

剥夺式进程调度方式可以让进程以时间片轮转的方式来进行调度,同时也具备优先处理任务的能力。

进程调度与进程切换的区别:
狭义上讲:

  1. 进程调度指的是从就绪队列中选中一个要运行的进程。(这个进程可以是刚刚被暂停执行的进程,也可能是另一个进程,后一种情况就需要进程切换)
  2. 进程切换是指一个进程让出处理机,由另一个进程占用处理机的过程。
    广义上讲:
  3. 进程调度包含了选择一个进程和进程切换两个步骤。

注意:
进程切换是有代价的,因此如果过于频繁的进行进程调度、切换,必然会使整个系统的效率降低,使系统大部分时间都花在了进程切换上,而真正用于执行进程的时间减少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NUC_Dodamce

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值