【Linux】计算机操作系统和软硬件体系结构

目录

1、冯诺依曼体系结构

1.1 中央处理器(CPU)

2、操作系统(OS)

2.1、操作系统的概念

 2.2、操作系统的作用

2.3、操作系统如何进行管理

2.3.1  操作系统通过分级管理的方式,实现对整体的管理

2.3.2 管理的本质是对数据进行管理

2.3.3  所有的“管理”,本质逻辑都是 — 先描述,再组织

3、系统调用与用户操作接口

3.1 系统调用

3.2 用户操作接口


1、冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

【Linux】计算机操作系统和软硬件体系结构_第1张图片

 

现代计算机发展所遵循的基本结构形式始终是冯·诺依曼机结构。这种结构特点是“程序存储,共享数据,顺序执行”,需要 CPU 从存储器取出指令和数据进行相应的计算。主要特点有:

  1. 单处理机结构,机器以运算器为中心;
  2. 采用程序存储思想;
  3. 指令和数据一样可以参与运算;
  4. 将软件和硬件完全分离;
  5.  指令由操作码和操作数组成;
  6. 指令顺序执行。
  7. 计算机处理的数据和指令一律用二进制数表示
  8. 顺序执行程序

冯诺依曼体系结构由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

  • 其中运算器、控制器和一些其他寄存器统称为中央处理器(CPU);
  • 存储器一般指内存,内存掉电易失,只能作为临时存储;
  • 输入设备和输出设备统称为外设,其中磁盘、网卡等等于输出和输入设备,键盘、鼠标等属于输入设备,显示器属于输出设备;

1.1 中央处理器(CPU)

中央处理器(Central Processing Unit),简称CPU,是1971年推出的一个计算机的运算核心和控制核心,是信息处理、程序运行的最终执行单元。

CPU作为一台电脑的核心,它的运算能力决定了一台电脑的运行速度;但CPU其实是很笨的,它只能被动接收别人传递过来的数据和指令,经过运算后再将得到的结果返回;那么这里就会存在两个问题:

  • 1、CPU如何能够识别我们传递给它的数据和指令?

答案是:CPU内部有一套自己的指令集,它会把指令对应到指令集,然后完成相应的操作;其中CPU的指令集是二进制的,这就是为什么我们编写的代码需要经过编译链接变成二进制的可执行程序后才能被运行的原因 – CPU需要读懂我们的指令才能完成对应的运算;这也是编译器存在与产生的根本原因。

  • 2、CPU需要的数据从哪里获取?

答案是:内存 (此处不考虑缓存);虽然我们的数据是存放在磁盘中的,但是由于磁盘读取与写入数据的速度太慢了 – 可以简单理解为CPU的运算速度以纳秒为单位,内存的运算速度以微秒为单位,而磁盘的运算速度则是以毫秒甚至秒为单位;CPU如果直接从磁盘中读取和写入数据,会有大量的等待时间,所以为了提高计算机的整体效率,CPU只会向内存中读取和写入数据;内存再向磁盘中读取和写入数据;其中,内存向磁盘读取和写入数据就是IO的过程。

通过以上问题,我们得出以下结论:

  • 在数据层面上,CPU不会直接和外设打交道,而只会和内存打交道;
  • 所有的外设需要载入数据时,只能载入到内存,内存要写入数据,也只能写入到外设中。

2、操作系统(OS)

2.1、操作系统的概念

操作系统(Operating SysSystem,OS)是配置在计算机硬件的第一次层软件,是对硬件系统的首次扩充。其作用是管理好这些设备,提高它们下利用率和系统的吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。OS是现代操作系统中最简单和最重要的系统软件。

操作系统一共有四大软件管理模块:进程管理、文件管理、内存管理、驱动管理。

【Linux】计算机操作系统和软硬件体系结构_第2张图片

 2.2、操作系统的作用

计算机操作系统的作用是:为了提高计算机的利用率,为了方便用户使用,以及提高计算机的系统响应速度而给计算机配备的一种大型系统程序,用它来实现计算机系统自身的硬件和软件资源的管理。

比如我们程序运行之前需要预先把数据加载到内存当中,那么谁来加载?什么时候加载?一次加载多少呢?CPU为了提高效率把数据写入到内存中,之后再统一刷新,那么谁帮我们刷新?什么时候刷新呢?CPU运算结束后内存中的垃圾数据又由谁来帮我们清理呢?等等问题;这些事情全部都由操作系统来完成。

