Linux进程地址空间第三讲

在这里插入图片描述
至今为止, 我们所学到的大多数的知识, 包括语言, 数据结构, 动静态库等等的 都是在下面这3G, 也就是用户空间里的(进程等待, 信号之类的与内核有关的是在上面那1G里的)

所以对于我们来说, 我们并没有怎么接触上面的这些部分。

上面这部分(1G)映射的是操作系统的代码和数据

用户级页表和内核级页表

用户空间通过用户级页表映射到自己的代码和数据, 而内核空间通过内核级页表映射到操作系统的代码和数据

对于每一个进程 每个进程都需要有自己的用户级页表, 而内核级页表只有1份所以, 每一个进程的内核级空间对应的数据是一样的, 所以进程在切换的时候内核空间的内容其实是不变的

在这里插入图片描述
解释一下第三句话, 第三句话的意思就是 操作系统如果想执行自己的代码, 可以通过进程的PCB找到进程的地址空间然后执行对应的代码, 因为操作系统中一定有正在运行的进程。

操作系统的本质: 是一个基于时钟中断的一个死循环。

操作系统中有一个时钟芯片, 他会每隔很短很短的时间向计算机发送时钟中断, 而一旦被CPU接受到, 就会根据中断向量表去执行对应的方法, 这个方法就可能是操作系统中的某个方法。

举个例子:

我们CPU在调度进程的时候, 如果此时接收到了时钟中断, 就会将该进程剥离下来, 接着执行下一个进程。

用户态和内核态

CPU里面有一个CR3寄存器, 它里面存放的是用户级页表的地址(物理地址)
在这里插入图片描述
CPU里面还有一个寄存器ecs 他的低两位表示CPU当前的工作模式
在这里插入图片描述
其中 00 表示内核态 11 表示用户态

所以我们来个总结
内核态: 允许你访问操作系统的代码和数据
用户态: 只能访问你自己的代码和数据
我们在调用系统调用的时候, 我们的操作系统会吧ecs的低2位设为00, 然后在仅此地址空间里的内核空间找到对应的代码然后执行就可以了。

信号的检测和处理的流程图

在这里插入图片描述

在这里插入图片描述

那么我们就有个问题, 如何我们的代码全是自己写的内容, 没有系统调用呢? 此时怎么进行信号的检测和处理呢?

由于我们的进程是在被不断的调度的, 当我们的进程被调度的时候, 操作系统会把进程的PCB 地址空间, 页表等等拿到CPU上, 此时肯定是内核态的, 然后开始执行代码时 又是用户态的, 所以这之间一定存在 内核态向用户态的转变, 也就一定会进行信号的检测和处理。

所以 不仅仅是系统调用会让进程从用户态变成内核态

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

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

相关文章

【数据结构】链表经典OJ题目练习(2)

面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode) 思路1:先计算出链表的长度,在将链表中的值存在数组中,在返回第k个节点。 思路2:利用快慢指针,先让快指针走k步,在让快慢指针分…

pnpm和yarn与npm有何不同?

pnpm和yarn与npm的主要区别在于安装机制、性能优化以及兼容性等方面。 首先,从安装机制方面来看,npm不支持并发安装,它会逐个安装依赖项。而pnpm支持并发安装,这显著提高了安装速度。yarn则使用并行下载,这也使得其安…

多模态大模型学杂了能力反下降?新研究:MoE+通用专家解决冲突

微调,能让通用大模型更加适配具体的行业应用。 但现在,研究人员们却发现: 对多模态大模型做“多任务指令微调”,大模型可能会“学得多错得多”,因为不同任务之间的冲突,导致泛化能力下降。 △多模态指令微…

杭州恒生面试,社招,3年经验

