目录
1.冯诺依曼体系结构
认识冯诺依曼体系结构
冯诺依曼体系中为什么要有存储器
2.操作系统
操作系统如何管理硬件
操作系统如何管理软件
1.冯诺依曼体系结构
认识冯诺依曼体系结构
所有的计算机都是由各种各样的硬件组成的,这些硬件可以概括为输入设备、输出设备、存储器、运算器、控制器:
- 常见的输入设备有:键盘、鼠标、网卡等等……
- 常见的输出设备有:显示器、声卡、网卡的等等……
- 存储器通常指的是 内存。
- 运算器和控制器共同组成了 中央处理器(CPU)。
这么多的硬件,需要根据特定的结构组织在一起,才能够进行数据在不同设备之间的传递,才能够稳定且协调的运行。在历史上,也诞生了许多的计算机体系结构,但是经过岁月的洗礼,最终保留下来的并且最常用的体系结构就是冯诺依曼体系结构。
冯诺依曼体系结构如下所示:
冯诺依曼体系中为什么要有存储器
在冯诺依曼体系结构中,常见的数据流动过程如下:
- 数据经过输入设备输入到存储器中,经过CPU的处理之后,将返回的数据重新写入存储器中,然后存储器中的数据经过输出设备输出。
这时,我们不免疑惑,数据直接从输入设备输入到CPU,经过CPU处理之后通过输出设备输出;这样不是更快吗?
其实并不是这样的,CPU的工作速度是很快的,而输入输出设备的工作速度是很慢的,如果让输入输出设备直接和CPU进行数据之间的传递,必然会导致CPU大部分时间都在等待,这也就算是对CPU的一种浪费。
这时,计算机科学家通过引入存储器解决了这个问题,存储器提供了预先加载的功能,CPU从存储器中拿数据,当CPU还在处理数据的时候,输入设备可以向存储器中进行写入;CPU处理好的数据不直接给输出设备,而是放在存储器中,CPU在继续自己的工作时,输出设备从存储器中拿数据进行输出;可以看出,存储器的引入缓解了CPU和输入输出设备之间工作速度差距大的问题。从而从整体上提高了计算机处理数据的能力。
因此,在所有使用冯诺依曼体系结构的计算机中,CPU都只能和存储器,也就是内存进行数据的传递,输入输出设备也只能和内存进行数据的传递。因此,程序在运行的时候,都必须先加载到内存。既然程序在运行的时候,都必须先加载到内存,那么第一个被加载到内存的程序是什么呢?就是操作系统。
2.操作系统
操作系统是什么呢?操作系统是一款进行软硬件资源管理的软件。操作系统只有管理好了软硬件资源,才能保证计算机对用户提供良好稳定的运行服务。
软硬件层次结构图:
对于底层的硬件,每个硬件都有自己的驱动程序,操作系统通过调用驱动程序就能驱动底层硬件进行工作;操作系统内部的功能有很多,但是不能被用户直接使用,因为这样是不安全的;因此,操作系统提供系统调用接口给外部,以此来使用操作系统的功能,但是有的系统调用接口比较难用,一些有心的开发者便将系统调用接口进行了封装,形成了库函数、部分指令等等……
操作系统如何管理硬件
操作系统管理硬件的时候,必须要先描述底层硬件,比如这个硬件的名字、状态、功能等等……Linux操作系统是用大量的C语言写的,要想描述硬件只能使用结构体;一台计算机运行起来,必然需要启动多个硬件,将所有描述不同硬件的结构体以特定的数据结构组织起来,就能够实现对底层硬件的管理,我们假设以链表的形式组织起来;
我们可以写出类似于以下的代码描述硬件:
组织起来:
这样,就实现了对硬件的管理工作。
操作系统如何管理软件
首先,我们要明白的是,软件是一个个的程序,计算机运行起来的其实是该程序的可执行文件,要运行一个可执行文件首先要将可执行文件加载到内存中,当该程序的可执行文件加载到内存中之后,就会形成一个进程;所以,计算机对软件的管理其实是对进程的管理。
同理,要管理进程,首先要使用结构体描述进程,我们可以写出类似于下面这样的代码:
- 描述进程的结构体叫做PCB,叫做进程控制块,Linux中的进程控制块就叫做 task_struct。
以链表的形式组织起来:
这样,就能实现对进程的管理了,也就是对软件的管理。