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

一文看懂影子和扩展

后引入机制,把虚拟地址送往MMU,MMU查TLB不中的情况下,依次查就可以找到对应的物理地址。...二.影子 (Shadow page table) 影子我用一句话来描述就是:VMM把Guest和Host中的合并成一个,称为影子,来实现GVA->HPA映射。...4, 把GVA -> HPA,这一路的映射关系记录到中,这个就是影子。...虚拟机和影子通过一个哈希建立关联(当然也有其他的关联方式),客户机操作系统把当前进程的基址载入PDBR时而VMM将会截获这一特权指令,将进程的影子基址载入客户机PDBR,使客户机在恢复运行时...硬件层面引入EPTP寄存器,来指向EPT基地址。Guest运行时,Guest被载入PDBR,而 EPT 被载入专门的EPT 指针寄存器 EPTP。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

内核调试

一、配置内核 首先配置内核,使其支持导出内核到debugfs下面: Kernel hacking ---> ---> [*] Export kernel pagetable layout to...start] - [PCI I/O end]同上,专门用于PCI设备使用的地址空间,一般映射大小为16M [vmemmap start] - [vmemmap end]对与ARM64用于page映射区,linux...地址空间port属性说明 第一列 当前的映射范围地址 第二列 代表此映射范围大小 PMD PUD PTE 当标识为PMD PUD表示当前映射为block映射,如当前为4K,则pud的block映射一次性可映射...当标识为PTE表示为映射即PAGE_SIZE大小4K。 USR AP标记,用于标识当前范围是否在用户空间还是内核空间可读可写或者仅读。...x表述当前范围特权级别模式可执行,就是内核的可执行代码段,在内核中这段一般指向内核的text*段 SHD 表示可共享属性,在arm64上表述为多核之间可共享其可见 AF 访问标志,当首次映射时,

13710

Linux内核管理-那些鲜为人知的秘密

,而管理是在虚拟内存管理中尤为重要,本文主要以回答几个管理中关键性问题来解析Linux内核管理,看一看管理中那些鲜为人知的秘密。...Linux内核为何使用多级?...2)使用多级结构优劣: 优势: 1.节省内存 2.可以按需分配各级 3.可以离散存储 劣势: 需要遍历多级,需要多次访问内存,实现复杂度高点 3)Linux内核综合考虑: 典型的以时间换空间...2)Linux内核 填写,将基地址告诉mmu 内核初始化建立内核,实现缺页异常等机制为用户任务按需分配并映射。 当然,内核也可以遍历,如缺页异常时遍历进程。 10....12.遍历过程 下面以arm64处理器架构多级遍历作为结束(使用4级大小为4K): Linux内核中 可以将扩展到5级,分别是全局目录(Page Global Directory,

1.7K21

深入理解Linux内核映射分页机制原理

Linux有一个三层的结构,可以很容易地将其包装成适合两层的结构—只使用PGD和PTE。但是,Linux还要求每个页面有一个“PTE”,而且至少要有一个“dirty”位。...因此,在这里稍微调整了实现—告诉Linux在第一级有2048个条目,每个都是8字节。二级包含两个连续排列的硬件PTE表项,前面的表项是包含Linux需要的状态信息的Linux PTE。...ARMv7属性的定义分为Linux版本的和ARMv7硬件的Linux版本的PTE属性定义加入前缀L_,如下所示: /* * "Linux" PTE definitions....通过对比Linux版本的和ARMv7硬件的会发现,ARMv7硬件的缺少“dirty”位和“young”位。...“young”位的模拟方法与“dirty”位类似,也是利用了两套PTE模拟,一套用于Linux,一套用于ARM硬件。 ARMv7如何下发到硬件?

2.9K10

Linux-3.14.12内存管理笔记【建立内核(1)】

前面已经分析过了Intel的内存映射和linux的基本使用情况,已知head_32.S仅是建立临时,内核还是要建立内核,做到全面映射的。...建立内核前奏,了解两个很关键的变量: max_pfn:最大物理内存页面帧号; max_low_pfn:低端内存区(直接映射空间区的内存)的最大可用帧号; max_pfn 的值来自setup_arch...Linux是一个支持多硬件平台的操作系统,各种硬件芯片的分页并非固定的2级(全局目录和),仅仅Intel处理器而言,就存在3级的情况(全局目录、中间目录和),而到了64位系统的时候就成了4...所以Linux为了保持良好的兼容性和移植性,系统设计成了以下的4级分页模型,根据平台环境和配置的情况,通过将上级目录和中间目录的索引位设置为0,从而隐藏了三级目录和中间目录的存在。...此外还有一个准备操作,在setup_arch()函数中调用的缓冲区申请操作: early_alloc_pgt_buf(): 【file:/arch/x86/mm/init.c】 void __init

1.8K41

多级的好处

,如果只使用了一个,一个表项的大小为4byte,32位系统有4GB的物理空间(一个进程看到是4GB大小的虚拟空间),每一个表项对应着物理空间的第xxx(4KB大小的),那么应该有4GB/4KB=...如果是二级,规则就会改变,让二级对应到物理内存上的4KB大小的,一级此时变成映射为物理地址的4MB(这样子是无法定位到具体的(4KB)的,所以二级再去找),这样先找到一级,一级再和二级进行结合...,二级表相当于一级4MB分成了1024个(1KB个)4KB,找完后二级充当了offset的角色,此时定位到具体的4KB的页面,再用一级的offset一结合定位到具体物理地址。...这样一个进程浪费掉的空间是一级占用的:(4GB/4MB)*4byte=4KB,二级浪费掉的是1kb(1个一级占用这么多)*1kb(此时有1kb(4GB/4MB)个一级)=4MB,加起来是...4MB+4KB,比光用一级要多4KB,但是2级是可以不存在的,比如此时程序只用了%20的,那么4MB就需要乘以%20,这样一下子就比只有一级时少了。

1.6K30

Linux从头学16:操作系统-如何把【目录和】当做普通物理进行操作的?

进行"自操作" 在 x86 系统中,内存管理中的分页机制是非常重要的,在Linux操作系统相关的各种书籍中,这部分内容也是重笔浓彩。...如果你看过 Linux 内核相关书籍,一定对下面这张图又熟悉、又恐惧: 这是 Linux 系统中,处理单元的多级查询方式。...其中黄色背景部分:上级目录索引 和 中间目录索引,是 Linux 系统自己扩展的,在原本的 x86 处理器中是不存在的,这也是导致 Linux 中相关部分代码更加复杂的原因。...文章链接在此:Linux从头学15:【目录和】-理论 + 实例 + 图文的最完全、最接地气详解!,但是其中有一个环节被特意忽略过去了。...详细的讨论过程,请参考上一篇文章:Linux从头学15:【目录和】-理论 + 实例 + 图文的最完全、最接地气详解!。

1.5K20

通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

linux查看用户密码(linux查看用户密码命令) 2020-05-15 13:18:30 共10个回答 1、用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/shadow2...目前还没有这个命令,如果你非想查看,去下载个软件吧.Windows下都不能查看本地用户的密码,Linux下还没听说呢,可以修改,要查看,去问下Torvals吧,他应该知道!...~~ linux下你只能看到加密后的密码,密码文件在/etc/shadow中,只能通过root用户查看....linux用户身份与群组记录的文件cat/etc/group查看用户组cat/etc/shadow查看个人密码cat/etc/passwd查看用户相关信息这三个文件可以说是:账号,密码,群组信息的的集中地...w或who查看用户在线信息和登录信息 Linux查看所有用户只需要查看/etc/passwd这个文件就可以了,命令是:cat/etc/passwd.这个文件里面一行内容就是一个帐号,除去一些系统帐号如

76.8K20

在手机上查看移动Web

我最近在学习做移动端页面,当做好一个移动端页面后想使用手机查看一下移动端页面在手机上的效果,找了很久才找到一个比较好的方法,特意写这篇文章记录下在手机上查看移动端页面的方法 准备的硬件和软件 带有android...browser-sync start --server 此时会自动使用默认的浏览器打开网页,并且在命令行窗口中会显示四个Url地址,其中上面两个表示当前网页的Url地址下面两个Url地址用于打开Browsersync管理,...在Browsersync管理中可以控制网页 此时在手机浏览器上运行http://192.168.0.102:3000就可以在手机上看到这个网页,前提必须使手机和电脑连接在同一wifi下 第四步...:在桌面版Chrome浏览器上查看连接到电脑上的手机 打开桌面版的Chrome浏览器,在地址框中输入chrome://inspect,此时在Chrome浏览器页面上可以查看到与电脑连接的移动设备的信息...转载请注明: 【文章转载自meishadevs:在手机上查看移动Web

1.1K20

内核知识第八讲,PDE,PTE,目录,的内存管理

内核知识第八讲,PDE,PTE,目录,的内存管理 一丶查看GDT....此图是从inter手册上截图下来的.有兴趣的可以查询CR0查看....刚才我们说的高位为1的是否就去掉分页保护,此时访问虚拟内存 等价于访问物理内存,其实我们修改的是PG位 关于位怎么说的,inter手册也说.这里我总结一下重要的,如果不相信我可以查看inter手册....首先我们的CR3寄存器保存了的首地址. 这里有一个目录,还有的关键词. 目录: 也称为PDE,而称之为PTE....PDE的大小:   目录,存储在一个4K字节的物理中,其中每一项是4个字节.保存了的地址.   而最大是1M个. PTE的大小.   PTE的大小也和PDE一样的.

1.4K10

【进程 进程通常存在PCB中

通俗解释进程-科学家做蛋糕 科学家做蛋糕 然后女儿被蜜蜂蛰了 进程–在内核 内存管理 经典 老式 管理方法: 基址寄存器(程序开始的地方) + 界限寄存器(程序长度) 空闲内存管理...每个框有一个编号,即“框号”(框号=帧号=内存块号=物理块号=物理页号),框号从0开始 将进程的逻辑地址空间也分为与框大小相等的一个个部分,每个部分称为一个“”或“页面”。...操作系统以框为单位为各个进程分配内存空间。进程的每个页面分别放入一个框中。也就是说,进程的页面与内存的框有一一对应的关系。 各个页面不必连续存放,可以放到不相邻的各个框中。...重要的数据结构—— 为了能知道进程的每个页面在内存中存放的位置,操作系统要为每个进程建立一张。...注:通常存在PCB中 一个进程对应一张 进程的每个页面对应一个表项 每个表项由“页号”和“块号”组成 表记录进程页面和实际存放的内存块之间的映射关系

1.2K20

oracle查看分区

显示数据库所有分区的信息:DBA_PART_TABLES 显示当前用户可访问的所有分区信息:ALL_PART_TABLES 显示当前用户所有分区的信息:USER_PART_TABLES 显示分区信息...显示数据库所有分区的详细分区信息:DBA_TAB_PARTITIONS 显示当前用户可访问的所有分区的详细分区信息:ALL_TAB_PARTITIONS 显示当前用户所有分区的详细分区信息:...USER_TAB_PARTITIONS 显示子分区信息 显示数据库所有组合分区的子分区信息:DBA_TAB_SUBPARTITIONS 显示当前用户可访问的所有组合分区的子分区信息:ALL_TAB_SUBPARTITIONS...显示当前用户所有组合分区的子分区信息:USER_TAB_SUBPARTITIONS 显示分区列 显示数据库所有分区的分区列信息:DBA_PART_KEY_COLUMNS 显示当前用户可访问的所有分区的分区列信息...--oracle 查看当前用户的分区信息; select * from USER_PART_TABLES; --查看数据库所有分区信息; select * from dba_part_tables

5.7K30

宋宝华: ARM64 Linux内核的块映射

我们看看这种情况下的,我们既可以用最终的【20:12】对应的PTE映射项,以4K为单位,进行虚拟地址到物理地址的映射;又可以以【29:21】对应的PMD映射项,以2M为单位,进行虚拟地址到物理地址的映射...当然,如果用户态的虚实映射是这样的,用户实际得到了一个1GB的巨。但是对于内核的线性映射区域而言,即便我们进行了1GB的PUD映射,这1G内部就可以进一步切割为4KB或者2MB的巨。...ptdump.c和ptdump_debugfs.c 我们把它们全部选中,这样我们可以得到一个debugfs接口: /sys/kernel/debug/kernel_page_tables 来获知内核态的情况...如果我把这个kernel启动选项去掉,我得到的内核是完全不一样,线性映射区也全部是PTE映射: ?...牧春童鞋在“Linux阅码场”这里还有一些精彩的文章: 宋牧春:Linux设备树文件结构与解析深度分析(1) 宋牧春:Linux设备树文件结构与解析深度分析(2) 宋牧春:多图详解Linux内存分配器

3.2K10

ARM32 映射

我们从ARM linux内核建立具体内存区间的映射过程中来看映射是如何实现的。...,注意ARM Linux中实现了两份,硬件的地址r0+2048。...该函数的主要目的是根据Linux版本的页面表项内容来填充ARM硬件版本的表项; 首先把linux内核版本的表项内容写入linux版本的中,然后根据mem_type数据结构prot_pte的标志位来设置...linux内核最早基于x86体系结构设计的,所以linux内核关于的许多术语和设计都是针对x86体系的,而ARM Linux只能从软件架构上去跟随了,因此设计了两套。...版本中PTE页面表项标记为"dirty",并且发现PTE表项内容改变了,ptep_set_access_flags()函数会把新的linux版本的表项内容写入硬件,从而实现模拟过程;

2.8K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券