1 FPGA 和CPLD
##1.1 FPGA和CPLD的区别差异
①CPLD更适合完成各种算法和组合逻辑,FPGA更适合于完成时序逻辑。换句话说,FPGA更适合于触发器丰富的结构,而CPLD更适合于触发器有限而乘积项丰富的结构。
②CPLD的连续式布线结构决定了它的时序延迟是均匀的和可预测的,而FPGA的分段式布线结构决定了其延迟的不可预测性。
③在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。
④FPGA的集成度比CPLD高,具有更复杂的布线结构和逻辑实现。
⑤CPLD比FPGA使用起来更方便。CPLD的编程采用E2PROM或FASTFLASH技术,无需外部存储器芯片,使用简单。而FPGA的编程信息需存放在外部存储器上,使用方法复杂。 ⑥CPLD的速度比FPGA快,并且具有较大的时间可预测性。这是由于FPGA是门级编程,并且CLB之间采用分布式互联,而CPLD是逻辑块级编程,并且其逻辑块之间的互联是集总式的。
⑦在编程方式上,CPLD主要是基于E2PROM或FLASH存储器编程,编程次数可达1万次,优点是系统断电时编程信息也不丢失。CPLD又可分为在编 程器上编程和在系统编程两类。FPGA大部分是基于SRAM编程,编程信息在系统断电时丢失,每次上电时,需从器件外部将编程数据重新写入SRAM中。其 优点是可以编程任意次,可在工作中快速编程,从而实现板级和系统级的动态配置。
⑧CPLD保密性好,FPGA保密性差。
⑨一般情况下,CPLD的功耗要比FPGA大,且集成度越高越明显。
随著复杂可编程逻辑器件(CPLD)密度的提高,数字器件设计人员在进行大型设计时,既灵活又容易,而且产品可以很快进入市常许多设计人员已经感受到 CPLD容易使用。时序可预测和速度高等优点,然而,在过去由于受到CPLD密度的限制,他们只好转向FPGA和ASIC。现在,设计人员可以体会到密度 高达数十万门的CPLD所带来的好处。
1.2 FPGA的组成
CLB : 可编程逻辑宏单元
IOB :可编程输入输出单元
互联资源:可编程的互联开关矩阵、内部长线、总线等
重构逻辑和程序存储器
2 嵌入式微处理器基础
2.1 结构和类型
立即寻址就是指令当中自带数据,直接读取,最快;
直接寻址就是指令中存放的是地址,直接解析这个地址;
间接寻址就只指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。
2.2 多核结构
对于多核CPU,优化操作系统任务调度算法是保证效率的关键。一般任务调度算法有全局队列调度和局部队列调度。前者是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高。后者是指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率。目前多数多核CPU操作系统采用的是基于全局队列的任务调度算法。
多核的中断处理和单核有很大不同。多核的各处理器之间需要通过中断方式进行通信,所以多个处理器之间的本地中断控制器和负责仲裁各核之间中断分配的全局中断控制器也需要封装在芯片内部。
另外,多核CPU是一个多任务系统。由于不同任务会竞争共享资源,因此需要系统提供同步与互斥机制。而传统的用于单核的解决机制并不能满足多核,需要利用硬件提供的“读-修改-写”的原子操作或其他同步互斥机制来保证。
Big_endian ,little-endian 大的结尾,小的结尾(结尾指的是小的地址)
4 # 嵌入式微处理器中断和异常
4.1 异常
异常就是正常的用户程序被暂时中止,处理器就进入异常模式。
ARM CPU的异常分为:复位异常、中断异常(IRQ,FIR)、预取指令中止异常、未定义指令异常、软件中断指令异常、数据中止访问异常。
中断:
软件中断指令(swi)异常(软件中断指令)
异常是应用程序自己调用时产生的,用于用户程序申请访问硬件资源时,例如:printf()打 印函数,要将用户数据打印到显示器上,用户程序要想实现打印必须申请使用显示器,而用户程序又没有外设硬件的使用权,只能通过使用软件中断指令切换到内核态,通过操作系统内核代码来访问外设硬件,内核态是工作在特权模式下,操作系统在特权模式下完成将用户数据打印到显示器上。这样做的目的无非是为了保护操 作系统的安全和硬件资源的合理使用,该异常在管理模式下处理。
硬件中断:
硬件中断是由外设引发的, 软中断是执行中断指令产生的.
硬件中断的中断号是由中断控制器提供的, 软中断的中断号由指令直接指出, 无需使用中断控制器.
硬件中断是可屏蔽的, 软中断不可屏蔽.
硬件中断处理程序要确保它能快速地完成任务, 这样程序执行时才不会等待较长时间, 称为上半部.
软中断处理硬中断未完成的工作, 是一种推后执行的机制, 属于下半部.
不可屏蔽中断:
不可屏蔽中断属于 中断请求 的一种。外部不可屏蔽中断请求经由专门的CPU针脚NMI,通知CPU发生了灾难性事件,如电源掉电、总线奇偶位出错等。内部不可屏蔽中断请求是CPU内部自发产生的,如存储器读写出错、溢出中断、除法出错中断等。NMI线上中断请求是不可屏蔽的(既无法禁止的)、而且立即被CPU锁存。因此NMI是边沿触发,不需要电平触发。NMI的优先级也比INTR高。不可屏蔽中断的类型指定为2,在CPU响应NMI时,不必由中断源提供中断类型码,因此NMI响应也不需要执行总线周期INTA。
可屏蔽中断:
可屏蔽中断由有中断能力的外围设备所产生,包括处在定时模式的定时器溢出。每个可屏蔽中断源可以由中断使能位所单独关闭,或者由由状态寄存器中的通用中断使能位GIE一齐关闭
5 嵌入式系统的存储体系
5.1 层次结构:
寄存器-----内部缓存(SRAM)--外部缓存(DDRAM,SRAM等)--主存贮(flash等)
---存储器(磁盘等)---远程二级存储(web服务器,分布式文件系统)
5.2 MMU的功能和作用
将逻辑地址转换成物理地址。内存映射。
-
内存映射
-
存储区访问权限控制
-
设置虚拟存储空间的缓冲特性
5.2常见的RAM类型
SRAM:静态RAM,不用刷新,速度非常快,常用于内部cache。需要晶体管多(6个),价格昂贵。SRAM有四种引脚: CE =1 ,data禁用。 Addres 是一组地址线。
DRAM: 动态随机存储器。在刷新的时间需要插入等待时间。
引脚: 行地址选择线
: 列地址选择线。
DDRAM: SDRAM只能工作在133MHZ。 DDRAM是基于SDRAM。芯片内部的数据宽度增大一倍。可以在上升沿和下降丫刷新数据。带宽和传输速率都增大了一倍。
FLASH:只能从1变成0,所以写入之前需要先擦除。擦除最小的单位是一个区块,而不是一个单位。非容易丢失的内存。
NORFLASHL:程序可以直接运行(带SRAM接口),写入速度慢。读速度快。代码闪存。
NANDflash: 程序不能直接运行,写入快(U盘)。随机读取能力差。基于NAND的闪存可以取代硬盘。数据闪存。
NVRAM: 常的,我们将数据断电后仍能保留的半导体存储器称为“非易失性(或非发挥性)随机访问存储器”——Non-Volatile Random Access Memory,即NVRAM,而像DRAM与SRAM这样的存储器则就称为NVRAM:
Non-Volatile RAM. The target is to have a electrical device that could be accessed quite fast, most of the time the content is calculated by bytes and the content could be saved after power down. There are different technical ways to implement this concept such as EEPROM which is very common. Please note, in mobile phone design, most of the time one or two sectors of ROM (most of the time it is FLASH) will be used to simulate NVRAM, the only reason is cost saving since ROM is a "must" but NVRAM is not.
FLASH: One kind of ROM and the difference to other ROM is semiconductor level. Please note, FLASH must be read/write by sectors but NVRAM should be read/write by bytes. It is why NVRAM driver have to implement an algorithm such as copying all the content in one sector to RAM first.
高速缓存的分类:
cache: 能够减少内存的平均访问时间。
分类: (1)统一cache 和独立的数据、
写通cache 和写回cache:
写通cache: CPU 在更新cache时,同时更新主存
写回cache: CPU在更新cache的时候,不更新主存。
cache和内存都分成相同大小的块。主存地址可以由块号M和块内地址N组成。 Cache地址也由块号m和块内地址n组成。
CPU访问Cache时,CPU送来主存地址,放到主存地址寄存器中,然后通过地址变换部件变成cache的块号m,并放到cache的地址寄存器中。同时将主存中的块内地址N直接作为cache的块内地址n送到cache的地址寄存器中。如果地址变换成功(命中),就用得到的cache地址访问cache。从cache中取出数据送到CPU中。如果变换不成功,则产生cache失效的消息。则直接读主存到CPU,同时放到cache中。如果cache满了,就要采用替换策略进行替换。
直接地址映射和变换:
组相关联地址映射和变换:命中率高,每个组有n个单元。
全关联地址映射和变换: 主存中任何一个块可以映射到内存的任意位置。
cache的替换: 轮换法和随机替换法
6 外设
6.1 A/D 接口和原理
A/D转换的方法: 计数法,双积分法, 和逐次逼近法。
优点: 简单 缺点:速度慢
双积分式: 双积分式A/D的基本原理是对输入的模拟电压和参考电压进行两次积分、转换成与输入电压均值成正比的时间间隔。具有很高的抗工频干扰,转换精度高,但是速度很慢。朱
逐次逼近法:最高位放置位1 ,如果高于Vi,最高位清零,如果低于Vi,控制电路保留最高位,次高位放置为1,继续比较。实质是对分搜索法
特点:速度快,转换精度高。最常用的方法。
重要的指标:
分辨率和精度:
LSB所对应的电平值来表述
分辨率高,精度不一定高,精度受到温度漂移,线性度等影响
绝对精度: 误差的最大值。
相对精度;绝对精度/量程 *100%
转换时间
量程:
6.2 D/A 的原理
采用T形网络将数字转换成模拟电流,然后将电流转换成电压输出(运放)。
D/A 转换的分类:
电压型: 无放大输出部分的延迟,常用作高速D/A (高阻抗负载)
电流型: 外接电流电压转换,转换到电压。(接运放)。
乘算型:
主要指标:
分辨率: 最小的模拟量输出。
建立时间: 稳定所需的时间。
6.3 LCD
LCD:耗电省,体积小。
-
如果电流流过,液晶分子会以电流的方向排列。
-
如果提供了带有细小沟槽的外层,将液晶倒入后,液晶分子会顺着沟槽排列。并且内层和外层是同样的排列方式。
-
液晶层允许光线扭转。能够过滤除了从特殊角度射入的光线。如果液晶层扭转,光线将会随之扭转,以不同的方向从另一个方向射出。
-
让液晶分子发生扭转
6.4 音频和视频接口
音频:PCM: 光盘
MPEG(MP3):
AC3:TV,HDTV
编码或者解码音频的总线是IIS。 分时复用数据线,信道选择线,时钟线。
6.7 串口
232串行总线:
RS422 : 差分传输
RS485 : 几千米距离 差分传输
6.8 并行总线接口
并口: LPT: 分为SPP(标准),EPP(增强),和ECP(扩展).
IEEE488总线: SCSI总线,MXI总线
串口总线 USB总线: 通用串行总线
特点:(1)使用简单
(2) 每个USB设备有主机,最大127级
(3)较低成本电缆,较强的纠错能力
USB系统: USB主机,USb设备和USB互联
USB设备: 有HUB和Function功能
每个USB系统只有一个主机,到主计算机的USB接口被称为主控制器。
USB协议: 查询协议
USB上锁挂连的外设通过主机调度和基于令牌的协议共享USB带宽。
健壮性: 差分驱动和屏蔽保护
控制器和数据域的CRC校验
连接断开检测
协议自我修复
对数据的流量控制
采用数据管道和控制管道
USB接口的原理: 主机启动或是USB插入的时候都要对设备进行配置。
USB设备与主机的问答过程。
SPI: 同步协议接口
四种工作模式:
时钟级性: 空闲SCK的状态
时钟相位:数据输出上升沿还是下降沿有效
IIC 总线:
主发送,主接收,从发送,从接收
IIC协议起始位
SCL为高电平时,SDA出现下降沿,产生一个起始位。
imageIIC协议结束位
SCL为高电平时,SDA出现上升沿,产生一个结束位。
imageIIC读写单字节时序
IIC主机对IIC从机写入数据时,SDA上的每一位数据在SCL的高电平期间被写入从机中。对于主机,在SCL的低电平期间改变要写入的数据。
6.9 网络接口
常用的协议标准IEEE802.3
编码方式:曼彻斯特编码或者差分曼彻斯特编码。
曼彻斯特编码: 用高到低的跳变表示0,从低到高的跳变表示1
曼彻斯特差分编码:
以太网传输传输特点,低位开始传输。
6.10 TCP/IP 协议
分层的协议。
应用层,传输层,网络层和数据链路层,物理层
ARP: 从物理地址到MAC地址的转换。
每层上的协议:
应用层: BSD Sockets
传输层: TCP和UDP
网络层: IP,ARP,ICMP,IGMP
数据链路: MAc
物理层:
ICMP: IP的附属协议。网络控制报文协议。
IP: Internet Protocol 网际协议:
所有TCP,UDP,ICMP和IGMP,都用IP数据包来传输。最长655535字节
IP提供不可靠,无连接的数据包传送服务。
可靠性由TCP来提供
IP数据包可以不按顺序接收
TCP: 传输控制协议
面向连接可靠的协议。
UDP :不可靠 比如网络管理 SNMP,域名解析DNS,简单文本传输TFTP
靠端口号来识别上层的用户,FTP 21,Telent 的TCP 23,TFTP 的UDP 端口69
6.11 CAN 总线的接口和原理
-
控制器局域网
-
允许110个节点
-
1MB的传输速率
-
多主方式的串行总线
-
差分传输
6.12 WLAN 特点
- 802.11协议,定义了两个RF传输和一个红外传输
RF标准是跳频扩频和直接序列扩频
工作范围2.4G到2.4835G
现在被IEEE802.11b 取代
802.11a 是b 的后续标准
6.13 蓝牙
-
2.4G ISM
-
基带协议: 电路交换和分组交换。
-
传输距离短
-
采用个跳频扩展技术
划分为79个频点,采用快速跳频。(安全和抗干扰)。开始频率2.4G,终止频率2.48G
1600跳/S
(5)时分复用多路访问技术
-
语音支持,语音信道CVSD编码
-
纠错计划,FEC向前的方案
组成: 无线单元,基带单元(跳频控制和数据和信息的打包),链路管理和控制(核心)
周期性的监听其他设备发出的查询消息或者寻呼消息。
6.14 1394的应用
串行总线技术,串行工业总线标准
多媒体领域,比如DVD,摄像机灯
总线可以接63个设备
-
支持多种总线技术
-
即插即用
-
同步和异步出书
-
支持点对点通信
-
标准IEEE1212标准
-
较远传输距离
协议栈: 物理层,链路及事物层。管理层。
6.15 ZigBee的特点
简单的说,ZigBee是一种高可靠的无线数传网络,类似于CDMA和GSM网络。ZigBee数传模块类似于移动网络基站。通讯距离从标准的75m到几百米、几公里,并且支持无限扩展。
ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内,但可以继续增加。作为一种无线通信技术,ZigBee具有如下特点:
7 电子电路设计
原理图,网络表 ,设计印刷电路板
可靠性: 地线设计:单点和多点 数字和模拟 加粗 环路
电磁兼容设计: 合理的导线宽度 正确布线策略 去耦电容 抑制反射干扰 散热设计
测试方法和原理: 故障检测和诊断
放到测试设备上进行,输入一系列测试信号
JTAG测试接口
抗干扰设计:
8 嵌入式软件以及常识
分类: 系统软件,支撑软件(中间件和可配置组件)、应用软件
系统软件: 设备驱动,操作系统,中间件
应用软件: 手机软件等
支撑软件: 辅助开发的工具 系统分析,在线仿真,交叉编译,模拟配置
无操作系统: 循环轮转和前后台(增加了中断)
中断是前台,轮循是后台
系统引导(bootloader): 嵌入式系统上电后运行的第一段代码。
PC中,位于只读ROM的BIOS,和硬盘引导记录中的引导程序。
BIOS硬件检测和资源分配。
操作系统运行之前运行的一小段程序。(硬件初始化和内存映射)。
初始化包括:片级初始化和板级初始化。
BSP:板级支持包:
所有与硬件相关的代码。基本思想是把嵌入式系统与硬件隔离
设备驱动程序: 对硬件初始化和管理。包括硬件启动,停用,读,写
分类:
单体结构: 模块间可以互相调用
分层结构: 上一层只能调用下一层 MS_DOS
微内核结构: 只保留核心的功能单元
多重独立安全等级结构:
高可靠的嵌入式实时操作系统: 相关的标准,区分概念,隔离保护,健康监控
多道程序技术: 允许多个任务同时运行
进程的概念: 一个进程就是一个正在运行的程序。
程序是一个静态的概念,进程是一个动态的概念
特性: 动态性,独立性和并发性
线程: 进程中的一条执行流程。
对于同一个进程的各个线程,运行在相同的资源平台上。可以共享各进程的各种走远。
任务: 嵌入式中能够独立运行的实体称为任务。其实就是线程。
任务的状态;
运行状态:
就绪状态:
阻塞状态:
任务管理通过TCB来管理:
Task Control Block :任务控制块儿,用来管理和描述一个任务的数据结构。
-
任务管理的信息(任务ID,任务状态,优先级,调度,时间,指针,队列)
-
CPU上下文信息,通用寄存器,PC,PSW,SP。每个进程都有一份逻辑的寄存器
-
资源信息管理: 段表指针,页表信息等
TCB是任务存在的唯一标志,有新任务创建,就有一个新的TCB产生。
任务切换过程:
-
将CPU上下文信息放到TCB中
-
跟新当前的任务状态
-
按照一定的策略,选择一个就绪的任务
-
修改新任务状态
-
根据TCB内容,回复新任务的上下文环境。
任务队列:
不同的状态用不同的队列表示。
运行队列,阻塞队列,就绪队列
信号量S的阻塞队列,所有等待该信号量的任务都挂在此队列
邮箱M的队列: 正在等待邮箱M的任务。‘
调度器的原理:
调度算法
不可抢占式: 一直运行,直到被阻塞或者主动交出CPU使用权
可抢占式: 正在运行时被其他任务打断。
一些关键的可以打断一些不重要的:
调度算法的性能指标:
-
响应时间,切换就绪任务的时间
-
周转时间(提交到完成)
-
调度开销 (时间和空间)
-
公平性
-
均衡性
-
吞吐量
算法: 先来现服务: FCFS(first come first served)
按照任务先后到来的顺序,不可抢占式的。
缺点: 一批任务的周转时间决定于任务的排序。
短作业优先法: (SJF)short job first
-
可抢占 和不可抢占的类型都有。
-
可以得到最小的平均周转时间
时间片轮转:
-
公平性
-
活动性
主要问题:需要选择一个合适的q值(时间片大小)
每个任务的等待时间(n-1)*q
优先级算法:
给每个任务设置一个优先级,每次运行优先级最高的任务。
动态优先级: 提高等待任务的优先级,防止被饿死。
高优先级的任务会抢占低优先级的任务。
优先级反转:
产生原因:
共享资源(IO设备,信号量,邮箱),高优先级等待低优先级释放资源。
低优先级又在等待中优先级的任务。
比如低优先级的任务占用R,一直被其他任务中断,导致R无法释放,导致很高优先级的另一个任务也不能运行。
实时系统的调度:
任务模型(执行时间,周期和的时间期限)
RMS算法: 单调速率调度算法: 静态优先级的调度算法
任务周期越短,优先级越高。
缺点: CPU使用上限位0.69
假定任务相同独立的,周期性的,任务在任何位置都可以被抢占,任务之间不通信是不切实际的
EDF算法: 动态优先级的调度算法:
根据任务的截止时间来确定优先级。
EDF是最优的单处理器的调度算法,CPU利用上限位100%。
缺点:实时系统不易实现,系统开销大。
优先级反转:
优先级天花板策略(Priority ceilings): 优先级天花板是指将申请(占有)某资源的任务的优先级提升到可能访问该资源的所有任务中最高优先级任务的优先级.(这个优先级称为该资源的优先级天花板) 。在上述例子中体现为当低优先级任务申请占有某资源时就将这个低优先级任务的优先级升为能访问该资源的所有任务中最高优先级任务的优先级
优先级继承策略对任务执行流程的影响相对较小,因为只有当高优先级任务申请已被低优先级任务占有的临界资源这一事实发生时,才抬升低优先级任务的优先级。而天花板策略是谁占有就直接升到最高。
任务之间通信:
共享内存: 需要结合互斥条件。
消息: 内存空间中一段长度可变的缓冲区(建立通信链路,(send receive操作))
直接通信:
send(P,message)发送消息给任务P
receive (Q,message ) 接收消息从任务Q
特点: (1)链路自动建立,操作系统维护
-
只涉及一对互相通信
-
单方向或者双方向
间接通信:
不需要指出来源和去向,而是通过邮箱来发送和接收。
send(A,message) 发送消息到邮箱
receive(A,message)接收消息从邮箱
特点: 一个邮箱可以被多个任务访问
单向或者双向通信
只能存放单条信息,如果放多条,称为消息队列
管道: 连接两个任务的共享文件
信号: 信号机制也被称为软中断机制,和中断相似。
8.1 同步和互斥
任务之间的关系:
相互独立,任务互斥,任务同步(依存关系),任务通信(需要传递数据和信息)
互斥: 竞争条件: 两个或者多个任务对同一个共享数据进行读写。 把这种现象就做竞争条件。
对共享资源进行访问的代码,这些访问可能导致共享竞争的出现,叫做临界区
,把需要互斥访问的资源称为临界资源。
解决方案
-
关闭中断法
-
繁忙等待法
-
信号量(用来解决互斥的问题)
用一种新的变量类型,也就是信号量也记录当前可利用资源的个数。
正数或者0 : 表示可利用资源的个数
负数: 等待进入临界区的任务个数。
信号量是系统来维护的,任务不能直接修改它的值。
只能通过初始化和两个标准原语(P,v)来进行访问。
原语: 不可中断的一段程序,在内核下关中断来实现。
P、v原语是内核代码的一部分
在等待进入临界区时,任务会被阻塞起来。
P,主要功能是申请一个空闲的资源。把信号量的值减一,如果成功,会退出原语,失败,阻塞任务。
V,释放一个被占用的资源,把信号量的值加1 。 如果发现被阻塞的任务,把它唤醒。
P实际就是一个函数。
信号量同步的优点:
可以允许多个任务同时进入临界区
当任务无法进入临界区时,会被阻塞
代码L
semphors S
s.N = N
P(S)
临界区
V(S)
非临界区
任务同步:
存在时序关系或者先后的关系
可以使用信号量进行同步,把信号量看做共享的资源,
在一个任务内部使用P原语,另一个任务内部使用V原语。
死锁:
-
PV执行不当(两个PV)
-
每个任务都占据着某种资源,而又在等待其他资源,同时资源都不能释放。
8.2 存储管理
存储管理:
存储管理方式:
固定分区: 各个分区大小可以相等,也可以不等,固定的分区。
可变分区: 不会产生内碎片,但是会可能产生外碎片
内存管理:
最先匹配法:
下次匹配法;
最佳匹配法:
最坏匹配法:
地址重定位:
地址映射。
逻辑地址:相对的地址或者虚地址。
目标代码一般都是虚地址的形式。
MMU来管理地址映射。
静态地址映射: 程序装入内存时,直接对指令进行修改。一次性实带孩子转换。
缺点: 程序装入内存后就不能再移动了
动态地址映射: 程序访问内存时,在转换。硬件地址映射机制来完成。
页式存储管理:
打破存储的连续性。
数据结构: 页表(逻辑和物理的对应),物理页面表(各个物理页面的分配情况)
地址映射: 逻辑地址分析,页表查找,物理地址合成。
优点: 没有外碎片 ,程序不用连续存放
缺点:程序必须全部装入
每个任务维护一个页表
虚拟内存技术:
MMU还提供虚拟内存技术。
在页式存储的基础上,增加了请求调用页面和页面置换的功能,
装入部分程序。
程序局部性原理:执行的指令和访问的存储空间局限在一定区域内。
页面置换算法:
最优页面置换算法
最久未用置换算法
最不常用算法
先进先出算法
时钟页面置换算法
8.3 设备
逻辑设备: 程序请求的设备
虚拟设备: 利spooling 技术实现,将逻辑设备虚拟成多台设备
字符设备:以字符 为单位进行传输,比如打印机,键盘
块设备: 应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
网络设备是特殊设备的驱动,它负责接收和发送帧数据,可能是物理帧,也可能是ip数据包,这些特性都有网络驱动决定
设备驱动程序:
是直接同I/O设备打交道
8.3 文件系统
FAT
NFS:
文件和目录: 文件是一种抽象的机制
存取: 顺序和随机
访问: 打开,关闭,读写,添加,定位
8.4 程序设计
解释器: 直接解释执行源程序。或者将源程序翻译成某种中间形式。解释程序和源程序都要参与到目标语言程序。
编译器: 将源程序翻译成目标程序。
伪指令:不产生机器码,常数定义伪指令,存储定义伪指令,汇编控制(IF),开始伪指mi令,结束伪指令,
面向对象的语言:
8.5 测试
黑盒测试:极限情况测试,边界测试,异常测试,错误猜测,随机测试,性能测试
百盒测试: 对程序的路径和过程进行测试 独立路径,循环,判断,内部数据的有效性
覆盖测试: 早期,在单元测试期间。
覆盖策略:
语句覆盖,判定覆盖(一次真,一次假),条件覆盖(每个条件都获得多有的逻辑值)
条件覆盖: 只要各个逻辑的取值都出现过就好,分支不一定执行。
比如if(A && B )
则: 条件覆盖取值只要两个测试用例即可
用例1 A=TRUE , B = True
2 A = false , B = false
判定/条件覆盖: 每个分支都执行,,每个条件获得所有的逻辑值
条件组合覆盖: 每个条件组合出现一次。条件覆盖满足,则一定满足判断覆盖,条件覆盖和判断/条件覆盖。
路径测试: 被称为最强的覆盖条件,要图的每个路径都要执行一次。路劲覆盖还是不能取代判断覆盖。
9 嵌入式系统开发和管理
常用的开发模型:
- 瀑布模型: 制定计划,需求分析,软件设计,程序编写,软件测试,运行维护。
自上而下的设计,如同瀑布流水。
-
快速原型(1)建造一个快速原型 ,随后客户反馈,快速修改模型。
-
增量模型: 增量构架来设计,各个阶段并不交付一个完整的产品
-
螺旋模型: 结合瀑布模型和快速原型模型,沿着螺旋进行若干次迭代。(强调了风险分析)
-
演化模型(事先不能定义完整的需求)
项目管理: 项目计划,项目组织,质量管理,费用控制,进度控制。
用户需求: 从用户局角度来描述系统功能和非系统功能。避免专业性的描述。
系统需求: 结构化系统分析。使用PDL系统分析。标准接口分析
系统规格书的说明文档: 是对用户需求分析和系统需求分析之后的文档。
系统设计:传统的设计方法,瀑布模型,自上而下。
内容耦合: 一个模块直接修改另一个模块的数据
公共耦合:
控制耦合; 传递信号(开关值,标记量)
标记耦合
数据耦合
非直接耦合
尽量使用使用数据耦合,少用控制耦合,避免内容耦合。
** 10 网络攻击**
DOS 攻击: DoS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
一定要时刻记得,DOS不是DOS操作系统。
DDOS:分布式的DOS攻击。
(1)制造大流量的无用的数据
(2)利用TCP/IP 协议的缺陷,制造大量的无用数据
(3)使用僵尸电脑进行攻击
11 密码加密:
1 摘要算法
常用的摘要算法有MD5,SHA1。摘要算法是一个不可逆过程,就是无论多大数据,经过算法运算后都是生成固定长度的数据,一般结果使用16进制进行显示。
MD5和SHA1的区别:MD5结果是128位摘要,SHa1是160位摘要。那么MD5的速度更快,而SHA1的强度更高。
下面统一使用MD5算法进行说明,SHA1类似。
主要用途有:验证消息完整性,安全访问认证,数据签名。
消息完整性:由于每一份数据生成的MD5值不一样,因此发送数据时可以将数据和其MD5值一起发送,然后就可以用MD5验证数据是否丢失、修改。
安全访问认证:这是使用了算法的不可逆性质,(就是无法从MD5值中恢复原数据)对账号登陆的密码进行MD5运算然后保存,这样可以保证除了用户之外,即使数据库管理人员都无法得知用户的密码。
数字签名:这是结合非对称加密算法和CA证书的一种使用场景。
一般破解方法:字典法,就是将常用密码生成MD5值字典,然后反向查找达到破解目的,因此建议使用强密码。
对称加密算法只是为了区分非对称加密算法。其中鲜明的特点是对称加密是加密解密使用相同的密钥,而非对称加密加密和解密时使用的密钥不一样。对于大部分情况我们都使用对称加密,而对称加密的密钥交换时使用非对称加密,这有效保护密钥的安全。非对称加密加密和解密密钥不同,那么它的安全性是无疑最高的,但是它加密解密的速度很慢,不适合对大数据加密。而对称加密加密速度快,因此混合使用最好。
常用的对称加密算法有:AES和DES.
DES:比较老的算法,一共有三个参数入口(原文,密钥,加密模式)。而3DES只是DES的一种模式,是以DES为基础更安全的变形,对数据进行了三次加密,也是被指定为AES的过渡算法。
AES:高级加密标准,新一代标准,加密速度更快,安全性更高(不用说优先选择)
.非对称加密(RSA)
这里主要对RSA进行介绍。
对称加密加密解密使用的是相同的密钥,而非对称加密加密解密时使用的不同的密钥,分为公钥(public key)和私钥(private key).公钥可以公开,而私钥自己保存。它利用的是两个大质数相乘十分容易,而对其乘积进行因素分解十分困难。这样就可以将乘积作为密钥了,这个乘积为N值,根据两个大质数选择e和生成d,删掉两个大质数。这样(N,e)为公钥,(N,d)为私钥,公钥无法破解出私钥(不作详细介绍,我们不是研究算法的)。由于非对称加密的密钥生成麻烦,所以无法做到一次一密,而且其加密速度很慢,无法对大量数据加密。因此最常用的使用场景就是数字签名和密码传输,用作数字签名时使用私钥加密,公钥解密;用作加密解密时,使用公钥加密,私钥解密。
作者:宇o风
来源:CSDN
原文:https://blog.csdn.net/u013565368/article/details/53081195
版权声明:本文为博主原创文章,转载请附上博文链接!
11 补充
公共端口号:
(1)公认端口(Well Known Ports):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
(2)注册端口(Registered Ports):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
- 动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
著作权: 给公司开发的,我只有署名权。其他权利属于公司。
PERT图:
1、事件(Events)表示主要活动结束的那一点;
2、活动(Activities)表示从一个事件到另一个事件之间的过程;
3、松弛时间(slack time)不影响完工前提下可能被推迟完成的最大时间;
4、关键路线(Critical Path)是PERT网络中花费时间最长的事件和活动的序列
要点: 每个时间完整,一定要和它相连的所有事项都要完成。
11
9 盲点
9.1 浮点数的表示
9.2 多处理器调度
应该要掌握的考点:
(1)TCP/IP 协议必须熟悉
(2)测试模型必须熟悉
(3)实时操作系统一定会考
2018 考试总结:
1 信号量分为互斥信号量和同步信号量
2 信号量的使用方法
3 信号量操作函数 take(P 操作),如果没有可用资源,可以阻塞任务,但不是永久的,可以设置阻塞的时间。
网友评论