zoukankan      html  css  js  c++  java
  • java普通io(stream)处理文件读写的过程

    场景:使用java的stream,从文件a读取内容,然后写进文件b,整个过程如下图所示(以linux系统为例)

    步骤解析:

    1.用户空间向内核空间发出指令——我要读取文件a

    2.系统切换上下文,从用户空间切到内核空间,内核空间准备向硬盘读取内容

    3.硬盘内容以DMA形式读取进内核缓冲区(tips:DMA——Directory Memory Access 直接内存访问)

    4.系统切换上下文,从内核空间切到用户空间,把内核空间的缓冲区的内容写入用户缓冲区

    5.业务逻辑处理

    6.准备写入b文件,用户空间向内核空间发出指令——我要写文件b,并且把用户缓冲区的内容写入内核缓冲区

    7.系统切换上下文,从用户空间切到内核空间,内核空间准备向硬盘写入内容

    8.写入成功,系统返回

    9.系统切换上下文,从内核空间切到用户空间,内容写入完毕

    可以看到,传统的io操作,从一个文件的读取到写入,需要进行4次数据拷贝,4次的系统上下文切换

  • 相关阅读:
    最大流最小割
    最大权闭合图
    凸包,多边形面积,线段在多边形内的判定。
    模线性方程
    ZOJ Monthly, August 2014
    nenu contest2
    2014 Multi-University Training Contest 10
    Codeforces Round #262 (Div. 2)
    nenu contest
    poj 2299 求逆序数
  • 原文地址:https://www.cnblogs.com/billmiao/p/9872228.html
Copyright © 2011-2022 走看看