你好,我是田哥 一位朋友节前去恒生面试,其实面试问题大部分都是八股文,但由于自己平时工作比较忙,完全没有时间没有精力去看八股文,导致面试结果不太理想,HR说节后通知面试结果(估计是凉了&…

【软件测试】接口自动化测试面试题及详细答案

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

【算法】数字接龙 走迷宫问题的一般处理思路

前言 其实走迷宫就是一个普普通通的深搜回溯嘛,但是我之前做的很多题都是在一个二维的地图上,只能上下左右四个方向走迷宫,在做数字接龙这道题的时候,相当于可以往8个方向走,虽然逻辑上不变,但按照我之前的…

[Maven]IDEA报错-xxx is referencing itself

在IDEA中,执行 mvn clean时报错xxx is referencing itself。 解决方案:https://stackoverflow.com/questions/64246267/maven-error-using-intellij-is-referencing-itself 具体做法:采用上图第二条,将父模块pom文件中的对子模块…

1天搞定SpringBoot+Vue全栈开发 (7)Axios网络请求

1.Axios的使用 Axios中文文档 | Axios中文网Axios 是一个基于 promise 的网络请求库&#xff0c;可以用于浏览器和 node.jshttps://www.axios-http.cn/ 2.与vue整合 App.vue: <template><div id"app"><Moviev-for"movie in movies":key&qu…

【mobx-入门与思考】

介绍 mobx 是 nodejs生态中的框架&#xff0c; 主要用于做状态管理&#xff0c;可以监控变量状态的变化。 nodejs中除了mobx&#xff0c;还有个redux&#xff0c;也是做状态管理的&#xff0c;都是比较成熟的框架&#xff0c;二者的选择可以参考 【nodejs状态管理: Redux VS M…

代码随想录算法训练营第六十三天|84.柱状图中的最大矩形

文档链接&#xff1a;https://programmercarl.com/ LeetCode84.柱状图中的最大矩形 题目链接&#xff1a;https://leetcode.cn/problems/largest-rectangle-in-histogram/ 思路&#xff1a;跟接雨水很相似 单调栈&#xff1a; class Solution { public:int largestRectang…

mac电脑如何安装python及环境搭建

&#xff08;1&#xff09;进入官网&#xff1a;Download Python | Python.org&#xff0c;根据自己电脑选择python (2)这里我选择的是mac,点击&#xff1a;macos&#xff0c;选择最近版本并点击进入 (3)选择mac版本&#xff1a; (4)点击就可以进入下载&#xff1a; (5)下载好之…

京东工业优选商品详情API接口:解锁高效工业采购新体验

京东工业优选的商品详情API接口&#xff0c;允许开发者通过程序化的方式&#xff0c;快速获取平台上的商品详细信息。这些详细信息包括但不限于商品名称、价格、规格、库存、图片、评价等&#xff0c;为企业提供全方位的商品信息查询服务。 二、API接口的主要功能 实时查询&a…

Baidu Comate——您的智能编码伙伴

文章目录 1.Baidu Comate智能编码助手简介2.Baidu Comate安装使用3.查看Comate插件功能4.Baidu Comate基础功能介绍✨注释生成代码✨实时续写✨函数注释✨行间注释✨代码解释✨单元测试生成✨代码优化✨技术问答 5.使用体验结语 1.Baidu Comate智能编码助手简介 ✨Baidu Comat…

电脑装了两个Win10系统,怎么修改其名称方便识别?

前言 有小伙伴在上一期的双系统教程上留言说怎么修改双系统引导时候显示的名称 不然看起来两个系统好像都没啥分别&#xff0c;如果是Windows10Windows11的方案还好说&#xff0c;但如果是两个Windows10或者是两个Windows11&#xff0c;有时候还真的很不好分辨。 万一想要启动…

MySQL主从复制失败的全面指南:原因、诊断与解决方案

在数据库管理和维护的世界里&#xff0c;MySQL的主从复制是一种常见的技术&#xff0c;旨在增强数据的可用性和可靠性。通过复制&#xff0c;数据从一个主数据库服务器自动同步到一个或多个从数据库服务器。尽管这听起来很理想&#xff0c;但实际操作中可能会遇到复制失败的情况…

Java面试题:解释Phaser类的作用以及它如何帮助多线程同步

Phaser 是 Java 并发包 java.util.concurrent 中的一个同步辅助类&#xff0c;它用于多线程之间的同步。Phaser 的设计灵感来自于“相位”的概念&#xff0c;它允许多个线程在多个不同的阶段&#xff08;phase&#xff09;中相互协调&#xff0c;从而实现复杂的线程协作。 以下…

Candance画运算放大器

根据拉扎维《模拟CMOS集成电路设计》第九章第一个放大器进行搭建电路图。 此电路图中两个NMOS栅极互联是因为NMOS的衬底要接片上最低电压。所以要两个互联并接到最低点。 因为两条支路上的器件都是一样的&#xff0c;所以这两条路平分idc的直流电流。 测试的时候要加上下图这两…

【C语言】学习C语言

C语言简介 C语言是一门十分流行的编程语言&#xff0c;由美国贝尔实验室的 Dennis Ritchie 在 20 世纪 70 年代开发。 C语言具有高效、可移植、灵活、简单等特点&#xff0c;被广泛应用于操作系统、编译器、数据库、图形界面、嵌入式系统、网络通信、游戏等领域。 本文将带你…

Spring 事务失效的几种情况

目录 1. 事务方法不是public 2. 自调用问题 3. 异常处理不当 4. 数据源或事务管理器配置错误 5. 事务传播行为不当 6. 代理方式不正确 7. 事务同步问题 1. 事务方法不是public 在Spring中&#xff0c;默认情况下&#xff0c;只有public方法上的Transactional注解才会被代…

【Ajax零基础教程】-----第一课 Ajax简介

一、什么是ajax ajax即 Asynchronous javascript And XML (异步 javaScript 和 XML) 是一种创建交互式&#xff0c;快速动态应用的网页开发技术&#xff0c;无需重新加载整个网页的情况下&#xff0c;能够更新页面局部数据的技术。 二、为什么使用Ajax 通过在后台与服务器进行少…