首页 > 其他分享 >理解DirectByteBuffer

理解DirectByteBuffer

时间:2023-01-30 15:56:35浏览次数:33  
标签:缓存 cache 虚拟地址 理解 内核 DirectByteBuffer page

  

 

在下图中的第四步,内核会调用 iov_iter_copy_from_user_atomic 函数将用户空间缓冲区 DirectByteBuffer 中的待写入数据拷贝到 page cache 中。

但是内核又不能直接进行拷贝,因为此时从 page cache 中取出的缓存页 page 是物理地址,而在内核中是不能够直接操作物理地址的,只能操作虚拟地址。

那怎么办呢?所以就需要使用 kmap_atomic 将缓存页临时映射到内核空间的一段虚拟地址上,这段虚拟地址就位于内核虚拟内存空间中的临时映射区上,然后将用户空间缓存区 DirectByteBuffer 中的待写入数据通过这段映射的虚拟地址拷贝到 page cache 中的相应缓存页中。这时文件的写入操作就已经完成了。

标签:缓存,cache,虚拟地址,理解,内核,DirectByteBuffer,page
From: https://www.cnblogs.com/juniorMa/p/17076232.html

相关文章

  • 装饰者模式和适配器模式的差异理解
    有一个基础类a,装饰者是为了增强a的功能,而适配器则是为了实现a无法实现的功能,将a当做自己的一部分。先将环境转换成a能够发挥功能的环境,然后再使用a的功能,组合起来完成想要......
  • 基尔霍夫定律理解与使用
    在学习基尔霍夫定律之前,需要了解几个基本概念:(1)节点:三条或三条以上支路的汇交点叫节点。如右图中,有两个节点,节点A和节点B。(2)支路:两个结点之间由一个或几个元件首尾相接构成......
  • 随堂笔记1-spring底层原理解析.md
    userServce->无参构造方法->普通对象->依赖注入->初始化前(postStruct)->初始化(initializationBean)->初始化后(aop)->代理对象->bean通过无参构造方法创建普通bean如......
  • 2023我的开工心情, 对销售精神的理解
    我的开工心情:1.喜悦。年后第一个工作日,满满的喜悦感充盈我的心头。艾思软件为我打开了一扇别具一格窥探世界的窗口。我无限喜悦无限感恩。2.展望。新年需要新气象,新气象需......
  • 《深入理解Java虚拟机》第三章读书笔记(一)——垃圾回收算法
    参考书籍《深入理解java虚拟机》周志明著系列文章目录和关于我本文主要介绍垃圾回收理论知识1.jvm哪些区域需要进行垃圾回收虚拟机栈,本地方法栈,程序计数器都是线......
  • 版本空间的理解
    借助于二分类来理解版本空间版本空间(versionspace)是概念学习中与已知数据集一致的所有假设(hypothesis)的子集集合。版本空间学习是机器学习的逻辑方法,特别是二分类(bi......
  • springboot~openfeign开启熔断之后MDC为null的理解
    openfeign开启熔断之后MDC为null,这是有前提的,首先,你的熔断开启后,使用的是线程池的熔断模式,即hystrix.command.default.execution.isolation.strategy=THREAD,或者不写这行,如......
  • 转 [布局概念] 关于CSS-BFC深入理解 认识字就能学
    [布局概念]关于CSS-BFC深入理解barnett_y于 2018-01-2614:51:26 发布351 收藏 4分类专栏: 【HTML5+CSS3点滴知识】 【HTML5+CSS3点滴知识】......
  • 怎么理解java的一次编译,到处执行。
    “所有平台上的JVM向编译器提供相同的编程接口”,接口是对输入和输出的一种规定,就是对数据类型的规定,java的编译器是向JVM提供字节码文件的,也就是说,不管你这个JVM是哪个平台......
  • RBF径向基神经网络理解(2)
    径向基函数(RBF,RadialBasis Function)神经网络是由J.Moody和C.Darken于20世纪80年代末提出的一种神经网络,径向基函数方法在某种程度上利用了多维空间中传统的严格插......