操作系统内部机制学习

2023-12-16

切换线程时需要保存什么

  • 函数需要保存吗?函数在Flash上,不会被破坏,无需保存。
  • 函数执行到了哪里?需要保存吗?需要保存。
  • 全局变量需要保存吗?全局变量在内存上,无需保存。
  • 局部变量需要保存吗?局部变量在栈里,也是在内存里,只要避免栈不会被破坏即可,局部变量无需保存。
  • 运算的中间值需要保存吗?中间值保存在CPU寄存器里,另一个线程也需要用到寄存器,所以CPU寄存器要保存。
  • 函数运行到了哪里:也是一个CPU寄存器,名为“PC”。

总结:CPU寄存器需要保存,保存在线程的栈里。

ARM架构

ARM芯片属于精简指令计算机(RISC:Reduced Instruction Set Computor),它所用的指令比较简单,有如下特点:

  1. 对内存只有读、写指令。
  2. 对于数据的运算都是在CPU内部实现。
  3. 使用RISC指令的CPU复杂度小一点,易于设计。

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

几条汇编指令

  • 读内存指令:LDR,即Load之意。
  • 写内存指令:STR,即Store之意。
  • 加减指令:ADD、SUB
  • 跳转:BL,Branch And Link
  • 入栈指令:PUSH
  • 出栈指令:POP

加载指令LDR:LDR r0,[addrA],意思是将地址addrA的内容加载到r0里面。
存储指令STR:STR r0,[addr A],把r0的值存储到地址addrA上。
加法运算指令(ADD):ADD r0,r1,r2,意思为r0=r1+r2。
减法运算指令(SUB):SUB r0,r1,r2,意思为r0=r1-r2。
寄存器入栈/出栈指令(PUSH/POP)

寄存器入栈(PUSH):PUSH {r3, lr}意思是将寄存器r3和lr写入内存栈。

  • 本质是写内存STR指令,高标号寄存器写入高地址的栈里,低标号寄存器写入低地址的栈里。
  • lr即r14,写入地址为sp-4的内存,然后sp=sp-4。
  • r3,写入地址为sp-4的内存,然后sp=sp-4。

寄存器出栈指令(POP):POP {r3,pc}意思是取出内存栈的数据放入r3和pc中。

  • 本质是读内存LDR指令,高标号寄存器的内容来自高地址的栈,低标号寄存器的内容来自低地址的栈。
  • 读地址为sp的内容存入r3,然后sp=sp+4。
  • 读地址为sp的内容存入pc,然后sp=sp+4。

寄存器别名

在这里插入图片描述
PUSH指令=多次调用STR指令,并且会调整SP的值。

BL A:会记录返回地址,保存在R14里,然后跳转到A执行,执行完后,PC会跳转到R14所指向的地址。

在这里插入图片描述
在这里插入图片描述
初始化栈

IPC

引入IPC,主要是为了两项功能:

  1. 线程间互斥
  2. 休眠-唤醒机制

队列
在这里插入图片描述
队列里有多个消息块,消息块里面可以存储消息(数据),每个消息块大小相同。

队列里有两个链表:Sender List、Receiver List。
在这里插入图片描述
在这里插入图片描述
挂起线程也就是将线程从就绪链表中移出。
再将线程挂到队列的等待链表中。
启动定时器。

互斥量如何实现

对于互斥变量a

  1. 关中断
  2. 汇编指令:原子地修改a

IPC

在这里插入图片描述
消息队列的读取都是使用 memcpy()

邮箱的读取直接赋值即可。
链表、定时器、环形缓冲区(读、写位置)

信号量的缺点:

  1. 谁都可以释放信号量
  2. 优先级反转

Mutex解决

  1. 谁拥有谁释放
  2. 优先级继承

一个互斥量可以被同一个线程多次take

信号不是信号量,是一种异步通知机制。
**信号就是线程的软件中断。 **

信号处理流程

信号就是线程的“软件中断”,跟“硬件中断”类似:
要安装信号处理函数,相当于给硬件中断提供处理函数。

/* thread1 安装信号,自定义处理函数 */

rt_signal_install(SIGUSR1, thread1_signal_handler);

/* thread1 要使能信号,相当于使能硬件中断,解除屏蔽 */
rt_signal_unmask(SIGUSR1);

