文章目录
- 👉冯诺伊曼体系结构👈
- 概念
- 内存的重要性
- 👉操作系统(Operating System)👈
- 概念
- 目的
- 定位
- 特征
- 发展和分类
- 运行机制
- 体系结构
👉冯诺伊曼体系结构👈
概念
下图是描述冯诺依曼体系结构的一张图。
计算机的本质是为了数据的计算处理。所以,需要有设备将数据提供给计算机,那就是输入设备。同样地,也需要有设备存放计算之后的数据或者将数据呈现给使用者,即输出设备。
数据从输入设备到存储器,再由存储器到 CPU,CPU处理之后,将结果返回给存储器,存储器再将结果交给输出设备。(控制指令除外。)
我们可以看一下该体系结构下, 各个设备的一些例子。
输入设备:键盘、话筒、摄像头、网卡、磁盘等等。
输出设备:显示器、磁盘、网卡、声卡、音响等等。
存储器:内存。
CPU(中央处理器):运算器、控制器。
内存的重要性
在理解了各个器件的作用之后,不免疑惑,内存存在的意义是什么呢?为什么不可以让输入设备和输出设备直接和 CPU 相连,这样岂不是方便一些。
首先要了解,一般而言将 输入设备 和 输出设备 称作“外设”。
其次,外设一般而言速度会比较慢。
但是,CPU 的运行速度很快。所以,如果去掉存储器,只剩下CPU 和外设,这样子当然也是可以运行到,但是根据木桶效应,整个系统的运行速度就以外设的运行速度为主(前面说到,外设运行速度是比较慢的)。所以,为了防止这种现象的发生,所以就有了存储器。
存储器的运行速度远比外设大得多,但是比不上 CPU 。如果说外设是 毫秒级别,CPU 是纳秒级别,那么存储器就是 微秒级别 。
并且,存储器有一个特点,就是可以临时存储数据。如果 CPU 现在有两个任务A、B要处理,在处理 A 任务的同时,B任务的数据也被加载进内存(存储器),所以CPU执行完 A 任务,就可以立马向内存索要 B 任务的数据。而不是执行完A任务之后,等内存先向外设要数据,CPU再从内存要数据。
所以,有了内存之后,我们就可以对数据做预加载,CPU在进行数据计算的时候,根本不需要访问外设,只需要向内存要数据就可以。解决了外设和CPU速度不匹配的问题,这就是存储器存在的意义。
结论:
- 在数据层面,一般而言 CPU 不直接和外设直接沟通,而是和内存打交道。
到这里,我们就可以理解为什么程序在运行前,必须要被加载到内存。这是因为体系结构决定的,可执行程序是一个文件,在磁盘(外设)里面,程序要被 CPU 运行,而CPU只和内存打交道。
👉操作系统(Operating System)👈
概念
任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:
- 内核(进程管理,内存管理,文件管理,驱动管理)
- 其他程序(例如函数库, shell程序等等)
对于内核,常见的就是windows 、Mac 、Linux 、Unix 等等。
目的
设计操作系统肯定是为了达到某种功能,其目的如下:
- 与硬件交互,管理所有的软硬件资源
- 为用户程序(应用程序)提供一个良好的执行环境
定位
在整个计算机软硬件架构中,操作系统的定位是: 一款纯正的“搞管理”的软件。
那么如何理解“管理”就成了理解操作系统的重中之重。
- 管理的例子
- 描述被管理的对象
- 组织被管理的对象
以一个学校为例。学校里的学生就相当于计算机里面的“资源”。
要描述计算机里面的“资源”,就需要对其进行一定的描述。比如一个大学校园,每一个学生都有自己的“学号”,知道了学号,就知道了这个学生是谁,相当于是学生的唯一标识。当然,“描述”并不只是说记录一个“学号”那么简单,还要记录其他信息。
描述了对象,就要用一定的数据结构对其进行组织。比如学校里的学生信息,可以被存在一个个结构体里面,然后以链表的形式存储(当然也可以是顺序表),要找到某些学生,用一定的算法就可以。计算机里面的资源同理。
如下,操作系统对下进行硬件的管理;对上进行应用软件的管理,和对用户的交互,为上层用户、应用程序提供简单易用的服务。操作系统是一种系统软件。
特征
操作系统有如下四个特征,其中,并发和共享是操作系统最基本的两个特征。
- 并发:指两个或多个事件在同一时间间隔内发生。宏观上是同时发生的,但微观上是交替发生的。
- 共享
- 互斥共享:同一个时间段只允许一个进程访问资源(摄像头/麦克风)。
- 同步共享:允许一个时间段多个进程“同时”(宏观上)访问某些资源(微观上是分时共享),比如硬盘读写。
- 虚拟:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的。
- 空分复用技术(虚拟储存技术):物理4GB内存,用户看来远大于4GB。
- 时分复用技术(虚拟处理机技术):一个CPU看上去是几个CPU,多个程序并发运行。
- 异步:异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,是走走停停(等待资源进程阻塞),以不可预知的速度向前推异步性。
发展和分类
早期计算机是没有操作系统的,经过一代代的优化,才有了如今各种各样的操作系统。其发展历史大概如下(从上到下 —> 从早到晚):
- 手工操作阶段:输入输出靠纸带打孔,效率极低。
- 批处理阶段
- 单道批处理系统:引入了脱机输入/输出技术(磁带),通过监督程序(操作系统雏形)控制作业输入输出。缓解了人机速度矛盾,提高了资源利用率,但是CPU是串行的(处理完一个再处理下一个),大量CPU时间浪费在I/O等待。
- 多道批处理系统:磁带往内存输入多道程序,并发执行,输入、计算、输出互不干扰。自此操作系统诞生,引入了中断技术。
- 分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
- 实时操作系统:优先响应一些紧急任务,某些紧急任务不需时间片排队。
- 硬实时系统:必需在绝对严格的时间内完成处理。
- 软实时系统:能接受偶尔违反时间规定。
- 网络操作系统
- 分布式操作系统
- PC操作系统:比如 Windows,Mac OS,Ubuntu 等等。
运行机制
- 指令
- 特权指令:只能在核心态下使用。比如:启动I/O 内存清零 设置时钟 允许/禁止终端 停机
- 非特权指令:核心态、非核心态都可以使用。 比如:控制转移 算数运算 取数指令 访管指令
- 处理器状态(用程序状态寄存器PSW中某标志位来标识,0为用户态,1为核心态)
- 用户态:运行用户程序,只能使用非特权指令。
- 核心态:运行操作系统程序。该状态下可以使用任何指令(唯一例外:防管指令,该指令执行后进入核心态)。
- 程序
- 应用程序:运行在用户态。
- 内核程序:系统管理者,运行在核心态。
体系结构
- 大内核:将操作系统的主要功能模块都作为系统内核,运行在核心态高性能,但是内核代码庞大难以维护。
- 微内核:只把基本概念保留在内核功能少,功能清晰方便维护,但是需要频繁的在核心态和用户态之间切换,性能低。
对于冯诺依曼体系结构和操作系统的简单理解就到这里啦。