博主自己进行到了进程中的学习。
进程算是linux学习中内容比较多的一个部分。
所以估计会多写几篇博客当作进程的一个系列
这里先从计算机最基础的软件和硬件开始讲起
讲到计算机的硬件,现在的计算机都是建立在冯诺依曼结构的基础上建立的。
所以我们需要来了解一下什么是冯诺依曼结构
这里的分别对应:
存储器:内存
输入设备:键盘,摄像头,磁盘,网卡等
输出设备: 输出设备:显示器,播放器
有的设备既可以输入又可以输出
这两个都是cpu的组成部分:
运算器:进行计算任务
控制器:对计算过程进行一定的控制
上面的各个组成部分全都是独立的硬件个体
所以它们必须同过媒介来连接起来
而媒介就是线:
1.总线 2.io总线
从这个图片上面我们能得到一个信息:
从上到下容量越大速度越慢
同时我们的能发现:
上面从属于cpu的部分和下面从属于硬盘的部分中间:
有一个内存部分
这里就能体现了内存的不一般的地位,这里让我们看一下冯诺依曼结构
这里能看到存储器处于中间的媒介地位。
这里我们就要引入木桶原理:
相比大家都知道木桶原理,所以不解释了
因为cpu和输出还有输入设备差距过大。
所以引入了一个速度相对于两者都不怎么大的内存来进行调度。
尽量防止cpu和外存的速度差距过大,从而产生大量的效率浪费
这里的输入设备就用硬盘来举例把。
我们知道,硬盘和cpu的速度差距很大。
那差距到底有多大。
这里我们能很明显的感受到cpu计算速度和硬盘的读写速度差距巨大。
这个时候如果cpu想要对硬盘中的数据进行计算,可能等硬盘读取完的时间,cpu的温度早就转凉了。
所以内存这个处于两者速度之间的角色就发挥了重要作用。
硬盘先把数据读取到内存,然后cpu可以计算内存中的数据。
同时还可以进行并行执行,在cpu计算其他数据的时候,内存还可以从硬盘中进行读取数据。
这样可以解除了cpu与外盘的数据的交互。防止效率的浪费,可以让cpu更加专注于数据的计算当中。
输出设备和cpu还有内存也是和上面同理,这里就就略了。
同样也是解除了cpu与输出设备的数据交互,提高cpu的输出效率。
(不代表控制器和输入输出设备失去联系,数据虽然没有联系,但是信号处理方面有联系)
所以内存在冯诺依曼结构的计算机中不光是媒介,更可以说是核心
为什么我们要先讲硬件,我们了解了冯诺依曼的结构后
我们就可以知道
任何一款软件都是必须先要被内存进行读取后才能运行
因为这是结构规定的。
软件都是建立在硬件上的。
了解了硬件后
那各个硬件要进行统合,或者用户想要把数据输入给硬件,让硬件进行操作
说通俗一点,就是想要计算机硬件给用户进行服务,那该怎么办。
接下来那就是交给了最大的软件——操作系统(os)
操作系统可以说统筹管理了各个硬件,同时给软件提供了环境。
那我们就从管理入手,看看操作系统是如何管理硬件的。
操作系统通过管理好底层的软硬件资源,为【用户】提供一个良好的执行环境
这里用户有各种人群。
难保用户中有那种电脑小白,对计算机系统进行乱搞,而计算机系统对硬件进行管理,但是硬件中存有大量的数据或功能。
那可以想象如果用户乱来,后果将不堪设想
这里我们能看到用户操作接口的下方,有一个系统调用接口
这是因为操作系统为了保证自己的数据安全,也为了保证给用户提供服务,选择了不相信任何用户
但同时要给用户服务,所以操作系统以接口(函数)的方式给用户提供调用操作系统的入口,来获取系统内部数据
用封装的接口的话,就可以有效的防止出现用户操作不当而丢失数据或者影响操作系统的情况了
操作系统基层是用C语言实现的,系统通过自己写的调用接口,去执行调用操作系统的操作,所有访问操作系统的行为,都只能通过系统调用完成
调用系统的的各个接口称为:system call
然后通过接口调用操作系统对操作系统进行控制
操作系统通过对应的驱动程序来控制硬件
从而实现了对硬件的操作。