/* 向thread1发出信号,相当于触发硬件中断 */
rt_thread_kill(thread1, SIGUSR1);

什么是块设备?

有存储功能:写入数据到pos位置,再读pos可以得到一样的数据。
数据的传输单位是:扇区。

挂载

挂载点(path)
文件系统
块设备
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统内部机制学习 的相关文章

  • Top-Down性能分析方法

    Top Down性能分析方法是由Intel的工程师提出的一种性能分析方法 旨在帮助开发人员更好地理解和优化计算机系统的性能 该方法主要通过从高层次到底层次的分析 逐步识别和解决性能瓶颈 以提高系统的整体性能和效率 Top Down方法介绍
  • 【网络安全】HVV爆火的漏洞:最新 WPS RCE (远程命令执行) 复现

    0x00 影响版本 WPS Office 2023 个人版 lt 11 1 0 15120 WPS Office 2019 企业版 lt 11 8 2 12085 0x01 环境配置 wps版本 WPS V11 1 0 12300 靶机 w
  • 【网络安全】SQL注入绕过技巧

    1 绕过空格 注释符 a0 两个空格代替一个空格 用Tab代替空格 a0 空格 20 09 0a 0b 0c 0d a0 00 最基本的绕过方法 用注释替换空格 注释 使用浮点数 select from users where id 8E0
  • WindowsServer服务器系列:定时备份 MySQL

    一 编写脚本 echo 取日期 时间变量值 set yy date 0 4 set mm date 5 2 set dd date 8 2 if i time 0 2 lss 10 set hh 0 time 1 1 if i time 0
  • SpringBoot基础系列:工具类使用

    断言 Assert 要求参数 object 必须为非空 Not Null 否则抛出异常 不予放行 参数 message 参数用于定制异常信息 void notNull Object object String message 要求参数必须空

