【Linux】冯诺依曼体系和操作系统:
1.冯诺依曼体系结构:
1.1体系概述理清:
我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
🔥我们将冯诺依曼体系结构分为输入设备、输出设备、存储器和CPU
上述部分的常见硬件:
输入设备:键盘、话筒、摄像头、网卡、磁盘
输出设备:显示器、磁盘、网卡、声卡音响
外设一般都会比较慢一些,以磁盘为例
相对于内存,磁盘较慢,但是价格并不贵,三五百块钱就可以买到一块512G的硬盘,贵一点的话可能像磁盘,价格在900 ~ 1200不等,但是它们都有一个优点就是:存储容量大、可以长久保存数据不丢失!
内存还不是最快的,CPU最快
❓那我们为什么还需要内存呢?
因为外设较慢,CPU很快,但是整体的效率以外设的速度为准,这样就不太合适,为了解决这个问题,就出现内存。
💡内存的存在就可以大大缓解外设的效率低的问题,内存的存在可以对数据进行预加载,CPU以后在进行数据计算的时候,根本不需要访问外设,只要访问内存就可以了
1.2内存的重要性:
我们是否可以不要寄存器,让CPU直接和外设链接呢?
对于像【磁盘】这种外围设备来说虽然它有着大容量的内存,但是读写速度却非常慢,机械硬盘读写速度平均60---80M每秒;固态硬盘不同品牌型号之间,平均大约在150---300M每秒
但是对CPU来说,也就我们上面说到过的运算器 + 控制器,它的运算速度读者可以自行去网上看看,那比磁盘不知道要快出多少倍了。那一个写入很慢,一个读入很快,真的可以兼容吗?
大家应该都听过木桶效益,木桶效益的时候,能乘多少水取决于最短的木板,而不是最长的木板,磁盘内存和CPU同样的道理
我们的外设很慢,而CPU非常快,这样就会照成我们计算机的运行速度由外设来决定,CPU的高速运转将没有优势
此时就还是需要使用到冯诺依曼体系结构中的【存储器】,也就是我们俗称的内存
,因为对于内存这个东西,它虽然比CPU来得慢一些,但是却比磁盘快多了,它们三者的速度大概可以像下面这样对比
CPU —— 纳秒(ns) 内存 —— 微秒(us) 外设 —— 毫秒(ms)
我们可以知道CPU和外设差距是非常大的,因此我们需要内存这个东西来进行过渡
因为有了内存的存在,虽然它掉电易失,但还是局部短时间的存储,因此外设可以将数据暂存到内存中,此时,CPU后面想要去处理这些数据的话直接去内存中拿就可以了,无需再与外设进行交互造成不兼容的问题
🔥在数据层面,一般CPU不和外设沟通,直接和内存打交道
❓可执行程序是不是一个文件?为什么我们的程序,必须先被加载到内存中的呢?
💡可执行程序是一个文件。我们的代码编译后,有CPU执行,CPU会向内存索要数据,冯诺依曼体系结构决定的
❓在硬件层面,单机和跨主机之间,数据流是然后流向的?
💡以播放网易云音乐为例,把软件加载到内存,然后CPU执行这个,当我点击播放,在将网络从输入设备加载到内存,然后做一堆计算,然后通过输出设备播放
对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上
❓请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。从你打开窗口,开始给他发一个消息(在吗?),到他的到消息之后的数据流动过程。如果是在qq上发送文件呢
💡==在吗?==通过我的电脑的输入设备加载到内存后,由CPU计算,再反馈给输出设备(网卡),通过网络传递给朋友的电脑的网卡(输入设备),以同样的方式,==在吗?==被加载到内存由CPU计算,传给显示器,出现朋友的QQ聊天界面上,文件也是同样的道理
2.操作系统:
2.1操作系统的概念:
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
内核(进程管理,内存管理,文件管理,驱动管理) 其他程序(例如函数库,shell程序等等)
操作系统是一款进行软硬件资源管理的软件
2.2设计OS的目的和定位
先看这一张思维导图,我们再详细展开讲解。
我们先用一个简单的例子来理解
📚例子
以下谁是管理者?校长,管理者做的事情是决策
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6EyX43qu-1683251638516)(C:\Users\小卢\AppData\Roaming\Typora\typora-user-images\image-20230416143409922.png)]
假设我们的校长要在学校举办一个校级的编程笔试,校长先把辅导员小张叫过来,安排辅导员给我们学校学生开会和一些奖励制度,让辅导员去做,然后辅导员就给我(学生)来开会了
就比如我们上大学,修了多少学分,挂了多少学分,校长就可以通过教务系统直接看到,校长不跟你接触,但是辅导员天天跟你接触,辅导员通过让你们填表得到信息,假设校长是一个程序员,校长想要学生的班级姓名电话成绩紧急联系人,讲这些抽象成一个类,
管理者和被管理者,其实是不需要直接沟通的!
❓管理者和被管理者都没有直接沟通,他如何管理我呢?
💡管理的本质:对被管理对象的数据做管理!!!
管理者是如何拿到被管理者的数据呢?
学生的数据:
struct student
{
string Name;
int Class;
int phone[12];
int score;
int parenter_phone[12];
struct student* next;
};
管理的本质:先描述,再组织
我们可以把学生理解为硬件(软件也可以),校长就是操作系统,辅导员就为硬件驱动
❓操作系统为什么要对软硬件资源进行管理?
💡操作系统对下进行管理好软硬件资源(手段),对上给用户提供良好(安全、稳定、高效、功能丰富等)的执行环境
🔥操作系统作为计算机系统资源的管理者
操作系统是一款进行软硬件资源管理的软件
处理器(CPU)管理
在多道程序环境下,cpu的分配和运行都以进程(或线程)为基本单位,因此对cpu的管理可理解为对进程的管理。进程管理的主要功能包括进程控制、进程同步、进程通信、死锁处理、处理机调度等。附上一张图理解对进程的管理。
存储器(内存)管理
为多道程序的运行提供良好的环境,方便用户使用及提高内存的利用率,主要包括内存分配与回收、地址映射、内存保护与共享和内存扩充等功能。
文件管理
计算机中所有的信息都是以文件的形式存在的,操作系统中负责文件的管理的部分称为文件系统,文件管理包括文件存储空间的管理、目录管理及文件读写管理和保护等
设备管理
设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓存管理、设备分配、设备处理和虚拟设备等功能。
🔥操作系统作为用户与计算机硬件系统之间的接口
为了让用户方便、快捷、可靠的操作计算机硬件并执行自己的程序,操作系统提供了用户接口
操作系统提供的接口分为两类:命令接口和程序接口
命令接口:用户可以直接使用的,利用这些操作命令来组织和控制作业的执行
程序接口:用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务
命令接口
命令接口分为两类:联机命令接口和脱机命令接口,用户可以直接调用
联机命令接口:又称交互式命令接口,适用于分时或实时系统的接口,由一组键盘操作命令组成。用户输入一条指令,操作系统就执行一条指令;
脱机命令接口
又称批处理接口,使用于批处理系统,由一组作业控制命令组成。用户输入一堆指令,操作系统运行一堆指令。在操作系统运行这些命令时用户不可干预。
程序接口
程序接口:由一组系统调用(也称广义指令)组成
用户通过在程序中使用这些系统调用来请求操作系统为其提供服务,只能通过用户程序间接调用
如使用各种外部设备、申请分配和回收内存及其它各种要求
📚例子
就银行,银行有电脑、服务器、桌椅板凳、仓库、员工宿舍….
IT部门,后勤部门,保安,阿姨
行长就是OS(操作系统)
就拿取款来说,你去取500块,银行行长会跟你说,你的500在金库里面,你进门右转就是金库,你进去后拿了你的500块就出来吗? 不可以根本不可能
操作系统给我们提供非常良好的服务,并不代表OS会想想我们,反而操作系统不相信任何人!!!
🔥计算机软硬件体系结构: 🔥计算机的体系的结构是层状的,一般不可以跳过某个层