nio 学习笔记

书很多,不留下点什么,看后就忘了,

1.缓存区操作

   缓存区是所有io 的基础,所谓输入输出无非是把数据移出或移进缓存区。

  进程执行io操作,就是向系统发送请求,让它要么把缓存区的数据排干,要么数据把缓存区读满。

例子:数据从外部磁盘移向运行中的进程内存的移动过程,进程使用read()进行系统调用,要求缓存区被填满,内核即向磁盘控制硬件发出命令,要求其从磁盘读取数据,磁盘控制器把数据直接写入内核的缓存区,这一步通过DMA完成,无需借助cpu,一旦磁盘控制器把缓存区写满,内核即把数据从内核空间的临时缓存区拷贝到进程执行read方法调用时指定的缓存区。

2.虚拟内存

所有的现在操作系统都使用虚拟内存,意思是使用虚假地址代替物理内存地址

好处是 a.一个以上的虚拟地址可以同时指向相同的物理内存。

          b. 虚拟内存大于实际物理内存(DMA:直接内存存取)

设备控制器 不能通过DMA 直接存储到用户空间,但是使用通过上面提到第一项,可以达到这样的效果,内核地址与虚拟地址都指向映射到同一物理路径


这样之后,省去了内核空间与用户空间的来回拷贝,但是用前提条件下,内核与用户缓存区必须使用相同的也对齐,缓存区大小必须是磁盘控器块大小的倍数,操作系统把内存划分成页,即固定字节数组。

MMU(Memory Management Unit)即内存管理单元,是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多用户多进程操作系统。

3.文件io

文件存储在扇区,扇区可以当做数组被访问,

文件系统把一连串大小一致的数据组织到一起,有些块存储元信息,如目录索引


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值