目录
一:冯诺依曼体系结构
1.五大组件
2.存储器存在的意义
3.几个问题
二:操作系统
接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧
一:冯诺依曼体系结构
我们当代的计算机的基本构成都是由冯诺依曼体系结构来进行构成计算机的基本单元,所以计算机就是由一个个的硬件组成的
1.五大组件
1.存储器:具体指的是内存
2.输入设备:指鼠标,键盘,摄像头,话筒,磁盘,网卡等
3.输出设备:指显示器,播放器硬件,磁盘,网卡等
4.运算器:对我们的数据进行计算任务(算术运算,逻辑运算)
5.控制器:对我们的计算硬件流程进行一定的控制
输入设备和输出设备共同组成外部设备(外设),控制器和运算器组成cpu
对于五大组件,每个都是一个独立的个体,因此对于计算机来说每个硬件单元都必须用线联系起来
对于这里的线就是总线,分为系统总线(cpu与内存之间相互交互的线)和IO总线(外设与内存之间相互交互的线)
2.存储器存在的意义
1.对于在冯诺依曼体系结构中的数据的流向
数据先从输入设备加载到存储器中,,然后cpu从存储器中读取数据,经过cpu计算过后,再将数据再次写入存储器中,最后将数据从存储器刷新到输出设备
2.对于上述的过程,可能初识觉得过于复杂了,想直接将数据从输入设备交到cpu中去执行计算,再将计算后的数据直接交到输出设备,我们想如果直接这样的话,岂不会简单很多,省去存储器这一中间介质的转换,但事实上不会这样做的,这是因为外设与cpu的存储速度差距非常大,下面是计算机的存储体系结构
这张图可以看出存储是分级的,而对于cpu的存储速度是纳秒级别的,内存是微秒级别的,外设则是毫秒级别的
所以根据木桶原理,如果cpu直接与外设相连的话,计算机整体的存储效率就会以外设为主,这势必会使计算机整体的存储速度和效率变得低下
所以引入存储器去适配cpu与外设之间的存储速度差,这是计算机整体的存储效率就以存储器为主,比上述过程存储速度和效率会提升很多
但这时我们也会想,有存储器的参与,但相互之间的存储速度和效率差仍然很大,并且是串联的形式,似乎并没有快多少,但其实不然,操作系统会将所有的数据先缓存到对应的内存中,等cpu执行完上一轮计算后,会直接从内存中读取数据进行计算,在cpu读取计算数据的过程中,操作系统会再次预先加载其他的数据,这样计算机整体的存储速度和效率是有很大提升的
3.几个问题
1.对于一个程序在执行执行之前,必须要先加载到内存当中运行,这是为什么?
这是因为在程序中会有大量的数据要在cpu中进行计算,而cpu只会从内存中读取数据,所以程序必须先加载到内存当中,这也是冯诺依曼体系结构所规定的
2.对于前面写的进度条,默认显示的数据,是可能会缓存起来的,那么在哪缓存呢?
当没有强制刷新或者'\n'时,这是数据就会缓存到存储器当中,所以存储器就是一个硬件级别的缓存空间,并且在冯诺依曼体系结构中是处于核心地位的
对于现实中的每一台设备都可以看作是一个冯诺依曼体系结构
二:操作系统
1.操作系统是一款做管理的软件,管理的是相应的硬件和软件
2.概念:任何计算机系统都包含一个基本的程序集合,称为操作系统,广义的操作系统是包括内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(例如函数库,shell外壳等),侠义上的操作系统主要指内核
3.设计操作系统的目的
操作系统会帮助用户管理好下面的软硬件资源,并且为用户提供一个良好(安全,稳定,高效)的运行环境,总结起来就是操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的运行环境(目的)
4.计算机的层状体系结构
对于底层硬件是以冯诺依曼体系结构为基础,把 硬件之间互相用总线连接起来的
所有的硬件要被软件访问的话,就得有它所匹配的驱动程序的参与,如果没有的话,则访问不了
用户是不能直接访问硬件的,而是要经过操作系统来完成访问硬件的操作
在操作系统里面会有各种的数据,可是操作系统不相信任何用户,所以用户是不能直接访问操作系统内部的数据的
于是操作系统为了保证自己的数据安全,也为了保证给用户提供服务,操作系统是以接口的方式给用户提供调用的入口,来获取操作系统内部的数据。 对于这里的接口是用c来实现的,由操作系统来提供的自己内部的函数调用
所以所有访问操作系统的行为,都只能通过系统调用来完成
5.关于操作系统是如何做管理的
首先从生活来说管理者和被管理者是不需要见面的,就像员工与老板是不需要见面的,那么在不见面的情况下,管理者是如何做管理的呢? 其实管理者只要得到被管理者的管理信息,就可以在未来进行管理决策---------------管理的本质就是通过对数据的管理,达到对人的管理
那么既然管理者与被管理者是不见面的,那么管理者的管理信息是怎么得到的呢------通过执行者
比如在公司当中员工人数是庞大的,当要管理员工就要对员工的数据进行统计整理,一般的会整理为excel表格,在表格当中填入员工的相关数据(如姓名,年龄,入职时间,工资卡账号,所属部门,工号等),当要查询某个员工的数据时,就得采用一个个遍历的方式来查找
但这样的话对于管理者去管理查询数据的话,仍是很大的工作量,因此可以采用c语言结构的方式,将相关数据用结构体struct描述起来,将每个员工定义为一个struct结构体对象并用自己的数据进行初始化,但每个员工都是一个独立的结构体对象,因此每个结构体对象当中应该还包括struct people* next的结构体指针,将每个结构体对象连接起来,形成一张员工的单链表,这就叫建模组织的过程 ------------这种方法就叫做先描述再组织
因此对于管理者来说,只要管理好这张员工链表就可以,将对于员工的管理工作转换为对这张单链表的增删改查
所以在操作系统中,管理任何对象的操作都可以转化为对某种数据结构的增删改查
对于在计算机层状体系当中,操作系统和硬件并不直接见面,只需要操作系统能获取到硬件的状态数据就能够进行管理的操作,但操作系统系统是不能直接获取硬件的数据的,而是通过由驱动程序来获取硬件的数据,再从驱动程序交到操作系统当中
详细的来说就是,操作系统要管理不同的设备,包括内存,进程,文件和驱动,如操作系统要对硬件做管理,其实在操作系统内部就需要描述这一个个的硬件设备,对于每个硬件设备都使用同样的struct结构体来描述,不同的设备填上不同的属性值,然后给这个设备构建出相应的结构体对象,把每个构建的结构体对象用一种数据结构管理起来,当操作系统要检测某个设备的状态,做出相应的操作,就转换为在操作系统内部对特定设备所维护的数据结构的增删改查
5.计算机管理硬件
先用struct结构体描述起来,再用链表或者其他高效的数据结构组织起来
6.系统调用和库函数
在开发角度。操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,就叫做系统调用
系统调用在使用上,功能比较基础,对用户的要求也比较高,所以有些开发者对部分系统调用进行了部分的封装,从而形成了库,有了库,就很有利于更上层用户或开发者进行开发
所以库函数和系统调用属于上下层的调用和被调用的关系
7.总结来说,在操作系统内部对被管理对象进行建模,形成对应的某种数据结构,对对象的管理就转化为对某种数据结构的增删改查