目录
一、冯诺依曼体系结构
二、操作系统
1. 概念
2. 设计操作系统的目的
3.系统调用和库函数概念
4.总结
三、完结撒❀
一、冯诺依曼体系结构
● 输入设备:包括键盘, 鼠标,扫描仪, 写板等
● 中央处理器(CPU):含有运算器和控制器等
● 输出设备:显示器,打印机等
数据主要是在计算机结构中进行流动的,流动过程中进行数据的加工处理,而数据从一个设备到另一个设备本质上是一种拷贝。
我们来谈谈存储器,我们为什么要有存储器呢?
按照上面所说,既然数据在内存中流动本质上是一种拷贝,那么设备间拷贝的效率即决定了计算机中整体的效率,可能有人会感到疑惑,既然如此那么直接从输入设备经过中央处理器(CPU)的运算到输出设备输出,这样减少了拷贝次数其效率不是应该更快吗?
实际并非如此,因为CUP的运算速度过快,而输入设备和输出设备进行数据处理的速度根本赶不上CUP的速度,这导致在处理一段数据的过程中CUP大部分时间并不是在处理数据,而是在等待数据的传输,这导致数据的处理效率由输入输出设备的效率所决定。
所以为了提高计算机的整体效率,我们加入了存储器,下图为存储金字塔模型图:
越靠上越接近CUP,处理数据的效率越快,造价也越昂贵。
加入了存储器我们就可以让输入设备提前往存储器中进行数据的输入储存供CUP处理,而输出设备也会接连不断的处理数据,大大提高了运行效率。
● 这里的存储器指的是内存
● 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
● 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
● 一句话,所有设备都只能直接和内存打交道。
假设发送一个“你好”的消息数据流动过程如下:
网络并不是这里讲的重点,这里就不过多进行阐述。
二、操作系统
上面所谈的冯诺依曼体系为硬件方面的知识,操作系统属于软件方面的知识,之所以先讲一下硬件方面的知识是因为操作系统设计的目的之一是进行软硬件交互,管理所有的软硬件资源的一款软件
1. 概念
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件
● 内核(进程管理,内存管理,文件管理,驱动管理)● 其他程序(例如函数库, shell 程序等等)
2. 设计操作系统的目的
● 与硬件交互,管理所有的软硬件资源● 为用户程序(应用程序,各种文件夹)提供一个良好(稳定,安全,高效)的执行环境
那么操作系统是如何对硬件进行交互的呢?
正如上图所示,操作系统与底层硬件之间还夹有一层驱动程序,该驱动程序是由生产厂商进行配置的,其目的就是实现操作系统与硬件之间的交互,并且每一个硬件都有对应的一个驱动程序,那么操作系统又是如何管理这么多驱动程序的呢?
在操作系统中一般是定义结构体,先对每一个驱动程序进行描述(类型,厂商,状态等等),再使用链表进行连接,那么对每一个硬件驱动的管理就变成了对每一个链表的增删查改操作。
所以,对于C++这种面向对象的开发模式,对于其对象的管控精髓就是:先描述,再组织
操作系统在管理好底层硬件的同时,也要向上层提供良好(稳定,高效,安全)的运行环境
用户是不能直接对底层硬件或者驱动程序进行操作的,必须通过操作系统进行访问,但是对于操作系统中的数据,用户是不能直接进行访问的,所以操作系统对于用户提供了许多系统调用接口,所以作为用户,我们都是要调用操作系统所设置的系统调用接口通过操作系统进行对外设的操作。
而这些设置的系统调用接口一般都会封装在函数库当中,比如:C,C++标准库,在C语言中我们平常所用的printf或者scanf函数,是来自stdio.h头文件当中,一个是向显示器上打印数据(外设),另一个是向显示器上输入数据,两个都对外设进行了使用,所以用户直接调用函数库中的函数接口,就可以完成对外设的访问。
3.系统调用和库函数概念
● 在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。● 系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
4.总结
1. 先描述,用 struct 结构体2. 再组织,用链表或其他高效的数据结构
三、完结撒❀
如果以上内容对你有帮助不妨点赞支持一下,以后还会分享更多编程知识,我们一起进步。
最后我想讲的是,据说点赞的都能找到漂亮女朋友❤