深入浅出IO程序设计—序

来源:互联网 发布:mac登陆设置单用户 编辑:程序博客网 时间:2024/06/05 17:52

作为一个程序员,除了让你的程序实现业务逻辑尽量不出BUG外,你的职责是让的程序尽量跑的够快。也许有人会发问,现在CPU每秒处理速率至少是上亿次以上,还有必要考虑这种问题吗?很不幸的告诉你,很有必要。现在的程序日益复杂已经不是简单的做几次加减法运算就可以搞定所有的业务逻辑(乘法和除法是通过位移操作来实现的),你的系统有无数复杂的状态和记录需要寄存到某个地方,不管是程序的运行期还是程序结束之后的序列化存储都需要。
下面我们来看一下这些状态或者数据可以存储的地方:
cpu的L1,L2,L3 cache(速度快,缺点是需要带电存储)
内存(速度快,缺点是需要带电存储)
磁盘(可以存储大容量数据,缺点是速度与前面几种存储相差好几个数量级)
通过网络连接的外部存储系统(oracle,mysql,memcached等)
他们的访问速度: L1 > L2 > memory > disk or network
对于很多系统而言,大多数时候它的业务逻辑实现是对数据的提取并且进行少量cpu计算最后展示结果。这个特点在互联网的应用上特别明显。
由于这个特点,大多数的系统其实cpu的利用率是非常低的,系统处理的大多数时间都花在了io等待的过程中,造成CPU空转,严重浪费CPU资源。
本系列文章旨在分析现在计算机系统运行的特点和实现原理,一步步阐述如何尽量的利用CPU资源,让你的程序高效运行。所有文章的完成可能需要一段时间,中间的实现主要会以C和JAVA程序为例,本人能力有限,希望大家多多批评指正。

 

下面是一个粗略的大纲:

1.操作系统与IO设备

2.LINUX系统常见IO模型

3.基于阻塞的IO系统实现与测试

4.基于非阻塞的IO系统实现与测试

5.基于信号通知的IO系统实现与测试

6.基于异步调用的IO系统实现与测试

7.基于不同IO模型的TCP/IP服务器实现与测试

8.JAVA IO的实现分析与测试

9.JAVA NIO的实现分析与测试

10.常见服务器程序主程序IO部分分析与测试

...

0 0
原创粉丝点击