当前位置:   article > 正文

详解冯诺依曼体系结构与操作系统_冯诺依曼体系工作

冯诺依曼体系工作

计算机体系结构

本文主要从两个方面来详细介绍计算机体系结构:
1.冯诺依曼体系结构(硬件)
2.操作系统(软件)



前言

硬件——深入理解冯诺依曼体系结构
软件——全面认识操作系统


一、深入理解冯诺依曼体系结构

1. 简要背景介绍

1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。
半个多世纪以来,计算机制造技术发生了巨大变化,但冯诺依曼体系结构仍然沿用至今,人们把冯诺依曼称为“计算机鼻祖”。

2. 五大部件介绍

在这里插入图片描述

3. 细节解释

1.为什么输入/输出设备的数据,不直接给CPU,反而给内存呢?

[这里引入存储分级(存储金字塔)概念]
在这里插入图片描述
是因为,外设和CPU的速度相差太大。

在输入设备在接收输入数据的时候,CPU只能等。如果没有存储器,CPU将会长时间处于等待状态,这样的话,效率其实是很低的,输出同理。
所以,如果允许外设把它的数据直接和CPU进行交互,那么整个计算机的效率将会以外设为主(木桶原理——效率由短板决定),会变得非常慢。

在认识层面上,可以认为内存整体是外设和CPU的“缓存”(快的设备给慢的设备做缓存)。那么整个计算机的效率就以内存为主了,变得快起来。

2.为什么程序运行的时候,要先加载进内存?
对数据进行了预加载,把程序缓存起来了。CPU读取这个程序效率就会高了。

3.存储器是如何起到缓存作用的?
只要有了存储器,就能对数据进行预加载和预写入,解决了CPU和外设之间的效率相差过大而导致CPU长时间处于等待的问题。

预加载:是把输入设备的数据加载到存储器。
预写入:把CPU处理完的数据,来不及放到输出设备中的,先写入存储器。
在这里插入图片描述

总结:
站在数据层面上,CPU不和外设打交道,直接和内存打交道。
站在外设角度,数据不和CPU打交道,直接和内存打交道。
内存:是计算机数据的核心。

4. 举例理解冯诺依曼机中数据走向

场景一:给朋友发一条消息
键盘(我)—> 写入存储器 —> CPU(封包)—> 写回存储器 —> 我的网卡(具备从网络中接收数据的能力)—> 朋友的网卡 —> 写入存储器 —> CPU(解包)—> 写回存储器 —> 显示器(朋友)

场景二:拖拽文件 数据流走向

把硬盘上的文件(本身也是数据)放在内存当中,经过封包解包,写回内存,再经过网卡传出去,对方网卡接收,放入存储器,再进行封包解包,写回存储器,最后放到对方的硬盘。

二、全面认识操作系统

1. 操作系统的概念

操作系统是一款做软硬件管理软件

硬件:冯诺依曼中的所有设备。
软件:1.安装软件,卸载软件 2.在系统层面,文件,进程,驱动等都属于软件范畴

2. 计算机系统 比对 银行系统

在这里插入图片描述

3. 深入认识“管理”:

管理:真正的管理是要有“决策权”。重要的是,区分“决策”和“执行”。

把操作系统比喻成一所封闭的学校:
那么在学校中,
底层硬件、部分软件:学生(被管理者)
驱动程序:导员,宿管,教师等
操作系统:校长(管理者,有真正的决策权)

管理者和被管理者从来都没有见过面,如何进行管理?

  1. 可以通过“信息”管理
  2. 驱动层可以帮管理者拿到数据
  3. 当“信息量”特别大的时候,信息就需要被组织起来。
    所以第一步要先把角色描述起来,
    struct stu{
    姓名,电话,成绩;
    struct stu* netx;
    }
    struct stu s1,s2,…; //可以用链表的形式把这些结点连接起来,那么我们就将其组织起来了。所以对学生的管理,就变成了对链表结点的管理。

所以操作系统是如何进行底层的硬件管理呢?
在操作系统启动之时,通过中间的驱动程序,拿到底层的硬件信息,对其数据进行管理和决策。
也就是,先描述,再组织。

4. 库函数和系统调用接口

使用操作系统有难度且有风险,所以操作系统一般是被封装起来的。对外提供少量的接口(函数),要使用好系统调用接口,也需要一定的背景知识,且也要有一定的成本。

所以可以把系统调用接口封装成某些库函数。

库函数 和 系统调用的关系:具有上下级的关系,库函数(用户级别的库)可能调用系统调用

5. 操作系统存在的目的

在一套系统中,必须一定要有管理者进行统筹。

对上,给用户一个稳定高效的执行环境;
对下,管理好软硬件资源,提供稳定的软硬件环境。

6. 操作系统与Shell

Shell英译汉:外壳。

从技术角度, Shell的最简单定义:命令行解释器。

主要包含:
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者

在认识了操作系统的管理的概念后,我们知道,管理的本质是为了让用户使用成本更小,使用方便。

两种常见降低使用成本方案(本质相似,都是为了解决用户使用计算机的成本,只不过解决的程度不同罢了):

  1. 包裹软件外壳shell,给操作系统封装一层软件层,我们可以通过命令行的形式,直接操作计算机——Linux
  2. 包裹图形界面GUI——Windows

什么是shell外壳:包裹在操作系统外层的软件层,方便用户和操作系统进行沟通。

shell作用
(1)交互:接受用户的输入,交给os执行,得到结果反馈给用户。(为了对用户屏蔽内核的复杂性)
(2)保护操作系统:如果用户输入了一些错误或非法的指令,在外层直接就拒绝掉了。(为了保护内核以免用户误操作造成损害)

shell和bash:shell是所有外壳程序的统称,bash是具体的一款shell。


总结

1. 冯诺依曼体系中的存储器指的是内存。
2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)。外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
3. 所有设备都只能直接和内存打交道。
4. 操作系统是一款搞软硬件管理的软件。
5. 管理最重要的是要有决策权。
6. 如何进行管理:先描述,再组织。
7. Linux使用C语言编写,C语用struct描述对象。
数据结构表示的是数据的组织方式,组织方式决定结构,结构决定算法。
8.shell是包裹在操作系统外层的软件层,方便用户和操作系统进行沟通。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/165790
推荐阅读
相关标签
  

闽ICP备14008679号