随机推荐

  • CS5565设计资料|CS5565规格书|typec转HDMI 8k60Hz方案

    CS556x是一款高性能的Type C DisplayPort1 4到HDMI2 1协议转换器 可通过Type C DisplayPort链路接收视频和音频流 并转换为支持TMDS或FRL输出信令的HDMI DP接收器在4个通道上支持高达8
  • 【小程序】-【

    swiper swiper item轮播图 swiper 是滑块视图容器 其中只可放置 swiper item 组件 部分常用属性如下 其余属性详见 官方文档
  • EasyRecovery2024专业版下载安装步骤图文详细教程

    EasyRecovery是一款操作安全 价格便宜 用户自主操作的非破坏性的只读应用程序 它不会往源驱上写任何东西 也不会对源驱做任何改变 它支持从各种各样的存储介质恢复删除或者丢失的文件 其支持的媒体介质包括 硬盘驱动器 光驱 闪存 以及其
  • FL Studio21.3中文至尊完整版含2024Crack文件

    FL studio21中文直装版 中文名为水果软件 是一款非常专业的音频制作软件 该软件推出了全新的21 0版本 在功能和体验上更加的强大 它不仅适用于音乐制作 还可以用于电子声音 电视 广播等多种领域 它在所有音频制作软件中最适合初学者
  • 使用Vue实现一个当鼠标悬浮时出现,鼠标离开时消失的双层菜单

    前言 分享一个基于Vue实现一个当鼠标悬浮时出现 鼠标离开时消失的双层菜单 同时也是为了以后需要类似的需求时 可以提供一个实现思路 以及可以快速ctrl c和ctrl v操作 提高工作效率 一 示例代码 1 src views Exampl
  • 【无标题】

    一 软件简介 PyCharm是一款Python IDE 其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具 比如 调试 语法高亮 Project管理 代码跳转 智能提示 自动完成 单元测试 版本控制等等 此外 该IDE提供
  • WPF中DataGrid设置默认选中行

    1 DataGrid命名为planDataGrid
  • 如何FL Studio显示中文?切换语言教程

    你是不是也在为fl studio的英文界面而苦恼 你是不是也想让你的fl studio 说中文 方便你制作音乐 你是不是也在网上找了很多教程 却发现都是复杂的 或者已经过时的 如果你的答案是肯定的 那么你来对地方了 今天 我要教你一个一步到
  • CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

    CleanMyMac X您的 Mac 极速如新 点按一下 即可优化调整整个 Mac畅享智能扫描 这款超级简单的工具用于优化您的 Mac 只需点按一下 即可运行所有任务 让您的 Mac 保持干净 快速并得到最佳防护 CleanMyMac 是一
  • 【git教程】

    目录 git与SVN的区别 集中式与分布式的区别 Windows上安装Git 创建版本库 仓库 repository 将文件添加到repository 报错处理 查看仓库的状态 版本回退 工作区和暂存区 管理
  • EasyRecovery2024国内免费的电脑数据恢复软件(一键备份还原)

    EasyRecovery2024是coco玛奇朵Ontrack 的技术杰作 它是一个硬盘数据恢复工具 能够帮你恢复丢失的数据以及重建文件系统 其 Professioanl 专业 版更是囊括了磁盘诊断 数据恢复 文件修复 E mail 修复等
  • FL Studio2024年最新中文版本如何下载?

    FL Studio是款专业的音频录制编辑软件 受到了广大制作人的喜爱 但有很多人不知道FL Studio应该如何使用 和小编一起往下看吧 FL Studio是款专业的音频录制编辑软件 可以针对作曲者的要求编辑出不同音律的节奏 例如鼓 镲 锣
  • fl studio2024中文版下载安装教程 亲测有效

    fl studio是一款功能强大的编曲软件 今天小编就为大家带来了详细的安装教程 需要的朋友一起看看吧 fl studio2024是一款功能强大的编曲软件 也就是众所熟知的水果软件 它可以编曲 剪辑 录音 混音 让您的计算机成为全功能录音室
  • CleanMyMac X2024值不值得下载?

    macOS已经成为最受欢迎的桌面操作系统之一 它提供了直观 简洁的用户界面 使用户可以轻松使用和管理系统 macOS拥有丰富的应用程序生态系统 还可以与其他苹果产品和服务紧密协作 如iPhone iPad 用户可以通过iCloud同步和共享
  • FL Studio水果软件最新版本号V21.0.3.3517内置中文补丁,可以切换成中文界面。

    FL Studio 21 0 3 3517 Producer Edition 全称Fruity Loops Studio 21 Producer Edition 就是大家熟悉的水果编曲软件 一个全能的音乐制作软件 包括编曲 录音 剪辑和混音
  • CorelDRAW2024好不好用?比其他矢量图设计软件有哪些优势

    CorelDRAW作为一款专业的矢量设计图软件 备受招聘公司 业内人士青睐 CorelDRAW是一款广泛应用于图形设计 图像编辑和排版的软件 其强大的功能和灵活性使其在设计师和艺术家中备受欢迎 然而 在进行CorelDRAW账户注册时 一些
  • EasyRecovery(数据恢复软件) 2024中文绿色无需激活版下载

    EasyRecovery 是一款功能强大且专业的数据恢复软件 软件能够对电脑误删的文件进行恢复 包括格式化硬盘是数据恢复 手机U盘数据恢复等 小编今天给大家带来的是根据官软件解压后直接使用 感兴趣的朋友快来下载使用吧 EasyRecover
  • FL Studio20官方版怎么下载安装?2024最新版图文详细教程

    水果音乐制作软件FL Studio2024是一款功能强大的软件音乐制作环境或数字音频工作站 DAW 本文主要针对FL Studio 2024怎么安装 来为大家带来了水果软件FL Studio 2024安装图文详细教程 水果音乐制作软件FL
  • CorelDRAW2024中文版怎么免费下载?

    CorelDRAW是一款综合性强大的专业平面设计软件 其功能覆盖了矢量图形设计 高级文字编辑 精细绘图以及多页文档和页面设计 该软件不仅适用于广告设计 包装设计 还广泛应用于出版 网页设计和多媒体制作等多个领域 下面就给大家介绍一下Core
  • 操作系统内部机制学习

    切换线程时需要保存什么 函数需要保存吗 函数在Flash上 不会被破坏 无需保存 函数执行到了哪里 需要保存吗 需要保存 全局变量需要保存吗 全局变量在内存上 无需保存 局部变量需要保存吗 局部变量在栈里 也是在内存里 只要避免栈不会被破坏