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

高端内存映射之kmap_atomic固定映射--Linux内存管理(二十一)

1 固定映射 1.1 数据结构 linux高端内存中的临时内存区为固定内存区的一部分, 对于固定内存在linux内核中有下面描述 x86 arm arm64 arch/x86/include/asm/fixmap.h...tables. */ FIX_PTE, FIX_PMD, FIX_PUD, FIX_PGD, __end_of_fixed_addresses }; 1.2 固定映射...= FIXADDR_TOP >> PMD_SHIFT); /*得到固定映射区的pmd ,此pmd为虚拟地址转换为物理地址的pmd*/ pmd = fixmap_pmd(FIXADDR_TOP...); /*将bm_pte页表设置为固定映射区开始地址的pmd的第一个页表;*/ pmd_populate_kernel(&init_mm, pmd, bm_pte); pte_offset_fixmap...因此, 内核完全可以”忘掉”kmap_atomic映射, kunmap_atomic也无需做什么实际的事情. 下一个原子映射将自动覆盖前一个映射.

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

    Linux编程】存储映射IO

    存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射,对缓冲区的读、写操作就是对文件的读、写操作,从而能够不再使用read、write系统调用。...len:须要映射的字节数。 prot:对映射存储区的保护要求,不能超过open文件时的权限。...PROT_READ:映射区可读 PROT_WRITE:映射区可写 PROT_EXEC:映射区可运行 PROT_NONE:映射区不可訪问 flag:影响映射存储区的属性。...MAP_PRIVATE:对映射区的存储操作导致创建该映射文件的一个私有副本。 filedes:指定要被映射的文件描写叙述符,映射之前须要先打开该文件。 off:要映射字节在文件里的起始偏移量。...表示存储区中有地址无法映射到文件里。 mmap实际上是将包括文件内容的内核缓冲区映射到应用程序地址空间,然后用memcpy直接进行数据的拷贝。

    2.4K20

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

    所谓反向映射,就是给定一个folio(page),将映射它的PTE(页表项)找出来。接下来我们来详细分析一下它的原理吧(本文仅分析匿名映射部分)。...一、匿名映射的mapping 匿名映射中,mapping可以用来找到anon_vma,anon_vma关联vma,通过folio和vma,就可以得出映射的虚拟地址address,最终由address和vma...这里需要明确一下,从内核的角度看,我们以MAP_ANONYMOUS调用mmap等完成的映射并不一定是匿名映射。...anon_vma和vma的关系并不依赖page,哪怕是vma映射中的其中一部分page改变映射了,从anon_vma到vma的路径并不会变。 单个进程的反向映射建立了,如图2所示。...图2.匿名映射单个进程反向映射示意图 接下来考虑创建子进程的场景。

    65510

    Linux内核笔记之中断映射

    硬中断和虚拟中断号 在Linux 内核笔记之高层中断处理一文中,介绍了ARM gic中断控制器对于硬中断的处理过程。...对于软件工程师而言,我们不需要care是中断哪个中断控制器的第几个中断号, 因此linux kernel提供了一个虚拟中断号的概念。...irq_domain 接下来讨论硬件中断号是如何映射到虚拟中断号的linux kernel提供irq_domain的管理框架, 将hwirq映射到虚拟中断号上。...irq_domain映射类型 线性映射 线性映射保留一张固定的表,通过hwirq number来索引.当hwirq被映射后, 会相应地分配 一个irq_desc, IRQ number就被存在表中。...当hwirqs是固定的而且小于256, 用线性映射更好。它的优势是寻找时间固定,并且irq_descs只在in-use IRQs分配.缺点是表格和hwirq 最大numbers一样大。

    5.1K30

    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

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

    持久映射用于将高端内存域中的非持久页映射到内核中 固定映射是与物理地址空间中的固定页关联的虚拟地址空间项,但具体关联的页帧可以自由选择....它与通过固定公式与物理内存关联的直接映射页相反,虚拟固定映射地址与物理内存位置之间的关联可以自行定义,关联建立后内核总是会注意到的. ?...固定映射区 该区域和4G的顶端只有4k的隔离带,其每个地址项都服务于特定的用途,如ACPI_BASE等。...总之,内核的高端线性地址是为了访问内核固定映射以外的内存资源。进程在使用内存时,触发缺页异常,具体将哪些物理页映射给用户进程是内核考虑的事情. 在用户空间中没有高端内存这个概念....即内核对于低端内存, 不需要特殊的映射机制, 使用直接映射即可以访问普通内存区域, 而对于高端内存区域, 内核可以采用三种不同的机制将页框映射到高端内存 : 分别叫做永久内核映射、临时内核映射以及非连续内存分配

    3.4K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券