今天系统结构一课讲到了“输入输出系统”一章,又是查询、中断、DMA、通道这些东西,在操作系统、组成原理、微机原理、微机接口技术等课程中我们都或多或少接触过这些概念。当我对照着不同的课本看这些内容时,问题就来了。我被数个自认为是个问题的问题绊住,并为此努力思考试图化解心中的疑惑,但最终发现纠结这些东西的意义并不大。
DMA就不需要CPU吗?
查询和中断每次就只能传输一个字吗?
DMA的几种实现方式,到底有什么区别?
在一个“窃取周期”中,读写的数据量是多少?看外设还是看主存?
磁盘传输速率的计算,是否包含了初始化DMA及后处理等辅助时间?
总线周期、机器周期、CPU周期、存取周期,这些是一回事吗?
…………
貌似找不到明确的答案,但考虑这些问题有什么意义呢?
要知道所学的这些理论都已经做成了软件和硬件的实际产品,也就是说它的每一个细节都已经得到了具体的实现。如果你只是泛泛的了解个表面,何谈对这些东西的设计呢?
话又说回来,你真的有机会或者说有能力去设计改造这些已经相当成熟的东西吗?
要想具体实现它,必须对每个细节了如指掌。但这东西的细节是如此的复杂与繁琐,单靠读这些纸上的理论是远远不够的。
总结一下:
为了更好的利用实践经验,人们会从这些经验中总结各种规律,将这些具体实践进行分类。但具体实践是复杂而变化的,这就决定了这些分类并不准确,或者说这些类别并不是完全独立的子集,它们之间或多或少都有相交的内容。因此不要试图用某条规律去套一切现象,不要陷入思维陷阱。