【操作系统笔记】程序运行机制CPU指令集

内存地址

指针 / 引用

指针、引用本质上就是内存地址,有了内存地址就可以操作对应的内存数据了。

在这里插入图片描述

不同的数据类型

在这里插入图片描述

字节序

  • 大端序(Big Endian):字节顺序从低地址到高地址顺序存储的字节序
  • 小端序(Little Endian):字节顺序从高地址到低地址顺序存储的字节序

对于人类来说,大端序比较好理解,字节序从低地址到高地址,对于计算机来说,小端序比较容易操作。

在这里插入图片描述

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

进制转换

二进制和十进制之间的转换

十进制转成二进制:整数除2取余;小数乘2取整

在这里插入图片描述

二进制转成十进制:按权求和方法

在这里插入图片描述

十进制和十六进制之间的转换

将十六进制转成十进制:按权展开求和方法,不过权的基数是16

在这里插入图片描述

十进制转成十六进制和十进制转成二进制的方法是一样的。

在这里插入图片描述

二进制和十六进制之间的转换

十六进制转成二进制:

  • 每一位十六进制数字转换为四位二进制数字,
  • 运算的顺序也是从低位向高位依次进行

在这里插入图片描述

二进制转成十六进制:

  • 每四位二进制数字转换为一位十六进制数字,
  • 运算的顺序是从低位向高位依次进行,
  • 高位不足四位用零补齐

在这里插入图片描述

CPU的控制器、运算器、寄存器

在这里插入图片描述

  • 寄存器用来暂存指令、数据等处理对象,可以将它看做是内存的一种,一个CPU的内部一般有20~100个寄存器。

  • 控制器负责把内存中的指令、数据读入寄存器,并根据指令的执行结果来控制整个计算机。

  • 运算器负责运算从内存中读入寄存器的数据。

CPU的执行流程

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

  1. 程序计数器内存 中读取出的指令是放入 指令寄存器 中的
  2. 指令接下来由 指令解码器(一种寄存器)解码,接着由运算器计算结果
  3. 计算的结果最终可能返回到内存,也可能被写入某个寄存器中,在计算过程中也可能从内存中读取数据

程序计数器

在这里插入图片描述

程序计数器又叫指令指针寄存器,是寄存器的一种。

  • 程序计数器负责从内存中获取指令,一开始指向第一条指令的内存地址,当这条指令被执行后,指针会自动指向下一条指令的内存地址(根据当前指令本身的字节大小计算偏移,如字节大小是3,则下一条地址就是从当前地址往后偏移3个字节)。

  • 不同计算机程序计数器的实现不同,一般它就是一个寄存器

CPU的指令集

不同架构的 CPU 的指令集不同,不同架构的 CPU 中相同名字的指令的含义也不一定相同。

在这里插入图片描述

指令

在这里插入图片描述

在这里插入图片描述

  1. 一条指令就是一串二进制码,它的前几位一般是 操作码, 如 movadd

  2. 操作码 后面跟着的一般是 操作数,操作数可以是寄存器,也可以是某个内存地址,或者是常量

  3. 不管什么样架构的CPU,CPU指令基本上都是按照 操作码 + 操作数 的实现方式

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

函数调用栈

函数调用栈中的每个元素是一个栈帧栈帧包含了参数值局部变量返回地址

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

栈内存

在这里插入图片描述

在这里插入图片描述

计算机状态交互和系统调用

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

用户态 & 内核态

  • 内核态:可以完全访问所有的硬件,也可以执行机器能够运行的任何指令
  • 用户态:只能执行一部分机器指令,对于那些会影响机器的控制或者可进行IO操作的指令,在用户态中的程序中是禁止的

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

用户态:是指应用程序在运行时 CPU 所处的状态,这个时候的 CPU 所处的状态的级别特别低,不能直接访问某些机器指令,或者不能直接访问 I/O (读写磁盘)。

内核态:是指操作系统在运行时 CPU 所处的状态,这个时候的 CPU 可以执行任何的一条的指令,包括特权指令,包括访问 I/O 指令等。

应用程序、操作系统、硬件之间的关系:

