计算机组成原理,( 二 )


计算机发展到这种程度,早就已经有很多的机构和厂商介入其中,试图从中渔利 。他们当然不会求着计算机标准委员会和主板生产厂商去做所谓的主板改革,而是编写自己的程序——操作系统,来解决这些所有的问题 。
而操作系统问世之后,一方面接管了主板对于系统资源的管理,加入了自己的中间层——驱动程序,另一方面又充分发挥了人机交互的接口——gui界面,成为了计算机必不可少的组成部分 。
操作系统通过bios引导,即作为应用程序开始运行 。我们知道程序的本质上就是在cpu上运行种种指令,比如操作系统需要把硬盘上的模块放入内存,实际上就是运行了一系列复杂的cpu指令,cpu指令通过主板bus(实际上就是传递指令的电路)发送指令给硬盘(比如从哪个扇区偏移多少读多少数据),硬盘再通过芯片组转动磁头,把数据读到缓存中,完成后给cpu发送一个信号(即中断),cpu收到这个信号,就在寄存器中寻址该信号对应的地址(即我们说的中断向量表),运行该地址中的指令,发现该指令是发送拷贝指令给主板芯片组,主板就会在cpu的指导下不断的发送信号,告诉硬盘缓存放电,再把接收的电信号存到指定的内存位置去,如此反复,直到完成cpu的一系列指令为止 。
操作系统说白了,就是这样通过种种cpu指令,实现自身的所有功能 。
当然这些指令也不是一条条写进去的,而是通过编程语言完成人类较容易识别的逻辑,然后再通过编译器把这些逻辑翻译成cpu指令,这就涉及编译原理的东西了 。
既然操作系统对硬件的访问都是通过cpu指令来完成的,那为什么大家都感觉是操作掌管了硬件呢?这就涉及操作系统最本质的功能之一:对系统资源的管控了 。
我们运行的所有程序,实际上都是操作系统帮我们运行的 。操作系统背后进行了很多的工作,如虚拟地址空间的分配,cpu分时调度,硬件中断信号的响应等 。这样对于硬件资源的访问,也是通过操作系统安排的 。比如操作系统会通过把短时间内硬盘读写合并成顺序的方式,以提高磁头的利用率,降低磁头转向的时间 。再比如对内存地址的访问也是由操作系统管控的,某个程序中的内存地址具体落到内存条的哪个位置,还是硬盘中的虚拟内存,就看操作系统的心情了 。
至此,操作系统和硬件的交互也介绍的差不多了,更详细的东西建议参考操作系统相关的书籍吧,比如《深入理解计算机系统》,《linux内核设计与实现》,《unix环境高级编程》之类的 。
数据结构
数据结构的作用,就是为了提高硬件利用率 。
比如操作系统需要查找用户应用程序"office"在硬盘的哪个位置,盲目的搜索一遍硬盘肯定是低效的,这时候搞个b+树作为索引,搜索office这个单词就很快,然后就能很快的定位office这个应用程序的文件信息,再找到文件信息中对应的磁盘位置了 。
【计算机组成原理,】数据结构的东西找本《算法导论》,《数据结构与算法分析》之类的看吧 。
计算机网络
计算机网络分为3块:
1.硬件
网卡,网线,交换机这些,用来处理数据的 。
2.协议
数据在网络中通信如何组织?如何识别?如何保证数据的正确性?
这2块我就不多说了 。
3.操作系统
这就是如何把计算机网络和操作系统结合起来的问题了 。
对于操作系统来说,网卡也是一种硬件资源 。但是网络不单只是一种硬件,而是一种媒体入口 。比如操作系统管理硬盘,当然不是简单的记一下硬盘有多大,然后一切操作都交给硬盘芯片去做,更多的需要组织硬盘的扇区,分区,记录文件和扇区/偏移的关系等等 。

推荐阅读