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

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

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

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

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

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

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

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

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

输入图片说明

开篇要求你的预备知识:

输入图片说明

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

当你的程序需要用到IO的时候,就是你要学习操作系统和硬件架构的时候。考虑这一块的时候,我们可以想想在设计上面有什么要考虑的。

转载于:https://my.oschina.net/u/3195023/blog/836071

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值