首先声明本人非计算机专业,也不玩数码硬件,可以说我下面的内容既不偏向理论也不偏向实际应用。单纯是个外行人对计算机的初步印象,只做个人笔记,当然写在公开领域,自然避免不了外人看到,所以事先声明,以免误导各位。
1)硬件
提到计算机硬件,首先应该说一说开关。可以说简单的分析,计算机内部就是由一个个的开关组成。或者说就是由开关演化而来的。乍一听,可能很难接受,这种简单东西的组合是怎么认识代码,是怎么运行软件的。
我只能说你这种想法是把人的观点强加给计算机而已,它不过是一堆没有感情的芯片电路,就一铁疙瘩,懂什么代码。它不过是按既定的物理规律运行而已。
甚至从我的角度来看即便是为计算机量身定做二进制也是计算机看不懂的东西,计算机所理解的这一切都是人强加给它的。
这就相当于按下开关,通上电灯它亮了,而你把他看作是灯知道了你按下了开关,然后亮了,而且你还在这好奇,这灯它到底是咋知道我按下了开关的?灯知道个什么玩意,其实这不过是看待问题的角度本身强加给了它意义,计算机和灯本质上也并无差别。抛开人强加给它的意义,会更容易来理解计算机。
下面来简析一下计算机的基本结构,此处的计算机不以任何现实机器为依据,单纯是对各种计算机抽象出来的一种通用机器模型。
该机器应由 (1)cpu (2)内存 和 (3)外设 构成,更细致的分:cpu由(1)控制器和**(2)运算器构成,内存既(3)存储器、主存**,外设既**(4)输入设备和(5)输出设备**。
此处仅对输入输出设备仅稍作说明,之后的文章会涉及计算机的核心部分既软件部分。由上面的说明可知计算机除了控制器、运算器、存储器,其它设备均为外设,例如磁盘 显示器 键盘鼠标等。计算机对外设的操作都可以抽象为读写,既输入是读输出是写。而怎么读怎么写可以认为是外设的事,计算机可以把它们看做相同的。比如数据写入磁盘,计算机就是吧10数据写过去,磁盘的控制器把数据转为磁盘上的磁极偏转,而这个转换过程是磁盘自己的事,磁盘自己的硬件和驱动进行控制。显示器的画面显示也不过是计算机向显示器写入数据而已,显示器的控制器(GPU)将数据转为图像,这个过程也是个显示器自己的事,例如最原始的荧光屏靠电子射击屏幕显示画面,而电子的的坐标数据可以通过是cpu写过去。将坐标转为具体的像素点,控制器可以用高中物理带电粒子在磁场中的运动将这个单纯的数据转为在屏幕上的物理位置。
另一方面,外设不能和cpu直接通信,因为外设都是物理量,磁盘是磁、话筒是磁、键盘敲击的动作,这些量cpu是不能直接输入输出的,必须经过传感器等将所有非电量转为电量,之后调制解调,数模转换等一系列操作转为cpu数字电路能直接操作的数电信号。cpu和外设通信都是通过设备控制器作为中介,这些转换操作可以看做是设备控制器完成的,cpu操作设备控制器,设备控制器操作具体的外设。操作不同的外设只是对设备控制器进行不同的操作,这种结构也让cpu对外设的操作可以统一抽象为读写操作。读写的数据可能是想读写入外设的,也可能是控制设备控制器的。
当然不同的外设读写的内容肯定不同,同一种内容对于不同的外设意义也不同,设备控制器怎么去读写也不同,这些由都驱动程序具体来控制。
驱动程序是和硬件直接相关的,属于最接近底层的软件,用于控制外设,个人认为操作系统就可以看做cpu和内存的广义上的驱动,或者更底层的bios看做cpu和内存的驱动,只不过一般的驱动用于驱动设备,操作系统或bios驱动cpu。