冯诺依曼结构
我们的计算机,以及服务器,还有我我们日常使用的洗衣机都遵循冯诺依曼体结构。
以我们日常使用qq聊天时举例,冯诺依曼体结构可以这样画
截至目前,我们所认识的计算机,都是有一个个的硬件组件组成
输入单元:包括键盘, 鼠标,扫描仪, 写板等
中央处理器(CPU):含有运算器和控制器等
输出单元:显示器,打印机等
关于冯诺依曼,必须强调几点:
这里的存储器指的是内存
不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
一句话,所有设备都只能直接和内存打交道。
所以我们再理解一个概念,所有的程序底层都是二进制文件,当我们想要运行这个程序时,冯诺伊曼体结构就规定了我们必须将文件加载到内存当中,而文件执行代码以及数据分析时,这才是一个运行的程序。
简单来说:存在磁盘上的都叫做文件,而当文件被执行时就变成了程序。
而为什么要选择加载到内存呢?
这样设计计机时非常影响cpu的发挥,就好比你的小组交小组作业内总有一两个老油条拖慢速度。所以我们要在这中间引入内存。就是冯诺依曼体结构。
但是那不是还是要和输入输出设备打交道嘛。我们首先要理解内存相比这些设备来比是非常快的,而内存是和cpu打交道的这就这就保证了cpu的速度,而内存还有很大的存储空间,可以通过软件等其他方法先加载到内存中间接与cpu打交道,而这时的运行速度就不取决于输入输出设备了,而是取决于内存了。就像你给老师打小报告,间接让你们组的效率提高了。
为了让更多的普通人能用得起计算机所以就选择了最具有性价比的内存。可以说冯诺依曼太伟大了。
操作系统:Operator System(os)
包括:1.内核(进程管理,内存管理,文件管理,驱动管理)
2.其他程序(例如函数库,shell程序等等)
可见我们的操作系统就是用来管理这些底层的东西。在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
如何理解 "管理"
1.描述被管理对象
2.组织被管理对象
以进程来说,先描述操作系统其实就是将进程一个一个描述成对象,再用各种算法他再内存中稳定的跑起来,这个过程就叫作再组织。
这就不难理解为什么主流的语言都是面向对象的如c++,面向对象我们就可以很好的对对象进行描述,再通过各种标准库进行组织。
从这张图我们就可以很好的知道我们为什么要有操作系统了?
1.对上提供良好的服务
2.对下提供稳定的,高效的,安全的工作。
怎么对系统进行操作呢,系统调用充当了这个就角色。
系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。就类似于api这种东西。