在这里插入图片描述

操作系统、CPU、内存之间的关系:

在这里插入图片描述

系统调用

系统调用是如何从用户态陷入内核态的?

  • 在 32 位Linux操作系统中是通过 80 软中断实现的
  • 在 64 位Linux操作系统中是通过 syscall 汇编指令实现的

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

64 位操作系统用户态发起系统调用的过程:

  1. 将参数保存到寄存器
  2. 根据系统调用名称得到系统调用号,并将其存储到CPU的 rax 寄存器中
  3. 执行 syscall 指令
  4. CPU会根据 rax 寄存器中的系统调用号到sys_call_table中找到对应的系统调用函数并执行该函数的指令代码,将运算结果写到 rax 寄存器中
  5. rax 寄存器中获取系统调用的结果值返回给用户态应用程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot2.7生成用于登录的图片验证码

先在 pom.xml 注入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency>然后 需要在配置文件中声明一下DefaultKaptcha 的 bean对象 然后 我们…

76、SpringBoot 整合 MyBatis------使用 sqlSession 作为 Dao 组件(就是ssm那一套,在 xml 写sql)

就是 ssm 那套&#xff0c;在xml 上面写sql ★ 基于SqlSession来实现DAO组件的方式 - MyBatis提供的Starter会自动在Spring容器中配置SqlSession&#xff08;其实SqlSessionTemplate实现类&#xff09;、并将它注入其他组件&#xff08;如DAO组件&#xff09;- DAO组件可直接…

js-nginx配置字段适配前端服务

当我们有这样一个需求&#xff0c;前端同一套代码&#xff0c;但要根据一些特殊字段展示不同的内容&#xff0c;比如我们有一个场id&#xff0c;暂时这个场id放在前端&#xff0c;后端根据这个场id返回不同的数据&#xff0c;这里前端部署用的是yaml文件&#xff0c;平台是ranc…

如何使用Python构建OTP验证系统?

即使您的密码被盗&#xff0c;OTP验证系统也可以充当安全的关键要素。它让您无需记住密码&#xff0c;充当额外的安全层&#xff0c;并降低了网络钓鱼的风险。 不妨学习用Python建立一个OTP验证系统&#xff0c;它会向您的手机号码发送一个OTP&#xff0c;有效期只有两分钟&am…

linux 文件锁

建议锁,强制锁,记录锁的概念 建议锁&#xff1a; 如果某一个进程对一个文件持有一把锁之后&#xff0c;其他进程仍然可以直接对文件进行操作(open, read, write)而不会被系统禁止&#xff0c;即使这个进程没有持有锁。只是一种编程上的约定。建议锁只对遵守建议锁准则的进程生…

知识付费平台开发技术实践:构建数字学习的未来

引言 知识付费平台的兴起正在塑造着数字学习的未来。本文将介绍一些关键的技术实践&#xff0c;帮助开发者构建强大的知识付费平台&#xff0c;提供出色的数字学习体验。 1. 选择适当的技术栈 在开始知识付费平台的开发之前&#xff0c;首要任务是选择适当的技术栈。这包括…

TS中的数据类型

一、number类型 let c: number; c 10; c "hello"; // 不能复制string类型 二、string类型 let d: string; d "hello"; d 10; // 不能复制number类型 三、boolean类型 let e: boolean true; e false; e 10; // 不能赋值true和false以外的值 四…

嵌入式裸机轻量级架构探索总结

为什么会想着探索下嵌入式裸机的架构呢&#xff1f;是因为最近写了一个项目&#xff0c;项目开发接近尾声时&#xff0c;发现了一些问题&#xff1a; 1、项目中&#xff0c;驱动层和应用层掺杂在一起&#xff0c;虽然大部分是应用层调用驱动层&#xff0c;但是也存在驱动层调用…

笔试面试相关记录(4)

&#xff08;1&#xff09;实现防火墙的主流技术有哪些&#xff1f; 实施防火墙主要采用哪些技术 - 服务器 - 亿速云 (yisu.com) &#xff08;2&#xff09; char arr[][2] {a, b, c, d}; printf("%d", *(arr1)); 输出的是谁的地址&#xff1f;字符c 测试代码如下…

