文章目录
- 一、冯诺依曼体系结构
- 二、操作系统(Operator System)
- 1.操作系统的概念
- 2.为什么要有操作系统
- 3.操作系统如何进行管理
- 三、系统调用和用户操作接口
- 1.系统调用接口
- 2.用户操作接口
- 四、计算机的软硬件体系结构
一、冯诺依曼体系结构
目前我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系,它的特点是将数据和指令存储在同一块内存中,并使用程序计数器(Program Counter,PC)来控制计算机执行指令的顺序。其具体结构如下:
冯诺依曼体现结构主要由运算器,控制器,存储器,输入设备和输出设备五个部分组成。
其中运算器,控制器和一些寄存器统称为中央处理器(CPU),主要负责执行指令和处理数据。
存储器一般指的是内存,内存掉电易失,只能用做于临时存储程序和数据
输入输出设备用于与外部设备进行数据交互,被统称为外设,其中磁盘,网卡属于输入输出设备,键盘属于输入设备,显示器属于输出设备,其中磁盘是不带电存储的,可以用于永久存储
我们知道,CPU是一台计算机的核心,因为它具有很快很强的运算能力(算术运算和逻辑运算),但是实际上我们可以说CPU是很笨的,这是因为它只能被动的接收别人传递的数据和指令,然后将运算得到的结果进行返回,所以这里就有两个问题:
1.CPU是如何能够识别我们传递给他的数据和指令的?
CPU能够识别我们传递给它的数据和指令,是因为计算机是按照一定的规则和格式来存储和处理数据和指令的。这些规则和格式被统称为计算机体系结构,其中包括了数据和指令的编码方式和存储方式等。
具体来说,当我们向计算机中输入数据和指令时,它们会被转换成二进制代码,并按照一定的格式存储在内存中。CPU通过控制总线和存储器的读写,从内存中读取数据和指令,并按照指令的编码格式进行解析和执行。
CPU中的控制单元(Control Unit)负责解析指令,确定指令的类型和操作对象,然后将操作对象从内存中读取到寄存器中,并执行指令所要求的操作。CPU中的算术逻辑单元(Arithmetic Logic Unit,ALU)负责执行算术和逻辑运算,将结果存储到寄存器或内存中。
总之,CPU能够识别我们传递给它的数据和指令,是因为计算机按照一定的规则和格式存储和处理数据和指令,并且CPU中的控制单元和算术逻辑单元能够解析和执行这些指令.CPU内部有一套直接的指令集,它会把指令对应到指令集,然后完成对应的操作
2.CPU需要的指令从哪里获取?
CPU需要的指令通常从内存中获取。在计算机中,指令和数据都是以二进制形式存储在内存中的,而计算机的CPU是通过总线和内存进行通信的。
当CPU需要执行指令时,它会从内存中读取指令,并将其存储到CPU的指令寄存器中。指令寄存器中存储的指令会被解码成CPU可以理解的指令格式,并且执行相应的操作。在执行完当前指令后,CPU会将程序计数器(PC)的值加上指令的长度,以便读取下一条指令。
需要注意的是,CPU需要的指令并不是一次性从内存中读取的,而是根据需要进行读取的。此外,为了提高CPU执行指令的效率,现代计算机中通常会采用高速缓存(Cache)来存储最近使用过的指令和数据,以便快速读取和执行。
总之,CPU需要的指令通常从内存中获取,并且现代计算机通常会采用高速缓存来提高指令读取和执行的效率,CPU只会向内存中读取和写入数据,内存再向磁盘读取和写入数据,其中,内存向磁盘读取和写入数据的过程就是IO的过程
【总结】
在数据层面上,CPU不会直接和外设打交道,只会和内存打交道,同样,所有的外设,有数据需要载入,只能载入到内存中,内存要写出,数据也只能写入到外设中
CPU不和外设直接沟通,只和内存直接打交道
所以此时我们就能理解为什么程序运行必须加载到内存了,这是因为CPU要执行我的代码访问我的数据,只能从内存中读取,因为CPU只和内存打交道,而我们的程序是存储在磁盘上
下面我们以一个例子,来对冯诺依曼体系结构(软件数据流的层面)进行更一步的理解:我们平时在QQ聊天的时候,在聊天窗口向别人发送信息,别人又在聊天窗口接收信息,在这个过程中,数据是怎样流动的呢》如果我们发送的是文件呢?
发送信息->接收信息 的数据流动:A的键盘 输入到A 的内存,然后A的CPU从A的内存中读取数据,然后进行加密,然后传输到A的网卡,再到B的网卡,然后传输到B的内存中,B的CPU从内存读取数据,进行解密,然后再读入内存,再输出到显示器上
发送文件->接收文件 的数据流动:A的磁盘输入到A的内存,A的CPU从A的内存中读取数据,然后进行加密,之后传到A的网卡,B的网卡,然后输入到B的内存中,B的CPU从内存读取数据进行解密,然后读入内存,再写入B的磁盘中
二、操作系统(Operator System)
1.操作系统的概念
操作系统是一个进行管理软硬件资源的软件,它通过对下管理好各种软硬件资源(手段),对上为用户提供良好的(稳定的高效的安全的)的运行环境(目的)
操作系统有四大软件管理模块:进程管理,文件系统,内存管理,驱动管理
2.为什么要有操作系统
操作系统是计算机系统中最基本的软件之一,它是计算机硬件和应用程序之间的桥梁,为计算机用户提供了一种友好、高效、安全的使用环境。
以下是操作系统的几个主要作用:
1**.资源管理**:操作系统负责管理计算机的各种资源,包括CPU、内存、磁盘、网络等。它通过进程管理、内存管理、文件系统等机制,为各个应用程序提供资源的分配和管理
2.用户接口:操作系统为用户提供了一种友好、直观的用户接口,使得用户可以方便地使用计算机。操作系统提供了各种应用程序和工具,例如文本编辑器、图形界面等,使得用户可以更加高效地完成工作。
3.安全保护:操作系统通过访问控制、加密等机制,保护计算机系统的安全。它可以限制用户对系统资源的访问权限,防止恶意软件的攻击和数据泄露等问题。
4.系统维护:操作系统可以监控计算机系统的运行状况,检测和修复系统错误,提高系统的稳定性和可靠性。它还可以进行系统更新、升级等操作,使得计算机系统始终保持最新的状态。
综上所述,操作系统是计算机系统中不可或缺的一部分,它为用户提供了友好、高效、安全的使用环境,为计算机系统的稳定性和可靠性提供了保障。
3.操作系统如何进行管理
操作系统通过多种机制进行管理,包括进程管理、内存管理、文件系统、设备管理等。
1.进程管理:操作系统通过进程管理机制,为每个应用程序分配独立的内存空间和CPU时间。它可以监控和调度进程的运行状态,防止应用程序之间的干扰和冲突,提高计算机系统的稳定性和响应速度。
2.内存管理:操作系统通过内存管理机制,为每个应用程序分配独立的内存空间,并且可以动态地调整内存的使用情况。它可以监控内存的使用情况,防止内存泄漏和内存溢出等问题,提高计算机系统的稳定性和性能。
3.文件系统:操作系统通过文件系统机制,为用户提供了一种方便、安全的文件存储和访问方式。它可以管理文件的创建、读取、写入和删除等操作,防止文件的损坏和丢失,保护用户数据的安全性。
4.设备管理:操作系统通过设备管理机制,管理计算机系统中的各种设备,包括输入输出设备、网络设备、存储设备等。它可以协调设备之间的通信和数据传输,防止设备冲突和数据丢失等问题,提高计算机系统的稳定性和可靠性。
总之,操作系统通过多种机制进行管理,为计算机系统提供了一种高效、安全、稳定的使用环境。它可以监控和调度各种资源的使用情况,防止资源的浪费和冲突,提高计算机系统的性能和可靠性
此外,我们还需要从一下三个方面方面进行理解:
1.管理者不需要与被管理者直接交互,依旧可以能够很好的将被管理者管理起来
我们以我们大学的学校管理为例,我们的校长并没有直接和我们打交道,即进行交互,即使交互也是问我们对学校满不满意,但是他仍然能够将我们很好的管理起来,我们可能会说,我们并不由校长来管理的,而是由我们的辅导员来管理的,但是实际上,辅导员并不能完全算一个管理者
这是因为拥有对重大事宜有决策权的人才是管理者,虽然在我们的日常生活中,与我们进行交互最多的就是我们的辅导员,那么辅导员对我们的某些事物没有决策权,比如我们是否能评奖评优,是否被开除学籍等等
2.管理的本质是对数据进行管理
那么我们的管理者是如何对我们进行管理的呢?比如我们的校长是如何对我们进行管理的呢?
答案是对我们的数据进行管理,校长通过辅导员获取我们的各种数据,比如成绩情况,有没有挂过科等等,然后做出决策,最后辅导员再对我们执行这些决策,所以管理者通过执行者提供的数据对被管理者进行管理,执行者通过与被管理者进行交互得到被管理者的各种数据,管理者通过这些数据对被管理者做出决策,然后执行者再执行这些决策
对于我们的计算机来说,在操作系统和硬件之间有一层驱动硬件的驱动层序,各种硬件对应的驱动就是我们所说的执行者,驱动程序执行操作系统的指令去完成相关任务,比如网卡有网卡驱动,磁盘有磁盘驱动,操作系统从这些驱动中获取硬件的数据,根据硬件的数据对硬件进行管理
3.管理的方法:先描述,再组织
如果我们学习没有几个学那么校长可以用一个excel表格对我们学生的数据进行管理,但是实际上,往往一个学校的学生都是很多的,如果还是使用这种 方式的话,就会十分麻烦,管理的成本就会很高,所以,我们可以把学生需要存储的数据抽取出来,然后将这些数据描述成一个结构体或者一个类,然后将每个学生的信息用来实例化成一个对象,然后我们可以使用某一种数据结构(比如链表,顺序表)来将这些对象组织起来,我们需要查询学生信息时按照对应的key值遍历即可,删除学生直接删除学生的数据即可。这样,我们对学生的管理就变成了对某一数据结构的管理(增删查改),这样就明显提高我们管理的效率
操作系统不仅能够管理硬件,还可以管理软件,并且对软件的管理方式和对硬件的管理方式是一样的,对软件的管理,变成对软件数据的管理,然后将数据描述成一个结构体或者一个类,然后用一个数据结构来存储,然后就变成了对数据结构的管理
三、系统调用和用户操作接口
系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发
1.系统调用接口
系统调用接口是操作系统提供给应用程序的一组接口,它可以让应用程序通过操作系统来访问计算机系统中的各种资源,例如文件、网络、设备等。系统调用接口通常由操作系统提供的动态链接库(DLL)或共享库(Shared Library)来实现,应用程序可以通过调用这些库中的函数来访问操作系统提供的服务。
为什么需要系统调用接口呢?
这是因为操作系统不能直接对各种软硬件直接进行操作,这又是因为操作系统不相信任何用户,操作系统不确定我们是否对各种软硬件进行违法操作,就好比我们生活中银行我们只能在窗户外面进行办理业务,这也是银行不相信任何人,通过这个窗口给我们提供服务,同理,操作系统也给我们用户提供各种服务,比如用户访问软硬件的需求,从磁盘 读入数据,写入数据。所以操作系统给用户提供系统调用的接口,这样就使得我们在访问软硬件的时候,直接调用系统调用接口,然后由操作系统来帮助用户来完成对应的工作,这样就和银行的工作原理类似,通过窗口来帮助用户来满足用户的需求,操作系统这样实现既满足了用户的需求,又保护了软硬件环境。
这样我们可以根据银行的工作情况来对其更好的理解。
这里我们需要注意的是,Linux操作系统是雷纳斯-托瓦兹大佬使用C语言编写的,所以Linux的各种系统调用的接口都是C式的接口,即各种函数接口是用C语言编写的
2.用户操作接口
用户操作接口指的是应用程序提供给用户的一组接口,它们可以让用户与应用程序进行交互并操作应用程序。用户操作接口通常包括以下几种类型:
1.图形用户界面(GUI):提供了一种直观、易用的图形界面,让用户可以通过鼠标和键盘等输入设备与应用程序进行交互。GUI通常包括窗口、菜单、按钮、文本框等控件,使得用户可以方便地进行各种操作。
2.命令行界面(CLI):提供了一种基于文本的命令行界面,让用户可以通过键盘输入命令来操作应用程序。CLI通常包括命令行提示符、命令行参数、命令行选项等,使得用户可以更加灵活地操作应用程序。
3.应用程序编程接口(API):提供了一组编程接口,让开发者可以通过代码来操作应用程序。API通常包括函数、类、方法等,使得开发者可以更加灵活地定制应用程序的功能。
4.语音用户界面(VUI):提供了一种基于语音的用户界面,
为什么需要用户操作接口?
系统调用接口对用户的要求比较的高,用户操作接口是为了让用户能够与计算机系统进行交互而设计的。通过用户操作接口,用户可以输入命令、浏览信息、执行任务等等。这样一来,用户就可以更加方便地使用计算机系统,提高工作效率和用户体验。同时,用户操作接口也有助于降低用户对计算机系统的学习成本,使得更多的人可以轻松地使用和掌握计算机技术。
所以,这样用户就可以通过这些操作接口进行指令操作,开发操作以及管理操作等等,对于我们在Linux下使用 的ls 指令,将磁盘文件信息写入到显示器,touch指令等等本质上都是调用系统接口,在磁盘上创建文件,将磁盘文件信息写入来完成对应的工作
四、计算机的软硬件体系结构
【总结】
操作系统对所有的软硬件资源进行管理,同时为用户提供访问软硬件资源的系统调用接口,由操作系统来完成对资源的各种访问,为了降低用户的使用成本,操作系统提供了各种用户操作接口来访问软硬件资源,用户操作接口的底层再来调用系统调用接口,从而来完成用户的各种需求,此时,操作系统就将用户,软硬件有机联系了起来
至此,我们的计算机软硬件体系结构就搭建起来了: