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