作者: 华丞臧.
专栏:【LINUX】
各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞+收藏+关注
)。如果有错误的地方,欢迎在评论区指出。
推荐一款刷题网站 LeetCode刷题网站
我们常见的计算机,如笔记本、台式电脑、以及不常见的服务器,大部分都遵守冯诺依曼体系。
那么什么是冯诺依曼体系呢?如下图:
截至目前,我们所认识的计算机,都是一个个的硬件组成的:
关于上面图中的冯诺依曼结构,有几点需要注意:
运算速度:cpu的运算速度 > 寄存器的速度 > L1~L3Cache > 内存 > 外设 > 光盘磁带。
因此相对于cpu来说磁盘的速度是非常低的,整个计算机性能由效率最低的那一块决定;从数据角度,外设几乎不和CPU交互,直接和内存交互,CPU也同样如此只和内存交互。引入存储器,当我们需要进行数据计算时,系统会预先将数据加载到存储器中,然后CPU再从存储器中读取,这样就能让计算机的性能和效率以存储器为主,提高了整机的性能和效率。
造价:寄存器 >> 内存 >> 磁盘(外设)
一个东西要在大众中蔓延直至蔓延全球必须满足有效并且便宜,而存储器能够让我们使用较低的成本,获得较高的性能。
体系结构规定,当我们编写完一个程序并生成可执行文件时,可执行文件一定是存放在磁盘上的,而如果要运行这个程序一定要先将这个文件加载到内存中去;操作系统同样如此,一台电脑开机是需要等待一段时间的,等待的过程就是操作系统预加载到内存的过程,预加载还能让计算机把加载和运行并行起来。
局部性原理:当访问某些数据时,操作系统会将该数据周边的数据一起加载到内存中。
任何计算机系统都包含一个基本的程序集合,称为操作系统(0S)。笼统的理解,操作系统包括一下两点:
- 内核(进程管理、内存管理、文件管理、驱动管理)
- 其他程序(例如函数库、shell程序等)
在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件。
操作系统是一个进行软硬件资源
管理的软件。
管理是日常生活中不可缺少的一部分,一个国家有政府部门管理,一个公司也有自己的管理层,一个学校有校长和老师进行管理;任何有序的地方都离不开管理,那么如何管理呢?
日常生活中可以分为两种人管理者和被管理者,大多数人都是被管理者;通常一个地方(国家、公司、学校)的最高管理者,比如说学校的校长,校长管理学生并不需要面对面的管理,而是通过汇总学生的信息然后根据信息做出决策,因此通过对管理对象数据的管理就可以实现对对象的管理。
对于信息的管理并不简单,当信息的数据量小时,可以直接对信息进行管理;但是当信息量很大时,直接人为地对信息进行管理,无疑是一个巨大工作量的任务;因此需要将数据进行结构化,使用数据结构对信息进行管理。
管理的本质:对数据进行管理。
收集对象的信息首先要描述对象,人们是通过属性来认识世界,换句话说一切事物都可以通过抽取对象的属性,来达到描述对象的目的。 这也告诉我们面向对象语言的诞生是必然的,因为面向对象更符合人们认识世界的方式。
- 内存管理:分配内存空间,保证各作业占用的存储空间不发生矛盾,并使各作业在自己所属存储区中不互相干扰。
- 进程管理:进程调度,解决处理器的调度、 分配和回收等问题。
- 文件管理:文件存储空间的管理、目录管理 、文件操作管理、文件保护等。
- 驱动管理:当用户使用外部设备时,必须提出要求,待操作系统进行统一分配后方可使用。当用户的程序运行到要使用某外设时,由操作系统负责驱动外设。
底层硬件和操作系统并不是直接链接,而是以冯诺依曼体系结构相互链接的;驱动程序一般由硬件制造厂商提供,或是由操作系统相关的模块进行开发(如网卡)。
驱动程序本质上是软件代码,主要作用是计算机系统与硬件设备之间完成数据传送的功能,只有借助驱动程序,两者才能通信并完成特定的功能。 如果一个硬件设备没有驱动程序,只有操作系统是不能发挥特有功能的,也就是说驱动程序是介于操作系统与硬件之间的媒介,实现双向的传达,即将硬件设备本身具有的功能传达给操作系统,同时也将操作系统的标准指令传达给硬件设备,从而实现两者的无缝连接。
计算机管理硬件的方式如下:
- 先描述,使用struct结构体;
- 再组织,用链表或者其他高效的数据结构。