中央处理单元

CPU的组成: CPU主要由运算器、控制器、寄存器组和内部总线等部件组成

运算器: 由算术逻辑单元ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数的存放区)、数据缓冲寄存器DR(暂时存放内存的指令或数据)和状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等; 执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等

控制器: 由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要

CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。

指令流水线

指令流水线原理

将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段

RISC(精简指令集)中的流水线技术

(1) 超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。
(2) 超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换取时间。
(3) 超长指令字(Very Long Instruction Word, VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。

流水线时间计算

流水线周期: 指令分成不同执行段,其中执行时间最长的段为流水线周期。

流水线执行时间: 1条指令总执行时间+(总指令条数-1)*流水线周期

流水线吞吐率计算: 吞吐率即单位时间内执行的指令条数。
公式: 指令条数/流水线执行时间

流水线的加速比计算: 加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高。
公式: 不使用流水线执行时间/使用流水线执行时间

总线结构

总线

指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。

总线分类

内部总线: 内部芯片级别的总线,芯片与处理器之间通信的总线

系统总线: 是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间大小)、控制总线(传送控制命令)。代表的右ISA总线、EISA总线、PCI总线。

外部总线: 设备一级的总线,危机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。

嵌入式操作系统的主要特点

微型化

从性能和成本角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小电池)。

可定制

从减少成本和缩短研发周期考虑,要求嵌入式操作系统能运行在不同的微处理平台上,能针对硬件变化进行结构与功能上的配置,以满足不同应用需要。

实时性

嵌入式操作系用主要应用于过程控制、数据采集、传输通道、多媒体信息及关键要害领域需要迅速响应的场合,所以对实时性要求较高。

可靠性

系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。

易移植性

为了提高系统的易移植性,通常采用硬件抽象层和板级支撑包的底层设计技术

嵌入式初始化过程

按照自底向上、从硬件到软件的次序依次为: 片级初始化 -> 板级初始化 -> 系统初始化。

进程调度

进程调度方式

当有更高优先级的进程到来时如何分配CPU。可分为可剥夺和不可剥夺两种,可剥夺只当有更高优先级进程到来时,强行将正在运行进程的CPU分配给高优先级进程;不可剥夺是指高优先级进程必须等待当前进程自动释放CPU。

在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度

高级调度

高级调度又称“长调度” “作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。在系统中一个作业直须经过一次高级调度。

中级调度

中级调度又称“中程调度”或“对换调度”,它决定处于交换区中的哪个就绪进程可以调入内存,以便直接参与对CPU的竞争。

低级调度

低级调度又称为“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。

数据模型

关系模型

关系模型是二维表的形式表示的实体-联系模型,是将实体-联系模型转化而来的,经过开发人员设计的

概念模型

概念模型是从用户角度进行建模的,是现实世界到信息世界的第一抽象,是真正的实体-联系模型。

网状模型

网状模型表示实体类型及其实体之间的联系,一个事物和另外几个都有联系,形成一张网

面向对象模型

面向对象模型是采用面向对象的方法设计数据库,以对象为单位,每个对象包括属性和方法,具有类和继承等特点

数据模型三要素

  1. 数据结构(所研究的对象类型的集合)
  2. 数据操作(对数据库中各种对象的实例允许执行的操作的合集)
  3. 数据的约束条件(一组完整性规则的集合)

分布式数据库

概念

局部数据库位于不同的物理位置,使用一个全局BDBMS将所有局部数据库联网管理,这就是分布式数据库

分片模式

  1. 水平分片:将表中水平的记录分别存放在不同的地方
  2. 垂直分片:将表中的垂直的列值分别存放在不同的地方

分布透明性

  1. 分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的
  2. 位置透明性:应用程序不关心数据存储物理位置的改变
  3. 逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模型
  4. 复制透明性:用户或应用程序不关心复制的数据从何而来

软件过程模型

瀑布模型(SDLC)

瀑布模型是一个经典的软件生命周期模型,一般将软件开发分为:可行性分析(计划)、需求分析、软件设计(概要设计、详细设计)、编码(含单元测试)、测试、运行维护等几个阶段。

