您的位置:首页 > 其它

『阿男的工程世界』*让我们简单聊一下IO(01)*

2017-02-11 00:00 309 查看
『阿男的工程世界』*让我们简单聊一下IO(01)*

在计算机的世界里,可能最复杂的不是计算,而是
IO
。为什么这么讲?因为IO意味着和外部世界打交道,这就需要理解和处理外部世界的复杂。

CPU并不是纯计算单元,它要和内存打交道,要和各种外部设备打交道。这些外部的硬件,基本上没有在时钟频率,也就是速度上能跟得上CPU的。

此外,CPU很忙,不但要负责运算,还得负责处理各个外部设备发过来的信号,通过这些信号,去执行相关的
handler


所有这些实际的问题,带来了硬件设计方面的复杂,和IO设计的复杂,当然还有操作系统的复杂。所有的设计都是平衡的结果,而并没有所谓完美的解决方案。

阿男有时候在想,如果不系统学习操作系统和CPU架构,以及引申出来的硬件系统组成,能真正把编程学好吗?阿男自己觉得是不行的,必须要系统全面地学习好基础知识,才能够对写代码这件事情有深入了解。

而且除非你只做不需要考虑任何和实际的操作系统本身打交道的工作,那么一定会接触到硬件接口层面的。

Java
举例吧,阿男手里这本
Java NIO




开篇要求你的预备知识:



包括:
Kernel vs. User Space
Virtual Memory
Paging
Block IO vs. Stream IO
Multiplexed IO
。这些全部是操作系统相关,如果你只会
Java
,想学习
NIO
,那就是废的。

当你的程序需要用到
IO
的时候,就是你要学习操作系统和硬件架构的时候。考虑这一块的时候,我们可以想想在设计上面有什么要考虑的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  阿男的工程世界
相关文章推荐