当前位置: 首页 > news >正文

进度调度切换

tips:

进程=内核数据结构(PCB/task_struct)+代码和数据

UID:每个用户对应的id

进程分类 & 进程关系

僵尸进程

父在子死

进程退出

  1. 代码不会再执行了,系统可以立即释放对应代码和数据
  2. 进程退出码保存在自己task_struct内部
  3. 管理结构task_struct必须被OS维护起来,方便用户未来进行获取进程退出的信息

孤儿进程

父退,子在

子进程会被系统自动领养

被领养的进程被称为孤儿进程

默认进程一般会转为后台运行

进程创建&销毁

创建进程时,先创建内核数据结构(task_struct),后加载代码和数据

释放时,先释放代码和数据,最后释放task_struct

在进程结束,其父进程没结束时,该进程为僵尸状态。task_struct一直不回收

除非父进程读取结束的子进程,子进程就会从Z到X,并释放task_struct

优先级

指的是task_struct的优先级, 与CPU调用有关, 

是什么

获得某种资源的先后顺序,比如,打饭时排队的本质就是在确认优先级。

为什么

本质是目标资源比较少,

怎么办

task_struct中有优先级属性,特定的几个int变量表示优先级,数字越小,优先级变高(类似排名)

PRI:priority,优先级

NI:nice,优先级的nice值(优先级修正数据)

最终优先级=pri(default80)+nice

nice值为[-20,19],40个值(与struct task_struct*  [140]中的40个分时切片任务有关)

为什么nice要限制在可控范围内?

保证资源被进程均匀分布

进程切换

概念储备

  • 时间片,时间片到了,进程就要被切换
  • linux是基于时间片,进行调度轮换的
  • 一个进程在时间片到了的时候,并不一定跑完了,可以在任何时间被重新调度切换
  • 理解进度切换:就像 大学期间被征兵入伍,应先通知学校,学校会保留学籍,未来退伍后恢复学籍,从此再次开始学籍

很重要的两步:保留和恢复上下文数据

切换过程和理解

进程在运行时,会有很多临时数据,都在cpu寄存器中储存,如eax,ebx,eflag,ecs...

eip:当前正在执行指令的下条指令地址

ir;指令寄存器,就是正在执行的指令

进行切换的核心:上下文数据的保存和恢复

上下文保护:

切走:将相关寄存器内容保护起来

切回:将历史保存的寄存器数据,恢复到寄存器中

临时保存地址不在cpu,在内存中的段中,可理解为直接存储在PCB(task_struct)中

每次保存完数据后,cpu是全新的

硬件上,只有一个寄存器。但被所有进程共享

task_struct按优先级调用

与优先级有关

CPU调用runquequ不是FIFO,二是按照优先级映射到一个struct task_struct*  [140]数组上,依次调用

前100是实时进程,不用管。后40个分片进程

板书

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HTML+CSS学习笔记
  • Elasticsearch——介绍、安装与初步使用
  • 【UI自动化】前言
  • ELK-01-elasticsearch-8.15.1安装
  • 【LLM】Ollama:本地大模型使用
  • 力扣3290.最高乘法得分
  • sklearn特征选取之RFE
  • 【Linux篇】TCP/IP协议(笔记)
  • 软考中级系统集成项目管理证书好考吗
  • Java多线程(1)—线程基础
  • 【Unity3d Shader】毛玻璃效果
  • el-select组件:选择某个选项触发查询
  • 华--清--速--递
  • Python知识点:如何使用Python进行算法交易
  • 用Python实现运筹学——Day 0: 学习计划
  • 【EOS】Cleos基础
  • JavaWeb(学习笔记二)
  • Joomla 2.x, 3.x useful code cheatsheet
  • NSTimer学习笔记
  • select2 取值 遍历 设置默认值
  • vue-loader 源码解析系列之 selector
  • win10下安装mysql5.7
  • Windows Containers 大冒险: 容器网络
  • zookeeper系列(七)实战分布式命名服务
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 搭建gitbook 和 访问权限认证
  • 反思总结然后整装待发
  • 构建二叉树进行数值数组的去重及优化
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • No resource identifier found for attribute,RxJava之zip操作符
  • Android开发者必备:推荐一款助力开发的开源APP
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云ACE认证之理解CDN技术
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #mysql 8.0 踩坑日记
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C)一些题4
  • (八)Spring源码解析:Spring MVC
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (区间dp) (经典例题) 石子合并
  • (算法)Travel Information Center
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .NET : 在VS2008中计算代码度量值
  • .net Application的目录
  • .NET C# 操作Neo4j图数据库
  • .net core 6 redis操作类
  • .net core 外观者设计模式 实现,多种支付选择
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net framework 4.0中如何 输出 form 的name属性。