螺旋模型

螺旋模型是一个烟花软件过程模型,将原型实现的迭代特征与现行顺序(瀑布)模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一系列的增量发布。

V模型

V模型从整体上看起来是一个V字型的结构,由左右两边组成。左边的下划线分别代表了需求分析、概要设计、详细设计、编码。右边的上划线代表了单元测试、集成测试、系统测试与验收测试。

原型化模型

原型化模型第一步就是创建一个快速原型,能够满足项目干系人与未来的用户可以与原型进行交互,再通过与相关干系人进行充分的讨论和分析,最终弄个清楚当前系统的需求,进行了充分的了解之后,在原型的基础上开发出用户满意的产品。

喷泉模型

是一种用户需求为动力以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。是开发过程具有迭代性和无间隙性。

基于构件的开发模型CBSD

利用预先包装的构建来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。
特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以提高可靠性,节省时间和成本。

形式化方法模型

建立在严格数学基础上的一种软件开发方法,主要活动是生成计算机软件形式化的数学规格说明。

增量模型

首先开发核心模块功能,而后与用户确认,之后在开发次核心模块的功能,即每次开发一部分功能,并与用户需求确认,最终完成项目开发,优先级最高的服务最先交付

敏捷模型

个体和交互胜过过程和工具、可以工作的软件胜过面面俱到的文档、客户合作胜过合同谈判、相应变化胜过遵循计划

极限编程(XP)

基础和价值观是交流、朴素、反馈和勇气,即任何一个软件项目都可以从4各方面入手进行改善:加强交流、从简单做起、寻求反馈、用于实事求是。
XP是一种进螺旋式的开发方法,他将复杂的开发过程分解成一个个相对比较简单的小周期,通过积极的交流、反馈以及其他的一些方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时的调整开发过程。
XP提倡测试先行,未来将以后出现bug的几率降到最低。

水晶系列方法

与XP方法一样,都有以人为中心的理念,但在实践上有所不同。其目的是发展一种提倡“机动性的”方法,包含具有共性的核心因素,每个都含有独特的角色、过程模式、工作产品和实践。

并列争球法(Scrum)

是一种迭代的增量化过程,把每段时间(如30天)一次的迭代成为一个“冲刺”(Sprint),并按需求的优先级别来实现产品,多个自组织和自治的小组并行的递增实现产品

特性驱动开发方法(FDD)

是一个迭代的开发模型。认为有效的软件开发需要3个要素:人、过程和技术。由5个核心过程:开发整体对象模型、构造特征列表、计划特征开发、特征设计和特征构建。

统一过程模型(RUP)

RUP描述了如何让有效地利用商业的、可靠的方法开发和部署软件,是一种重量级过程。RUP类似一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针、模板以及示事例支持。

RUP软件开发生命周期是一个二维的软件开发模型,RUP中有9个核心工作流,如下:

  1. 业务建模:理解待开发系统所在的机构及其商业运作,确保所有参与人员待开发系统所在的机构有共同的认识,评估待开发系统对所在机构的影响。
  2. 需求:定义系统功能及用户界面,是客户知道系统的功能,使开发人员理解系统的需求,为项目预算及计划提供基础
  3. 分析与设计:把需求分析的结果转化为分析与设计模型、
  4. 实现:把设计模型转换为实现结果,对开发的代码做单元测试,将不同实现人员开发的模块集成为可执行系统
  5. 测试:检查各子系统之间的交互、继承,验证所有需求是否均被正确实现。队发现的软件质量上的缺陷进行归档,对软件质量提出改进建议。
  6. 部署:打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。
  7. 配置与变更管理:跟踪并维护系统开发过程中产生的所有制品的完整性和一致性
  8. 项目管理:为软件开发项目提供计划、人员分配、执行、监控等方面的指导,为风险管理提供框架。
  9. 环境:为软件开发机构提供软件开发环境,及提供过程管理和工具的支持。