Hi,我是CPU一号车间的阿Q,有段日子没见面了。
还记得上回说到咱们厂里用上了DMA技术(太慢不能忍!CPU又拿硬盘和网卡开刀了!)之后,我们总算解放了,再也不用奔波于网卡、硬盘与内存之间搬运数据了。
前段时间,我到二号车间虎子那里去串门,发现他正忙的满头大汗。
“老哥,你这是接到什么任务了?看把你给你忙的”
虎子一看我过来,擦了擦头上的汗说到:“我这是在搬运数据啊,刚刚搬完一批,累死我了”
我有些疑惑:“咱们现在不是有DMA技术了吗,找外包DMA控制器搬运啊,你干嘛还亲自上阵?”
“DMA是用于I/O外部设备与内存之间搬运数据,我现在的任务是内存之间的复制拷贝工作,这DMAC也帮不上什么忙啊,还不得我亲自动手复制。”
我瘪了瘪嘴,“也是,但愿我不要接到这种任务”
“先不跟你聊了,又有活要干了”,虎子屁股还没坐热,又起身去忙了,我也起身准备回去。
“我靠!怎么又要拷贝这批数据!”,我刚走两步,就听到虎子的吐槽。
我回过头去问到:“咋了这是?”
“我刚才才把这份数据从内核地址空间往用户态地址空间拷贝了一次,这还没喘口气,又让我再搬一次从用户态再搬回内核地址空间,太折腾我了吧!”
我拍了拍他的肩膀说到:“嗨,这没办法,咱们就是打工的,哪轮得到咱们挑挑拣拣啊,加油吧!”
我一边给他打气,一边暗自祈祷别给我安排这种活,又累有没有技术含量。
天有不测风云,回到一号车间没多久,我也摊上这种事了。老话说得好,真是怕什么来什么。
一开始我还能忍着,时间一久我就抑制不住心里的不满了,还真是落在自己身上才知道痛。数据的四次拷贝
第二天,我约上虎子去找操作系统内存管理部门反应这事。
内存管理部门居然踢皮球,说这事不归他们管,让我们找I/O部门,没办法,我们又来到I/O部门反应这事。
I/O部门的人听完我们的抱怨,也很无奈:“两位,实在不是我们故意戏耍你们。之前让你们两次搬运数据实在没有办法,这是上边的应用程序要这样写的。他们要把硬盘上的文件读取出来,然后再通过网卡发送出去。这一读一写的不就要搬两次吗?”File.read(file, buf, len);Socket.send(socket, buf, len);