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

Linux 匿名页反向映射

我们知道LINUX内存管理系统中有”反向映射“这一说,目的是为了快速去查找出一个特定物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Migrate)时候,就能相应该更改所有相关进程页表来达到这个目的...1、为什么要使用反向映射   物理内存分页机制,一个PTE(Page Table Entry)对应一个物理页,但一个物理页可以由多个PTE与之相对应,当该页要被回收时,Linux2.4做法是遍历每个进程所有...PTE判断该PTE是否与该页建立了映射,如果建立则取消该映射,最后无PTE与该相关联后才回收该页。...2、Linux2.6中是如何实现反向映射 2.1 与RM(Reverse Mapping)相关结构 page, address_space, vm_area_struct, mm_struct, anon_vma...Linux采用三级页表: PGD:顶级页表,由pgd_t项组成数组,其中第一项指向一个二级页表。

3.7K31

Linux内存映射——mmap

大家好,又见面了,我是你们朋友全栈君。 一 mmap系统调用 1.内存映射 所谓内存映射就是把物理内存映射到进程地址空间之内,这些应用程序就可以直接使用输入输出地址空间,从而提高读写效率。...Linux提供了mmap()函数,用来映射物理内存。...采用共享内存通信一个显而易见好处是效率高,因为进程可以直接读写内存,而不需要任何数据拷贝。...共享内存中内容往往是在解除映射时才写回文件。因此,采用共享内存通信方式效率是非常高。 基于文件映射,在mmap和munmap执行过程任何时刻,被映射文件st_atime可能被更新。...struct file *,struct vm_area_struct *); linux有2个方法建立页表: (1) 使用remap_pfn_range一次建立所有页表.

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

    linux更改键盘映射

    因为习惯使用vim 编辑器,而早期vi 键盘设置跟现在qwert键盘按键差别较大,所以我一般选择将不常用Caps_Lock与常用Esc 互换,在Win下有很多好用软件可以直接更改,linux...获取按键具体名称 使用 xmodmap -pke |less 查看想要交换按键具体名称 写入配置文件 将需要交换按键写入配置文件~/.keymaprc remove Lock = Caps_Lock.../usr/local/bin 这样每次需要更改按键时候,输入swkey 命令即可。...其他问题 这样设置在只有一个英文输入法时候好使,后来我又添加了中文拼音输入法,每次切换中文再切回来之后键盘设置都会重置,即需要再次输入 swkey 才可以,一直找不到解决办法。...最后我索性去掉英文输入法,只保留中文拼音,初始化为英文,需要切换英文按shift,这样不会出现键盘设置重置问题,到目前来看用起来还不错。

    6.1K10

    Linux编程】存储映射IO

    存储映射I/O使一个磁盘文件与存储空间中一个缓冲区相映射,对缓冲区读、写操作就是对文件读、写操作,从而能够不再使用read、write系统调用。...len:须要映射字节数。 prot:对映射存储区保护要求,不能超过open文件时权限。...PROT_READ:映射区可读 PROT_WRITE:映射区可写 PROT_EXEC:映射区可运行 PROT_NONE:映射区不可訪问 flag:影响映射存储区属性。...MAP_SHARED:表示存储操作相当于对该文件write。 MAP_PRIVATE:对映射存储操作导致创建该映射文件一个私有副本。...filedes:指定要被映射文件描写叙述符,映射之前须要先打开该文件。 off:要映射字节在文件里起始偏移量。通常为0。

    2.4K20

    Linux 配置端口映射

    Linux系统中,端口映射通常可以通过iptables命令来实现。以下是一个示例,展示如何将本地102端口映射到远程主机192.168.1.10102端口。...然后,使用以下命令进行端口映射: iptables -t nat -A PREROUTING -p tcp --dport 102 -j DNAT --to-destination 192.168.1.10...此外,确保你了解这些命令影响,并在生产环境中谨慎使用。 测试: 要删除多余iptables规则,你可以按照以下步骤操作: 1. 列出当前规则并显示行号。...找到你想删除规则对应行号后,使用-D(delete)选项来删除它。你需要指定表名(使用-t),链名,以及规则行号。...例如,如果你想删除nat表PREROUTING链中第1条规则,可以使用: br 如果有多条多余规则需要删除,重复上述步骤,每次删除一条。 请注意,每删除一条规则后,剩余规则行号会更新。

    40110

    图解Linux内核(基于6.x):解读Linux内存反向映射之匿名映射

    前言 内存映射中,我们经常讨论是由虚拟内存定位物理内存(也就是folio或者page),实际上在很多场景中(比如内存回收),会涉及反向操作,也就是反向映射。...所谓反向映射,就是给定一个folio(page),将映射PTE(页表项)找出来。接下来我们来详细分析一下它原理吧(本文仅分析匿名映射部分)。...就是映射虚拟地址,page->index实际上是page offset,该page在文件中偏移量,也就是映射是文件第几页,计算代码如下。...这里需要明确一下,从内核角度看,我们以MAP_ANONYMOUS调用mmap等完成映射并不一定是匿名映射。...anon_vma和vma关系并不依赖page,哪怕是vma映射其中一部分page改变映射了,从anon_vma到vma路径并不会变。 单个进程反向映射建立了,如图2所示。

    66710

    委托好处

    1、业务背景 技术为业务而生,技术为解决业务问题而存在,技术脱离业务就变得没有价值,我们在探讨某一个技术带来价值时,都需要有一定业务背景作为前提。...: 假如业务有变动,需要增加一个对马来西亚国家的人打招呼功能,就得在枚举中增加马来西亚枚举类型,在SayHello方法中增加一个对马来西亚类型分支逻辑判断,这种方式导致问题就是任意分支变化都得修改方法...,需要修改地方较多,不利于维护。...: 这种处理方式将逻辑作为参数传递,将不同业务逻辑分离出去,交给调用者传递,保证了现有方法稳定,增加公共逻辑(Console.WriteLine($"{this.StuName }开始打招呼");)...相同东西用一个方法实现,不同各自去写,然后通过委托组合,加方法满足不同场景,如果业务逻辑或者说方法特别复杂,就推荐用这种方式去处理。

    1.7K10

    Linux内存共享映射(mmap和munmap)

    Linux进程间通信也可以使用mmap内存共享映射来实现,mmap作用就是把磁盘文件一部分直接映射到进程内存中,那么进程就可以直接对该内存文件进行操作,mmap也设置了两种机制...如果是私有映射,那么内存中文件是独立,二者进行修改都不会对对方造成影响。...磁盘中文件通过mmap函数来实现映射,然后通过munmap函数取消映射。...我们可以看到函数返回值为void *,那么如果映射成功则会返回映射首地址,如果出错则返回常数MAP_FAILED。...对于第四个参数,MAP_SHARED表示共享映射,MAP_PRIVATE表示私有映射。最后一个参数偏移量表示要从文件哪个地方开始映射,应为4096整数倍。

    8.2K30

    linux内存映射mmap原理分析

    下面,我先解释一下我对映射这个词理解,再区分一下几个容易混淆概念,之后,什么是内存映射就很明朗了。...原理 首先,“映射”这个词,就和数学课上说“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 位置与进程 逻辑地址空间 中一块大小相同区域之间一一对应,如图1中过程1所示...()实现,所以建立内存映射效率很高。...图1.内存映射原理 既然建立内存映射没有进行实际数据拷贝,那么进程又怎么能最终直接通过内存操作访问到硬盘上文件呢?那就要看内存映射之后几个相关过程了。...前面讲过,建立内存映射并没有实际拷贝数据,这时,MMU在地址映射表中是无法找到与ptr相对应物理地址,也就是MMU失败,将产生一个缺页中断,缺页中断中断响应函数会在swap中寻找相对应页面,如果找不到

    4.4K41

    面向接口编程好处-介绍API数据接口好处

    可翻译为界面也可翻译为接口,翻译为接口由来应该是从电器插口而来(未做考证)。通俗说法:接口就是用来连接而开放入口。大致有这些类型接口:硬件接口、用户界面(UI)、软件接口、面向对象接口。   ...应用程序API接口,就是软件系统不同组成部分衔接约定。由于近年来软件规模日益庞大面向接口编程好处,常常需要把复杂系统划分成小组成部分,编程接口设计十分重要。...程序设计实践中,编程接口设计首先要使软件系统职责得到合理划分。   良好接口设计可以降低系统各部分相互依赖,提高组成单元内聚性,降低组成单元间耦合程度,从而提高系统维护性和扩展性。...应用程序接口是一组数量上千、极其复杂函数和副程序,可让程序员做很多任务作面向接口编程好处,譬如“读取文件”、“显示菜单”、“在视窗中显示网页”等等。...98数据致力于打造高质量API,除了自身数据外,来自合作伙伴各类API数据也是经过慎重筛选,接口质量和稳定性比较好,适合对接口质量和稳定性有较高要求开发者。

    1.3K10

    Linux上虚拟网络与真实网络映射

    图 1.物理网络映射问题例子 图 1 为一个网络映射问题例子。...图 5 .虚拟网络 A_V1 上图为虚拟化环境中一种常用网络配置,对比网络 A_V0 有如下变化:不再一一映射网络 A,省去二级 Bridge,省去 VETH 设备。...这样做好处是网络处理任务重新回到了专用网络设备端,同时所有的虚拟机网络流量变对网络设备透明,方便网络管理员使用专用网络设备进行管控,不再与 Host Server 牵扯不清。...此虚拟网络类似地映射了网络 A,但仍然存在广播域混乱问题,原因是虚拟端口没有被分组。 如前文所述,工作在 VEPA 模式 Linux MACVTAP 设备只实现了数据汇聚功能。...Linux BRIDGE-STP-HOWTO,Linux bridge 设备使用说明。

    2.7K100

    高端内存映射之kmap持久内核映射--Linux内存管理(二十)

    1 高端内存与内核映射 尽管vmalloc函数族可用于从高端内存域向内核映射页帧(这些在内核空间中通常是无法直接看到), 但这并不是这些函数实际用途....持久映射用于将高端内存域中非持久页映射到内核中 固定映射是与物理地址空间中固定页关联虚拟地址空间项,但具体关联页帧可以自由选择....它与通过固定公式与物理内存关联直接映射页相反,虚拟固定映射地址与物理内存位置之间关联可以自行定义,关联建立后内核总是会注意到. ?...即内核对于低端内存, 不需要特殊映射机制, 使用直接映射即可以访问普通内存区域, 而对于高端内存区域, 内核可以采用三种不同机制将页框映射到高端内存 : 分别叫做永久内核映射、临时内核映射以及非连续内存分配...该区域用于持久映射. 不同体系结构使用方案是类似的. 永久内核映射允许内核建立高端页框到内核地址空间长期映射

    3.4K10

    Java线程与Linux内核线程映射关系

    Java线程与Linux内核线程映射关系Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。...Java里线程是由JVM来管理,它如何对应到操作系统线程是由JVM实现来确定Linux 2.6上HotSpot使用了NPTL机制,JVM线程跟内核轻量级进程有一一对应关系。...线程调度完全交给了操作系统内核,当然jvm还保留一些策略足以影响到其内部线程调度,举个例子,在linux下,只要一个Thread.run就会调用一个fork产生一个线程。...Java线程在Windows及Linux平台上实现方式,现在看来,是内核线程实现方式。...看图: Java线程与Linux内核线程映射关系 (说明:KLT即内核线程Kernel Thread,是“内核分身”。

    2.2K40

    Linux上虚拟网络与真实网络映射

    图 1.物理网络映射问题例子 图 1 为一个网络映射问题例子。...图 5 .虚拟网络 A_V1 上图为虚拟化环境中一种常用网络配置,对比网络 A_V0 有如下变化:不再一一映射网络 A,省去二级 Bridge,省去 VETH 设备。...这样做好处是网络处理任务重新回到了专用网络设备端,同时所有的虚拟机网络流量变对网络设备透明,方便网络管理员使用专用网络设备进行管控,不再与 Host Server 牵扯不清。...Linux Host 侧扩展技术 为支持新虚拟化网络技术,Linux 引入了新网络设备模型:MACVTAP。MACVTAP 实现基于传统 MACVLAN。...此虚拟网络类似地映射了网络 A,但仍然存在广播域混乱问题,原因是虚拟端口没有被分组。如前文所述,工作在 VEPA 模式 Linux MACVTAP 设备只实现了数据汇聚功能。

    2.2K50

    用Python好处

    用 Python 好处 特性 好处 无须编译连接 加快开发周期 无须类型定义 简洁、灵活 自动内存管理 避免内存管理麻烦 高级数据类型和操作 内置对象加快开发进程 面向对象 代码重用; 能以C...++, Java, COM, and .NET 整合 可C语言扩展 优化, 定制, 利用旧代码, 系统黏合 类, 模块, 异常处理 大规模项目在进行大方面的模块设计 简约优雅语法和设计 可靠, 可维护..., 易学, 更少隐藏bug ,这个是重点 动态装载C模块 简单扩展,二进制码体积更小 动态装载python模块 程序可以在运行中修改 通用对象接口 代码能少限制更灵活 运行时程序构造 为将来预留处理机会...支持常用互联网协议 支持协议 email, FTP, HTTP, CGI, Telnet, 等....一致系统调用 系统无关系统脚本和系统管理 内置和第三方库 大量可用库 真正开源软件 嵌入和分发都是免费

    95620

    使用STL好处

    1)STL 是 C++ 一部分,因此不用额外安装什么,它被内建在你编译器之内。 2)STL 一个重要特点是数据结构和算法分离。...高可重用性:STL中几乎所有的代码都采用了模板类和模版函数方式实现,这相比于传统由函数和类组成库来说提供了更好代码重用机会。关于模板知识,已经给大家介绍了。...高性能:如map可以高效地从十万条记录里面查找出指定记录,因为map是采用红黑树变体实现。(红黑树是平横二叉树一种) 高移植性:如在项目A上用STL编写模块,可以直接移植到项目 B 上。...跨平台:如用 windows Visual Studio 编写代码可以在 Mac OS XCode 上直接编译。...6)了解到 STL 这些好处,我们知道 STL 无疑是最值得 C++ 程序员骄傲一部分。每一个 C++ 程序员都应该好好学习 STL。

    1.7K30

    容器化好处

    我在之前文章 [《使用 Dockerfile 构建生产环境镜像》](https://imlht.com/archives/236/) 提及普通虚拟机部署存在问题:> 为什么有这篇文章,是因为我在真正做容器化改造时候...所以我们可以发现,有以下几点好处:#### 一、环境高度一致性- 容器需要制作镜像文件,描述环境构建过程,也就意味着它可以保证环境高度一致- 无论本地环境或者生产环境,由于 Dockerfile...OOM 崩溃,而容器由于资源隔离,不会互相影响- 合理分配每个容器资源,有利于提高资源利用率,降低资源成本- 通过 Linux Cgroups 技术(Linux Control Group)限制资源上限...;通过 Linux NameSpace 机制修改进程看到外部资源 “视图”#### 三、轻量级- 相比虚拟机,容器启动速度在秒级别- 容器为进程,通过 Linux NameSpace 机制和 unionFS...,使得进程本身看起来好像拥有一个隔离环境和文件系统(实际上还是宿主机一个进程)容器化是未来一大趋势!

    17420
    领券