磁盘 |
您所在的位置:网站首页 › sas接口速率 › 磁盘 |
文章目录
磁盘 - 内存 - 中央处理器缓存用户缓存区 - 内核缓存区零拷贝意义
这些概念比较常用,涉及到物理设备 - 操作系统概念,操作系统概念 - 数据结构的区分。记录一下以供后人取笑。
磁盘 - 内存 - 中央处理器缓存
这些是计算机中比较常用的物理设备。 1,磁盘:可以代表计算机中所用的固态硬盘、机械硬盘,也可以表示某些嵌入式设备中的flash等大容量存取设备。挂载到总线上,被操作系统调度。掉电之后,内容不丢失。 2,内存:内存条等硬件设备。一般语义下,内存就是速度更快、容量较小的存储设备。内存也挂载到总线上,由操作系统调度。它的工作频率高,访问速度快,更适合搭配中央处理器使用。掉电之后,内容丢失; 3,中央处理器缓存:装机时常说的一级缓存、二级缓存就是这个东西;物理上来说,这个缓存就是cpu的一部分,不需要通过总线就可以访问。速度非常快,容量非常小。掉电后,内容丢失。为了简化某些问题的讨论,将处理器缓存和内存等同起来。 4,寄存器:cpu的一部分。如果将cpu视为一个状态机,那么所有寄存器中的值就组成了一个又一个的状态。寄存器不能担当“存储文件”的任务,和缓存、内存不同。掉电后内容丢失。 用户缓存区 - 内核缓存区这两个概念属于操作系统 - 编程中的。我们结合上面的物理结构来说。 首先需要清楚物理内存 - 虚拟内存的联系。
1,用户缓存区:以c语言为例,就是临时变量或者malloc出来的变量。这里的内容存在内存中,可能被交换到磁盘中。 2,内核缓存区:同样是存在内存中的。但是是由操作系统内核控制的,一般情况下用户无法访问这部分内存。 零拷贝零拷贝是在干嘛?是为了满足两个需求 1,减少内核态和用户态的切换(操作系统进程和用户进程间的切换); 2,减少拷贝的次数(拷贝一定是由处理器完成的,这一操作节省了cpu操作); 没有零拷贝时,read流程是:(操作)系统将设备d1中的数据拷贝进内核缓存k1(操作系统控制的内存区域)中,再由内核缓存拷贝到用户缓存u1(用户控制的内存)中; write流程是:系统将u1的内容拷贝到内核缓存k2中,再将k2中的内容拷贝到设备d2中。 采用零拷贝则是:调用特定接口,将d1中的数据拷贝到k1中,再将k1的内容拷贝到d2中。这样,原来原来的4次拷贝变成2次,4次内核-用户态的转换也变成2次(用户态调用系统调用接口有调用 - 返回必然有两次状态切换) 意义1,理清楚计算机中各个硬件设备,在嵌入式开发中很重要,不至于出现沟通问题。 2,理解缓冲区的知识,可以帮助立即free输出和 /proc/pid/status输出的含义。 3,零拷贝为我们在两个设备间交换数据提供了优化思路。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |