『阿男的工程世界』*让我们简单聊一下IO(01)*
2017-02-11 00:00
309 查看
『阿男的工程世界』*让我们简单聊一下IO(01)*
在计算机的世界里,可能最复杂的不是计算,而是
CPU并不是纯计算单元,它要和内存打交道,要和各种外部设备打交道。这些外部的硬件,基本上没有在时钟频率,也就是速度上能跟得上CPU的。
此外,CPU很忙,不但要负责运算,还得负责处理各个外部设备发过来的信号,通过这些信号,去执行相关的
所有这些实际的问题,带来了硬件设计方面的复杂,和IO设计的复杂,当然还有操作系统的复杂。所有的设计都是平衡的结果,而并没有所谓完美的解决方案。
阿男有时候在想,如果不系统学习操作系统和CPU架构,以及引申出来的硬件系统组成,能真正把编程学好吗?阿男自己觉得是不行的,必须要系统全面地学习好基础知识,才能够对写代码这件事情有深入了解。
而且除非你只做不需要考虑任何和实际的操作系统本身打交道的工作,那么一定会接触到硬件接口层面的。
拿
开篇要求你的预备知识:
包括:
当你的程序需要用到
在计算机的世界里,可能最复杂的不是计算,而是
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的时候,就是你要学习操作系统和硬件架构的时候。考虑这一块的时候,我们可以想想在设计上面有什么要考虑的。
相关文章推荐
- 『阿男的工程世界』*让我们简单聊一下IO(2)*
- 『阿男的工程世界』*让我们简单聊一下IO(3)*
- 『阿男的工程世界』*让我们简单聊一下IO(4)*
- 好久没更新博客了,今天给大家分享一下Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layou
- 复杂的世界,我们简单地活着
- 从一个简单的示例,我们开始进入Mybatis的世界!
- C语言三字棋游戏先简单介绍一下三子棋的规则,方便我们接下来的编程和理解。规则如下: 在九宫格棋盘上,只要将自己的三个棋子走成一条线(横、竖、对角线),对方就算输了。
- 简单的,独立却互联的东西 【思考一下我们想看什么网站,他们要做什么网站】
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第三篇谈谈装备
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第二篇谈谈任务
- java基础讲解01-----简单了解一下java
- 『阿男的工程世界』*03 POSIX AIO vs. Native AIO*
- 简单点儿、简单点儿、再简单点儿,其实世界可以不是我们想象的那么复杂
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第一篇谈谈交易
- iOS个人整理01-创建UI工程及UIView简单使用
- HDU 6113 度度熊的01世界(简单dfs)
- HDU 6113 度度熊的01世界【2017"百度之星"】【简单搜索判断联通块】
- 创建一个Storyboard工程 storyboard是在ios5中引入的新控件,能够更加清晰、简单的整合多个ViewController的关系,下面主要介绍一下怎么初建一个storyboard的工程
- kindeditor本身支持上传flash功能,但是我们经常需要上传一些flv、mp4或则其它格式的视频。 其实具体的播放功能是通过jwplayer实现的。我只对kindeditor简单的修改了一下