ThreeJS-3D教学一基础场景创建

Three.js 是一个开源的 JS 3D 图形库&#xff0c;用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上&#xff0c;并提供了丰富的功能和工具&#xff0c;使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API&#xff0…

JUC中创建的组件 多线程使用“哈希表”

JUC中创建的组件 JUC中创建的组件这些内容都不太常用&#xff0c;偶尔用到面试的时候&#xff0c;偶尔用到&#xff01;到时候自行查找即可&#xff0c;本文主要来快速的过一下&#xff0c;留个印象即可~ JUC&#xff08;java.util.concurrent&#xff09;和多线程相关的工具…

python从入门到精通(一)

自己也有三四年的码龄了&#xff0c;目前&#xff0c;重拾起自己的博客&#xff0c;记录自己的学习笔记&#xff0c;为大家提供优质内容&#xff0c;也来巩固自己的学习内容。 很开心也成功成为了一名研究生&#xff0c;张张的研究方向是图像处理和计算机视觉这一块&#xff0c…

C++QT 作业8

#include "mywind.h" #include "ui_mywind.h" #include <iostream> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QDebug>//信息调试类 用于输出数据 Mywind::Mywind(QWidget *parent): QWidget(pa…

python3.11版本pip install ddddocr调用时报错got an unexpected keyword argument ‘det‘ 解决

一、如图出现如下问题 ddddocr.__init__() got an unexpected keyword argument det出现问题原因&#xff1a;python3.11默认安装版本就旧版的ddddocr1.0的&#xff0c;所以导致如下报错 二、解决方案一&#xff08;推荐&#xff09; python3.11的环境直接安装这个即可&…

物 理 层

二、物理层 1、物理层的基本概念 物理层的作用:尽可能的屏蔽掉传输媒体和通信手段的差异&#xff0c;使物理层上面的数据链路层感觉不到这些差异&#xff0c;使其只需要考虑如何完成本层的协议和服务 1.1、物理层的主要任务 机械特性&#xff1a;指明接口所用的接线器的形状…

关闭禁用chrome浏览器的阅读清单/强力书签

文章目录 前言操作 前言 阅读清单对我没啥用&#xff0c;还占用我位置&#xff0c;不小心点击到啥的&#xff0c;必须弃用 操作 chrome地址栏输入 chrome://flags/ 搜索book &#xff0c;关掉下面几个功能

Java 华为真题-猴子爬山

需求&#xff1a; 一天一只顽猴想去从山脚爬到山顶&#xff0c;途中经过一个有个N个台阶的阶梯&#xff0c;但是这猴子有一个习惯&#xff1a;每一次只能跳1步或跳3步&#xff0c;试问猴子通过这个阶梯有多少种不同的跳跃方式&#xff1f; 输入描述 输入只有一个整数N&#xff…

MySQL版数据库原理与应用期末复习重点(3)---画E-R图

文章目录 一、题目一1.1 题目描述1.2 解答 二、题目二2.1 题目描述2.2 解答 一、题目一 1.1 题目描述 设开发一个校园公共自行车管理系统&#xff0c;系统需要达到如下要求&#xff1a; &#xff08;1&#xff09;用户能够注册登录&#xff0c;能够根据借车点的名称查询借车…

若依注册的时候给个默认部门出现获取用户信息异常

想在注册的时候在数据库中查询一个部门给它一个默认部门&#xff0c;结果出现异常——【[handleServiceException,59] - 获取用户信息异常】 经分析代码&#xff0c;此方法有如下注解 以上注解会在mapper.xml中做如下操作 在做此操作之前会进入一个拦截器&#xff0c;根据token…

PHP-composer安装扩展安装,批量操作合并pdf

清除Composer缓存&#xff1a; 运行以下命令来清除Composer的缓存&#xff0c;并再次尝试安装包。 bash composer clear-cache 使用不同的镜像源&#xff1a; Composer使用的默认包源可能会受到限制或访问问题。你可以切换到使用其他镜像源&#xff0c;如阿里云、Composer中国…