2.3、操作系统如何进行管理

关于操作系统的管理,我们主要从以下三个方面入手:

2.3.1  操作系统通过分级管理的方式,实现对整体的管理

我们学校为例,学校的校长并没有和我们(学生)进行交互,但他依旧能把学校管理的很好;这是因为校长把管理分发到下级,也就是我们的辅导员(班主任),通过辅导员来管理班级,这样,校长只需要把命令下放到下级,就可以轻松管理整个学校的事物;同样,操作系统也是如此。

2.3.2 管理的本质是对数据进行管理

任何决策都是要有依据的,而决策的依据就是管理者所获得的数据;比如:你个人的成绩、绩点、综测等。但是管理者不和我们之间进行交互,他又是如何获取我们的数据的呢?答案是由执行者提供 – 执行者通过与被管理者交互得到被管理者的各种数据,管理者通过这些数据对被管理者做出决策,然后执行者再执行这些决策。

对于计算机来说,各种硬件对应的驱动就是所谓的执行者,比如网卡有网卡驱动,磁盘有磁盘驱动;操作系统从这些驱动获取硬件数据,然后通过对硬件的数据进行管理实现对硬件的管理;
 

2.3.3  所有的“管理”,本质逻辑都是 — 先描述,再组织

我们知道,一个大学有几万名学生,如果校长对每个学生的数据都独立保存的话,那数据管理的成本势必会非常大;所以,我们可以利用面向对象的思想将学生的数据描述成一个结构体或者一个类,然后每个学生都对应着由这个类/结构体实例化出的一个对象;最后,我们可以使用某一种数据结构 (比如顺序表、链表) 将这些类对象组织起来,形成一个学生信息管理系统;此时,我们对学生数据的管理就转变成了对某一数据结构的增删查改,大大提高了管理的效率。

注:操作系统不仅能管理硬件,也能管理软件,且对软件的管理和对硬件的管理方法是完全一样的 -- 管理软件 --> 管理软件的数据 --> 把软件数据描述成一个结构体 --> 管理用于组织这个结构体的数据结构。

3、系统调用与用户操作接口

3.1 系统调用

操作系统是管理各种软硬件资源的软件,那么我们是否能通过系统直接对各种软硬件进行操作呢?答案是:不能,因为操作系统出于安全考虑,它不相信任何人!不然,万一有人对不小心删除磁盘驱动或者向磁盘进行添加恶意数据,那么数据安全将无法保障。

那么,操作系统又是如何向上层用户提供各种服务呢?于是操作系统想到一个完美的方法 — 给用户提供系统调用的接口,即当用户访问软硬件需求时,直接调用系统提供的接口,而这些操作系统调用的接口统称为系统调用

注:Linux 操作系统是托瓦兹大神于1991年使用C语言编写的,而上述的各种系统调用接口又是由操作系统提供的,所以它们也是C式的接口,说白了就是用C语言编写的用于用户调用的各种函数接口。

3.2 用户操作接口

  • 虽然操作系统为我们提供了各种系统调用接口让我们来访问软硬件,但是这些接口在使用上功能比较基础,对用户的要求也相对较高;于是人们在系统调用接口的基础上开发出了用户操作接口,比如 Linux 下的外壳程序 shell,各种函数库 (C/C++等),windows 图形化界面 (GUI),以及一些指令 (编译好的可执行程序) 等;
  • 用户通过这些操作接口进行指令操作、开发操作以及管理操作等等;比如 Linux 下外壳程序 bash 提供的 ls,本质上是调用系统接口,将磁盘中文件信息写入到显示器;touch 本质是调用系统接口,在磁盘上创建文件;又比如 C语言的 scanf/printf 函数,底层都是调用系统调用接口从键盘读入数据/向显示器上打印数据。

【Linux】计算机操作系统和软硬件体系结构_第3张图片

 

总结:

操作系统对所有软硬件资源进行管理,同时为用户提供访问软硬件资源的系统调用接口,由操作系统来完成资源的各种访问;

另一方面,用户为了降低成本,使用各种用户操作接口来访问软硬件资源,用户操作接口的底层再来调用系统调用接口。所以说,操作系统将硬件、软件和用户有机联系了起来。

你可能感兴趣的:(linux,系统架构)