首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux内核 MMU的工作原理

内存对MMU 的映射一无所知,它只看到一个对地址8192的读请求并执行它,MMU 从而将8192 到 12287换虚拟地址解析为对应的物理地址 0 到 4096 。...以上就是MMU的工作过程。...如果处理器启用了MMU,CPU执行单元发出的内存地址将被 MMU 截获,从CPU到MMU 的地址称为虚拟地址,而MMU 将这个地址翻译成另一个地址,发到CPU芯片的外部地址引脚上,也就是将VA映射成了PA...操作系统和 MMU 是这样配合的:操作系统在初始化或分配、释放内存时会执行一些指令在物理内存中填写页表,然后用指令设置MMU,告诉MMU 页表在物理内存中的什么位置。...用户空间和内核空间 通常操作系统把虚拟地址划分为用户空间和内核空间,例如 X86平台的Linux 系统虚拟地址空间是0x00000000 - 0xFFFFFFFF,前3GB(0x00000000 - 0xBFFFFFFF

2.1K20

Linux内存管理之MMU的过程

之前写过一篇《CPU是如何访问内存的?》的文章,简单介绍了cpu访问内存的过程。有了之前的感性认识,这篇站在arm的角度再深度讲解一下,看完你会发现不理解arm原理就直接撸内核代码简直是耍流氓。...「那么CPU是如何通过MMU和Cache来访问内存的呢?」 ? 可以看出虚拟地址和物理地址的转换关键是过程Table Walk Unit。...linux中对地址转换的实现 /*描述各级页表中的页表项*/ typedef struct { pteval_t pte; } pte_t; typedef struct { pmdval_t pmd;...可以看出虚拟地址ffff99b488d48000对应的物理地址是80000000c8d48000。这个过程也是mmu的过程。...小结 我相信你已经对cpu通过MMU访问内存的本质有所掌握(还是不理解的话不要说认识我),而且通过linux的一个实验,对其软件模拟流程也有所感性的认识。

2.3K42
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux的基本指令讲解

    其实Linux和windows系统一样,他们的文件系统都是一个多叉树,每个节点到根目录的路径有且仅有一条,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。...指令 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。...file.txt 将hello Linux放入file中,原有的内容被覆盖,然后输出 cat test.txt Linux" 将内容放入test cat "hello Linux...例如: file.txt内一共有30行,我想要第10行到第15行(一共六行内容)的内容怎么办 有两种方法: 1 首先将头部的的数据提取到一个文件(临时文件),然后再用tail打印文件的尾部就可以实现打印源文件的中间部分...Linux下find命令在目录结构中搜索文件,并执行指定的操作。

    12110

    Linux中eventfd的讲解

    eventfd 是 Linux 内核中用于线程或进程间通信的一种机制。它提供了一种简单的方式,让一个线程或进程可以通知另一个线程或进程某个事件已经发生。...这会增加 eventfd 内部的计数器。 被通知的线程或进程则通过 read 函数读取这个计数器的值,从而得知事件发生的次数。...进程间通信: 两个独立的进程可以使用 eventfd 进行简单的事件通知,而无需复杂的 IPC 机制。...实现事件计数: 通过 eventfd 的计数器特性,可以实现事件的计数功能,如统计某个事件发生的次数。...高效的事件通知: 在高并发场景下,eventfd 提供了一种高效的事件通知机制,可以替代基于信号量或条件变量的传统同步方式。

    38810

    ARM MMU的存在必要及作用

    ARM中的MMU就是内存管理单元,是Memory Management Unit的缩写,那这个东西主要是解决什么问题呢,MMU诞生的主要原因就是解决程序,数据、堆栈的总的大小大于实际的物理存储器介质的大小这个问题...因此应用程序访问内存地址,访问的是虚拟地址。而将虚拟地址映射成实际地址就是MMU的作用。...0x00001FFF,再将应用程序的剩余8KB搬入物理内存中,应用程序访问MMU虚拟地址0x10002000~0x10003FFF的时候,相当于访问实际物理地址0x00000000 ~ 0x00001FFF...则应用程序访问了全部的16KB数据。以上例子的内存搬移和地址只是举例子便于理解,不代表实际过程。 当然现在一般内存够用,那MMU的地址映射的作用主要就是进行内存访问的保护。...比如像Linux这样的系统的多进程,通过MMU进行内存访问,一个进程出了问题不会影响到其他进程。

    47840

    shell的介绍以及Linux权限的讲解

    答案是否定的! 其实操作系统还有一个“外壳”: Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。...系统中的图形界面就是一个shell程序,我们点击图标从而完成相应的需求,但是Linux中,shell主要是对指令进行解析,然后交给kernal,反馈的结果通过kernal运行出结果,通过shell解析给用户...2 Linux权限 2.1 Linux权限的概念 Linux下有两种用户: 超级用户(root)、普通用户 这也从侧面反映了Linux操作系统是多用户操作系统,windows也是 从名字上就能看出来哪个用户的权限大...,root在Linux系统中只能用无所不能来形容,就这么说吧,root就像是一个古代的皇帝,其他普通用户就是各个地方的亲王,每年都要上贡,但是在自己管辖的区域有一定的权力 我们可以用指令su来切换用户:...,我们下篇博文在做讲解,因为本篇博文还有未涉及到的知识 然后我们就可以调用sudo分配权限了 2.4 目录的权限 在目录中各种权限的解释如下: 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

    13610

    实例讲解linux强大的find命令

    find命令思维导图 Find命令是linux中最常用且重要的命令之一,用于检索文件所在的位置,可以根据多种参数组合进行检索:文件名称,文件权限,文件属组,文件类型,文件大小等。...虽然man find手册有关于find的详细说明,可缺乏实例的说明文档显得干巴巴,对初学者很不友好。导致初学者对于find产生这样的印象:“我知道find很强大,但不知道用在什么场景,该怎么用”。...再强大的工具,只有会用,用得好,才能体现出其价值。...基于此,本文将用实例讲解find命令常用场景: 基本使用 -name 指定文件名 $ find /etc -name passwd /etc/cron.daily/passwd /etc/pam.d/passwd...-mtime +50 -mtime -100 根据文件大小查找 查找大小为50M的文件 $ find / -size 50M 查看大小为50M至100M的文件 $ find / -size +50M -

    1.3K50

    【linux命令讲解大全】142.Linux命令talk详解:实现用户之间的即时聊天

    在Linux中,talk命令的参数和程序使用非常简单,只需要知道交谈对象的地址,就可以邀请对方进行交谈。 语法 talk [用户] [终端] 参数 用户:指定聊天的用户; 终端:指定用户的终端。...实例 例如,登录在主机rs6000.cic.test.com上的用户jdx希望和登录在主机tirc.cs.test.com上的用户wangxz进行交谈,则可以输入以下命令: talk wangxz@tirc.cs.test.com...双方的终端屏幕上都将显示信息 [Connection established] 并响铃,同时屏幕被talk命令程序以一条水平线分割为上下两部分,上半部分用来显示用户自己输入的内容,下半部分用来显示对方输入的内容...两个用户可以同时输入,他们输入的内容将会立即显示在双方的屏幕上。...,否则将会失去很多信息交流的机会。

    14710

    find 和 findIndex 的讲解和实现

    它接收三个参数: element:当前正在被处理的数组元素。 index(可选):当前元素的索引。 array(可选):调用 findIndex 的数组。...thisArg(可选):在执行回调函数时使用的 this 值。 findIndex 方法会从数组的第一个元素开始遍历,直到找到满足条件的元素或遍历完整个数组。...如果找到满足条件的元素,则返回该元素的索引;否则返回 -1。...由于 4 是第一个满足条件的元素,所以返回索引 3。 需要注意的是,findIndex 方法是 ES6 中引入的新特性,因此在较旧的浏览器或环境中可能不被支持。...如果需要在不支持的环境中使用该方法,可以考虑使用 polyfill 或其他类似的解决方案来实现相同的功能。

    8410

    Linux软连接和硬链接的讲解

    2.特性 (1)软链接有自己的文件属性及权限等; (2)可对不存在的文件或目录创建软链接; (3)软链接可交叉文件系统; (4)软链接可对文件或目录创建; (5)创建软链接时,链接计数 i_nlink...不会增加; (6)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。...2.特性 (1)文件有相同的 inode 及 data block; (2)只能对已存在的文件进行创建; (3)不能交叉文件系统进行硬链接的创建; (4)不能对目录进行创建,只可对文件创建; (5)删除一个硬链接文件并不影响其他有相同...inode 号的文件。...:原文件的路径的长度

    6.3K20

    【linux命令讲解大全】189.常用的Linux命令详解

    setsid 在新的会话中运行程序 补充说明 setsid 命令子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用 setsid 来实现。...而命令行或脚本中可以通过使用命令 setsid 来运行程序实现。setsid 帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。...选项 -c, --ctty: 将控制终端设置为当前控制终端 -f, --fork: 总是 fork -w, --wait: 等待程序退出,并使用相同的返回 实例 可见 setsid 的使用也是非常方便的...语法 squid [选项] 选项 -d:将指定调试等级的信息发送到标准错误设备 -f:使用指定的配置文件。...-u:代理认证用户名 参数 URL:指定操作缓存中的 URL ssh-copy-id 把本地的 ssh 公钥文件安装到远程主机对应的账户下 补充说明 ssh-copy-id 命令可以把本地主机的公钥复制到远程主机的

    10710

    基于 Linux 0.11 讲解 Linux 操作系统的启动原理

    不知道大家有没有产生过一个疑问:从给 Linux 服务器按下开机电源按钮后到启动成功的一段时间里,在这中间 Linux 操作系统都做了哪些事情?...在 Linux 服务器没有通电的时候,操作系统还只是躺在硬盘启动区中的一段程序,CPU 没有工作,内存也没有启动。但是在你按下开机键后,Linux 服务器内部就开始变得热闹了起来。...叫做《Linux 源码趣读》。这周,这本新书正式印刷出炉了。 对于 Linux 启动过程,代码的运行在书中总结成下面一张图来表示。但分了 50 小节来讲述每一个步骤中的细节。...全书共 400 多页,250 多张精美的图解,五大部分,从头到尾把 Linux 0.11 全部核心代码讲述的一清二楚 当你按下电源后,在主板上提前写死的固件程序 BIOS 会将硬盘启动区中的 512...上面描述的这些都是操作系统的第 0 号内核线程处理的。在操作系统中,0号内核线程是所有进程祖先,是操作系统Linux在初始化阶段从无到有的第一个内核线程 接着最后会切换到用户态模式。

    41111

    【建议收藏】MMU是如何完成地址翻译的?

    为了讲清楚MMU是如何一步一步完成地址翻译,取出数据的,本篇文章在前4节中讲解了虚拟内存中一些重要的概念,比如,虚拟内存的作用,页命中,缺页异常处理,为什么需要TLB等等。...CPU通过MMU找到虚拟地址对应的物理地址 我们先来看下,CPU是如何根据地址取得数据的。...MMU生成PTE地址,并从高速缓存/主存请求得到它。 高速缓存/主存向MMU返回PTE。 MMU构造物理地址,并把它传送给高速缓存/主存。 高速缓存/主存返回所请求的数据字给处理器。 ?...MMU生成PTE地址,并从高速缓存/主存请求得到它。 高速缓存/主存向MMU返回PTE。 PTE中的有效位是零,所以MMU触发了一次异常,传递CPU中的控制到操作系统内核中的缺页异常处理程序。...所以,缓存就要向内存传递物理地址去得到所需要的字节。相关内容本篇就不再做具体讲解,可以参考下这篇文章。24张图7000字详解计算机中的高速缓存 6.

    2K52

    Linux命令中的重定向(>)和管道(|)的讲解

    文件描述符Linux的宗旨是一切皆文件,对于进程、IO等等都是通过文件的形式存在,这些文件都通过文件描述符的形式来表示。...Linux的文件描述符可以理解为Linux为了跟踪一个打开的文件而分配的唯一标号,可以通过这个标号对文件实现读写操作。...Linux系统的文件描述符一般都有最大的限制,可以通过ulimit -n这条命令来查看。...我们知道,Linux启动时,最开始会创建init进程,其余的程序都是这个进程的子进程。...我们又知道,在Linux中,子进程会继承父进程的文件描述符,所以说,Linux中每个程序,执行的每个shell命令,拥有这三个文件描述符,而程序后续打开的文件,其文件描述符则(从3开始)依次增加。

    96710

    【Linux】Linux的前世今生(趣味讲解,用于拓展自己的知识面)

    前言 在我们学习Linux的时候,我们是否有真正了解过它。一个成熟的软件往往是经过了时间的考验,我们本文就是要抓住它在时间发展长河中所发生的故事,对Linux有更深的理解。...本文会围绕着这个故事线给大家展开: 计算机的发展(硬件) -> 操作系统的发展(软件) -> Linux的发展 对Linux这个事物有更深的了解!!!...好了,话不多说,让我们开启对Linux的探索吧。 1. Linux是什么? 在正式讲解Linux的发展史之前,我们得先了解什么是Linux。 你也许会说,Linux是操作系统。这个回答是没有问题的。...详细的知识,我会在另外一篇文章中讲解。 2. Linux的发展史 2.1 计算机的发展(硬件) 要想了解Linux操作系统背后的故事,我们就得了解计算机诞生的起源。...Linux的版本 Linux版本分为两种: 商业化版本(发行版本): 技术版本: 通过上面的图,我们也能感知到Linux不断变强大的过程。

    8510

    20条最最常用的Linux命令讲解

    推荐阅读 微服务: springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 玩过Linux的人都会知道,Linux中的命令的确是非常多,...但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。...然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Linux系统的人有所不同。...因为不想在使用是总是东查西找,所以在此总结一下,方便一下以后的查看。 不多说,下面就说说我最常用的Linux命令。...例如: 10、killall命令 该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下: 它的参数如下: 11、file命令 该命令用于判断接在file命令后的文件的基本数据,因为在Linux下文件的类型并不是以后缀为分的

    76660

    Linux的lvm讲解与磁盘故障小案例

    l 4.10 lvm讲解(上) l 4.11 lvm讲解(中) l 4.12 lvm讲解(下) l 4.13 磁盘故障小案例 lvm讲解(上) lvm可以很方便的扩容和缩容磁盘的空间,但是有一定的局限性...,lvm是一个软件工具是具有一定风险的。  ...2.使用t命令将新建的三个分区id改为8e,将id改为8e后这个分区类型就是Linux LVM类型,只有这样才能做成物理卷: ? ? ? 1.使用pvcreate命令将三个分区做成物理卷: ? ?...lvm讲解(中)   pvs命令也能列出物理卷,并且更直观: ? 创建完物理卷之后,就可以开始创建卷组了,vgcreate命令可以创建卷组: ? vgdisplay命令可以查看卷组: ?...以上就是xfs文件系统的扩容方式。 ? 1.先卸载挂载点: ? 2.检测磁盘错误: ? 3.更新逻辑卷信息: ? 4.重新设置卷的大小: ? ? 5.进行挂载: ? lvm讲解(下) ?

    2.1K30
    领券