计算机系统知识

1. Cache与主存地址映射由硬件自动完成
2. PC是程序计数器(在控制器中),用来存放将要执行的下一条指令在内存中的地址
3. 中断:出现意外情况,自停止当前运行的程序,转入处理新的情况,处理完毕又返回被暂停的程序继续执行
4.闪存不想RAM(随机存储器)一样以字节为单位改写数据,因此不能取代RAM,也不能替换主存
5.CPU内外高速缓存是用来解决CPU和内存中间速度,容量不匹配的问题,与外存无关
6.随机(易失)访问存储器分两类:静态【只需保存通电就得以保存通电】(SRAM)和动态【周期性更新数据】(DRAM),SRAM比DRAM快,但也贵得多,SRAM用于CaChe,DRAM用于主存和图形的帧缓冲区
7.RISC(精简指令集计算机):指令数少,不超过128条,寻址方式少,不超过4种,指令格式少,不超过4种
8.DMA方式下,I/O传输,逐段读取于写入数据,每一次读取与写入均需要占用一个总线周期以及若干存储周期
9.平均CPI=各CPI*比例的总和
10.MIPS(每秒执行的百万条指令数),时钟周期为主频的倒数,每条指令需时间为平均CPI*主频倒数(秒),每秒执行指令数为每秒指令需时间的倒数
11.异常指处理器内部发生的特殊事件,中断是指来自处理器外部的请求事件
12.流水线执行时间=流水线建立时间【第一次取分执】 + (n-1)*流水线周期【取执时间】
13.CPU主要由运算器【算术逻辑(ALU)、通用寄存器(GR)、状态条件寄存器(PSW)】、控制器【程序计数器(PC)、指令寄存器(IR)、指令译码器、时序产生器、操作控制器】、寄存器组、内部总线等部件组成
14.浮点数由两部分组成:【尾数】影响数的精度【阶码】影响表示数的范围
15.补码:可以将减法运算转化为加法运算从而简化运算器的设计
16.DMA在数据传输过程中,没有保存现场,恢复现场工作之类的工作,CPU根本不参与传送操作,中断与DMA都可实现外设与CPU之间的并行工作
17.
指令系统类型 指令 寻址方式 实现方式 其他
CISC(复杂指令系统) 数量多,使用频率差别大,可变长 支持多种寻址 微程序控制技术 研制周期长
RISC(精简指令系统) 数量少,使用频率高,定长 支持方式少 适合采用流水线,增加了通用寄存器、主要依赖硬件实现 优化编程,有效支持高级语言
18.浮点数运算:对阶、尾数运算、规格化(小数向大数看齐)
19.直接主存存取(DMA)指数据在主存与I/O设备间直接成块传送
20.采用模二运算的只有循环冗余效验CRC
21.CPU运算器只能完成运算,而控制器用于控制整个CPU的工作
22.n位补码(数据位)表示范围数学公式 -{2}^{n-1}\sim {2}^{n-1}-1
23. 可靠度计算

串联(一个失效整个失效)数学公式 {R}_{1}*{R}_{2}*{R}_{3}*.....

并联(一个失效不影响其他)数学公式 1-(1-{R}_{1})*{*(1-R}_{2})*{(1-R}_{3})*.....

24.奇偶效验:在编码中增加一位效验位来使编码中的个数位奇数(奇效验)/偶数(偶效验),奇效验可检测代码中奇数位出错的编码,但不能发现偶数位的,也不能修正错误
25.海明码:纠错码,检测和纠正数据传输中的错误(利用奇偶性进行检错和恶纠错)

数学公式 {2}^{r}\geq m+r+1//m原始数据位数,r是效验位数

26.流水线操作周期应为“瓶颈”段所需时间,操作时间最大值
27.栈帧就是一个函数执行的环境
28.编译器:效率高,省空间,交互差,可移植差(先翻译后执行)
29.解释器:效率低,费空间,交互好,可移植好(边翻译边执行)

软件工程

1.
CMM(能力成熟度模型) 初始级 可重复级 可定义级 可管理级 可优化级
杂乱无章,没有明确的规划 建立基本项目与实践跟踪项目的性能、功能、费用 开发组织的部署和标准化 制定软件过程与产品质量的详细度量标准 产品、项目进行优化
2.
CMMI(能力成熟度模型集成) 未执行(未完成) 可执行 已管理 已定义 定量管理 优化
目标未完成 可以生产产品 过程制度优化,偏向成熟 开发组织的部署和标准化 定量管理过程的制度化,加入了技术数据 满足客户的需求,持续改进
3开发模式
瀑布模型
优点:易理解,成本低,需求明确,变更小,早期,可拟开发大型软件
缺点:
4开发模式
增量模型
优点:继承瀑布模型优点,可以快速构建可运行产品,具有商业性
缺点:
5开发模式
螺旋模型
优点:适用复杂且大规模的项目,风险评估,成本高
缺点:
6开发模式
原型模型
优点:适用用户需求不明确,规模小,不可立即投入使用
缺点:
6开发模式
喷泉模型
优点:面向对象语言的开发,软件重用和多项目的开发,多迭代和无间隙
缺点:
7开发方法
敏捷方法
xp:极限编程 4大价值:沟通、简单、反馈、勇气 12个核心:快速计划、小型发布、隐喻(合理传达信息)、简单设计、测试优先、重构、持续集成、结对编程 5个原则:快速反应、简单些假设、逐步修改、提倡更改、优质工作
水晶法:认为每一个项目都需要不同的策略
并列争求法:使用迭代的方法
自适应软件开发法:根据实际情况调整
敏捷统一的过程