我们首先将计算机抽象为一个Computer类,将计算机的硬件组成抽象为Computer类的内部成员,此刻我们还不关心软件(因为软件最终是对硬件的一系列操作,谈软件你就要谈到内存这样的硬件,而且概观上我们首先讲能看得到的硬件),而计算机的硬件组成都有哪些,首先从能看得到的。就拿我眼前这台。
显示屏,键盘,鼠标,电源。
然后是内部,南北桥(I/O总线),cpu(处理器),内存,硬盘
大概现讲这么多。然后我们将我们能够直接控制的硬件声明为public,而其他的声明为private
那么我们得到的伪代码为以下:
class Computer
{
public:
Mouse mouse;
KeyBoard keyboard;
Screen Screen;
Power power;
private:
CPU cpu;
Memory memory;
IObus iobus;
Disk disk;
public:
Computer();
~Computer();
};
然后关注一下public的几个组件为我们提供了怎样的方法。
我们能敲键盘,从而进行输入功能,鼠标与此相同,只是输入的变量不同,并且用处不同。
而操控使用这些输入达到控制目的的是运行在内存中的程序,这些程序被解释成为一些列汇编指令被cpu执行,cpu通过汇编指令能够进行计算和对各个组件的读写操作。
以上说法太过混乱,如果看不明白也不必介怀,我们还会详细的讨论关于cpu,程序,系统等内容在之后的章节。这里我们只需要了解mouse和keyboard为我们提供了input()方法就好或许我们应该为这个方法添加一个参数变量,这是我们能够手动控制的,我们按的每个键,鼠标移动的方向距离最终被解释为一串01通过io总线传递给硬件,递交给程序处理。
这里我们提出一个理解分级的概念,对于一个概念的理解应划分成不同的级别。(我的自创术语)这里我们写一下对于当前已有组件记录下一级的理解
一级理解:
cpu:中央处理器,计算机的直接控制者,相当于计算机的大脑。
内存:存储设备,能够记录一些信息,但一断电内存中的数据就会消失(这里消失说的不好,但我一时没找到合适的词汇)。
硬盘:存储设备,容量大,但读写速度较内存慢。
IO总线(又叫南北桥):所有的设备都连接在io总线上,如果把发送的数据比作快递包裹,那么io总线就相当于快递员。
显示屏:我们能从屏幕中阅读程序的输出结果。
键盘:我们能通过按键盘上的按钮向系统发送数据(我觉得这东西不用讲,倒是可以做关于中断的例子)
鼠标:和键盘一样类似,(啊救命,我也概念模糊了,鼠标是什么啊!?)
然后我们这里直接写下两个我不太想讨论的组件的代码
class Mouse
{
private:
IOSubBus iosubbus;
public:
void input(int i);
};
class KeyBoard
{
private:
IOSubBus iosubbus;
public:
void input(int i);
};
这里我们这两个类都有iossubbus(这个名字是我瞎起的),其实这应该算是io总线的子成员,我将io总线看做是许多线的集合,具体到连接到各个设备的线(这里不讨论无线鼠标之类的设备),就像是鼠标连接usb接口的那长长的一条线(我觉得这个例子举得不好,应该不算io总线吧),组件的一些列输入和输出都通过这根线传输给其他指定的硬件设备。
也就是说这里mouse的成员方法input,使用了IOSubBus的public成员方法,行IO总线发送数据。IO根据配置派送给指定的硬件。