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


    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. 进程调度包含了选择一个进程和进程切换两个步骤。

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

  • 相关阅读:
    Taurus.MVC 如何升级并运行在NET6、NET7
    .NET ORM 仓储层必备的功能介绍之 FreeSql Repository 实现篇
    【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式事务特别及问题分析(上)
    【广州华锐视点】VR飞行员驾驶模拟实训系统
    小米面试——计算机视觉算法实习生
    网络精通-VLAN的高级配置之基于IP地址划分VLAN
    外汇天眼:本周无牌裸奔平台名单出炉,你踩“坑”了么?!!
    MySQL与PostgreSQL对比
    [Git] 系列四Push & Pull —— Git 远程仓库和高级操作
    Java开发全终端实战租房项目-阿里云OSS
  • 原文地址:https://blog.csdn.net/dodamce/article/details/126368584