2015上半年软件设计师考点,难点
存储器:
高级存储器容量一般较小,而低级存储器容量较大。
寄存器:
中央处理器的一部分,是有限存贮容量的高速存贮部件,可用来暂存指令、数据和地址。是CPU必须的
是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
Cache缓存:
为了弥补CPU与内存之间运算速度的差异而设置的的部件,并不是每个CPU都有(明显例子是奔腾和部分赛扬间差异)
高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。由于CPU的速度远高于主内存,CPU直接从内存中存取数据要等待一定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减少了CPU的等待时间,提高了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期一般是焊在主板上,现在也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。
补码:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
1.直接映像:Cache中只能存放0--n块且每块只有一个(不可能存在两个块0),如果1区0块存进Cache中的0块了,那么其他区的0块就没办法往Cache中存入了。所以已知块号就能确定区号!固只需要比较区号是否相等即可!
优点:地址映象方式简单,数据访问时,只需检查区号是否相等即可,因而可以得到比较快的访问速度,硬件设备简单。
缺点:替换操作频繁,命中率比较低。
这种方式的块冲突概率较高,当称序往返访问两个相互冲突的块中的数据时,Cache的命中率将急剧下降,因为这时即使Cache中有其他空闲块,也因为固定的地址映像关系而无法应用。
2.全相连映像:主存与Cahce存储器均分成容量相同的块。允许主存中的任意一块可以调入Cache存储器中的任何一块空间中。
优点:命中率比较高,Cache存储空间利用率高。
缺点:访问相关存储器时,每次都要与全部内容比较,速度低,成本高,因而应用少。
这种方式只有当Cache中的块全部装满后才会出现块冲突,所以块冲突的概率低,可达到很高的Cache命中率;但实现很复杂。
3.组相联映像:是前面两种方式的折中,即将Cache中的块再分成组。规定组采用直接映像方式而块采用全相联方式。通过直接映像方式来决定组号,在组内再用全相联映像方式来决定Cache中的块号。
优点:块的冲突概率比较低,块的利用率大幅度提高,块失效率明显降低。
缺点:实现难度和造价要比直接映象方式高。
判断块命中及替换算法上都要比全相联方式简单,块冲突的概率比直接映像的低,其命中率也介于直接映像和全相联映像方式之间。
页式存储:
将一个进程的地址空间划分成若干个大小相等的区域,称为页。相应地,将主存空间划分成与页相同大小的若干个物理块。在为进程分配主存时,将进程中若干个页分别装入多个不相邻的块中。
根据逻辑地址中的页号与页表长度寄存器对比,如果页号大于等于页表长度寄存器,则访问越界,产生越界中断。若未出现越界,则根据页表寄存器中的始址和页号计算页表项中的位置,得到该页的物理块号,装入物理地址寄存器中,页内地址不变
优点:页表对程序员来说是透明的,地址变换快,调入操作简单;
缺点:各页不是程序的独立模块,不便于实现程序和数据的保护。
段式存储:
作业的地址空间被划分成若干个段,每个段是一组完整的逻辑信息,如有主程序段,子程序段,数据段及堆栈段等,每个段都有自己的名字,都是从0开始编址的一段连续的地址空间,各段长度不等。
优点:消除了内存零头,易于实现存储保护,便于程序动态装配;
缺点:调入操作复杂,地址变换速度慢于页式存储管理。
段页式存储:
先将整个主存划分成大小相等的存储块,将用户程序按程序的逻辑关系分为若干个段,并为每个段赋予一个段名,再将每个段划分成若干页,以页为单位离散分配。
缺点:
1,段页式管理将段式和页式两种方式相结合,互相取长补短,充分发挥了它们的优点。
2,段页式虚拟存储器管理方案具有空间浪费小,存储共享容易,存储保护容易,能动态连接的特点。
3,但由于管理软件的增加,复杂性和开销也随之增加,需要的硬件及占用的内容也有所增加,使得执行速度大大下降。
对比:
时钟频率:“若干次周期每秒”
总线宽度:该总线可同时传输数据的位数,好比是车道容许并排行走的车辆的数量
总线带宽:这条总线在单位时间内可以传输的数据总量,它等于总线位宽与时钟频率的乘积。
总线带宽=(总线位宽/8)*总线时钟
不需要额外增加太多硬件的情况下,增加处理器吞吐量、提高处理器工作速度的一种常用的有效技术
分类:运算流水线(各段与一个统一的时钟同步)、指令流水线(需要不断访存,所需时间不确定,难以用统一的时钟控制各段工作)
特点:
1.每个子过程称为“级”、“段”;“级”数称为流水线的“深度”
2.需要有“通过时间、装入时间”,之后进入稳定状态
3.不能缩短单个任务的相应时间,可以提高吞吐率
4.受限于最慢流水线段的运行速度。所以,各个功能段所需时间应尽量相等
5.适合于大量重复的处理过程
6.多任务并行处理
7.实现子过程的功能所需时间尽可能相等,避免因不等而产生处理的瓶颈,形成流水线的断流
8.指令流不是顺序执行时,回事流水过程中断。再形成流水过程需“通过时间”。要提高效率
最大吞吐率取决于流水线中最慢一段所需的时间,所以该段称为流水线的瓶颈
消除瓶颈:细分瓶颈段;重复设置瓶颈段
提高指令级并行的技术
1.乱序执行:
跳过相关的指令去执行后面不相关的指令,使指令的执行顺序不再按原程序的顺序进行
要求指令调度算法必须保证程序的运行结果和按照顺序执行时的结果相同
指任务从流水线流出的次序同流入流水线的次序不一样,也称为乱序流动或错序流动。性能会下降。
工作原理:在发生数据相关时,要允许没有数据相关的后续指令进入相关指令所占用的功能段执行,并超越相关的指令继续往前流动
相关:指令间存在的依赖关系。
冒险:因相关引起的指令流水线异常现象
使用乱序流动时会产生冒险
2.寄存器重命名
3.推测执行
解决问题:
1.访存冲突
2.流水线相关处理:数相关、转移相关、中断处理
远程登录协议:
1) Telnet(Telecommunication Network Protocol):
Telnet是通过客户端与服务器之间的选项协商机制,实现了提供特定功能的双方通信。
2)Rlogin
由于客户端进程和服务器进程已经事先知道了对方的操作系统类型,因此也就省去了选项协商机制。
总的来说,它与telnet协议类似,不过内部实现要相对简单。
3)SSH(Secure Shell)
优点:(1)SSH是比较可靠的的远程登录和其他安全服务的协议,它采用了数据加密机制,能够防止DNS欺骗和IP欺骗。(2)所传输的数据是经过压缩的,因此相对来说加快了传输速度。
SSH协议是建立在应用层和传输层上的安全协议,主要包括三个部分:(1)传输层协议内容,提供认证,数据的完整性检查等功能。(2)用户认证协议层,它运行在传输层上,主要实现了通信过程中的身份认证,认证方式包括口令认证,密钥认证等。(3)连接协议层,负责分配加密通道到逻辑通道上,运行在用户认证协议层上。
扩展:
ARP((Address Resolution Protocol)):地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议
WEP(Wired Equivalent Privacy),有线等效保密(WEP)协议是对在两台设备间无线传输的数据进行加密的方式,用以防止非法用户窃听或侵入无线网络
网络安全:
1.物理安全:
地震、火灾、设备损坏、电源故障、被盗
设备冗余、线路冗余、数据备份
2.传输安全:
在传输线路上窃取数据
VPN加密技术
3.网络互连安全:
Internet、系统内网络、系统外网络、内部局域网、拨号网络
防火墙、物理隔离、AAA认证
4.系统安全:
操作系统的脆弱性、漏洞、错误配置
漏洞扫描、入侵检测、病毒防护
5.应用安全:
应用软件、数据库、包括资源共享、Email、病毒
认证、病毒防护、数据备份、灾难恢复
6.管理安全:
管理员权限、口令、错误操作、资源卵用、内部攻击、内部泄密
认证、访问控制、授权
多媒体:
1.感觉媒体:
人的感官能感觉到的
声音、文字、图像、质地、气味、温度、压力……
2.表示媒体:
为了加工感觉媒体而构造出来的一种媒体
各种数字化编码(人造媒体)、各种媒体文件
3.展现媒体:
感觉媒体与通信电信号进行转换的一类媒体。包括:输入展现媒体、输出展现媒体
I/O工具与设备、音箱、显示器
4.存储媒体:
存放表示媒体的物理实体
纸、唱片、录像带、录音带、胶片、内存
5.传输媒体:
将表示媒体从一处传送到另一处的物理传输介质
通信电缆、光钎、电磁控件
用于解决“软件危机”
软件工程过程:PDCA(plan、do、check、action):软件规格说明、软件开发、软件确认、软件演进
软件生命周期:软件的定义、开发、运行维护(持续时间最长,花费代价最大)
6个活动阶段:可行性研究与计划制定、需求分析、软件设计(结构设计、数据设计、接口设计、过程设计)、编码、测试、运行维护
三要素:方法、工具、过程
原则:抽象、信息隐蔽性、模块化、局部化、确定性、一致性、完备性、可验证性
结构化分析方法:
结果:分层的数据流图(DFD)、数据字典(DD)、加工逻辑说明
结构化设计方法:
信息流:变换流、事务流
设计原则:分解-协调、自顶向下、信息屏蔽与抽象、一致性、明确性、高内聚低耦合、扇入扇出系数合理、模块规模适当
详细设计:
包括:代码设计、输入设计、输出设计、处理过程设计、用户界面设计、安全控制设计
软件测试:
目的:发现错误
方法:人工测试、机器测试
实施:单元测试(模块:白盒测试法)、组装测试(集成)、确认测试、系统测试
白盒测试:结构测试
黑盒测试:功能测试
程序调试:
找出原因、具体的位置,进行改正
步骤:错误定位、修改设计及代码、回归测试
方法:强行排错法、回溯法、原因排除法(演绎、归纳、二分)
静态调试(主要)、动态调试(辅助)
风险暴露:风险曝光度
测量的是资产的整个安全性风险,它将表示实际损失的可能性与表示大量可能损失的资讯结合到单一数字评估中。
在形式最简单的定量性风险分析中,风险曝光度可透过将风险可能性及影响相乘算出。
风险曝光度(RisjExposure)=错误出现率(风险出现率)*错误造成损失(风险损失)
风险的优先级通常是根据风险暴露设定
数据存储:
栈:由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。先进后出。里面的变量通常是局部变量、函数参数等。
堆:由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
自由存储区:由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。
全局/静态存储区:全局变量和静态变量被分配到同一块内存中。全局变量、静态局部变量、静态全局变量
常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改(当然,你要通过非正当手段也可以修改,而且方法很多)。
代码区:存放函数体的二进制代码。
目的:逻辑上扩充主存容量
用户角度,系统具有的内存空间比实际容量大的多(请求调入功能+置换功能,逻辑上对内存容量进行扩充)
是一个地址空间,进程访问的逻辑地址空间,而不是物理的主存空间
逻辑容量=内存容量+外存容量;运行速度接近内存速度;每位成本接近外存
基础:局部性理论
1.时间局限性:循环操作
2.空间局限性:顺序执行
实现方式:离散分配存储管理方式的基础上
1.请求分页系统:
请求调页、页面置换。置换:以页(固定常)为单位
请求分页的页表机制、缺页中断机构、地址变换机构
2.请求分段系统:
请求调段、分段置换。置换:以段(长度可变,动态分区分配)为单位
请求分段的段表机制、缺段中断机构、地址变化机构
特征:
1.离散性(最基本):内存分配采用离散分配,是基础。
2.多次性:作业被分多次调入内存。以离散性为基础
3.对换性:作业的运过程中换进、换出。以离散性为基础
4.虚拟性(表现):逻辑上扩充内存容量。以多次性、对换性为基础
硬件支持:
1.页表机制:将逻辑地址变换为内存的物理地址。
状态位(存在位):是否已调入内存。访问参考
访问字段:一段时间内被访问的次数,或最近已有多长时间未被访问。置换参考
修改位:调入内存后,是否被修改过。置换该页时是否需要写回外存
外存地址:在外存上的地址,一般是物理块号
2.缺页中断机构:
步骤:保护CPU环境、分析中断原因、转入缺页中断处理程序进行处理、恢复CPU环境
与一般中断区别:
1.一般中断:每执行完一条指令后边去检查中断请求,相应中断;
缺页中断:在指令执行期间,发现要访问的指令、数据不在内存时产生、处理
2.一条指令执行期间,可能产生多次缺页中断
3.地址变换机构
步骤:
1.快表中找到,修改访问位;
2.写指令,修改位改为1;
3.块表无,则到内存查页表找。根据状态位,判断该页是否已调入内存:(1)已调入内存,写入快表;(2)未调入,产生缺页中断,从外存中调入
页面分配:
1.进程分配物理块:
1.进程所需最小物理块数;(指令的格式、功能、寻址方式)
2.分配的物理块数目是固定?可变;
3.不同进程分配物理块数目的算法:平均分配?按进程大小的比例分配
2.页面分配策略、置换策略
分配策略:固定分配策略、可变分配策略
置换策略:全局置换、局部置换
分类:
固定分配局部置换策略:分配给进程的内存空间不变
可变分配全局置换:最容易。OS自身保持一个物理块队列,当进程发生缺页,将OS的空闲物理块队列取出一块分配给进程;OS的空闲物理块用完,需要调出时,可能是系统中任一进程的页
可变分配局部置换
3.分配算法
平均分配算法、按比例分配算法(按进程的大小,向上取整)、考虑优先权的分配算法(按比例+进程优先权)
页面调入策略
预调页策略(顺序计算)、请求调页策略(虚拟存储器多使用)
外存:文件区、对换区(速度高)
1.足够的兑换区空间:全部从对换区调入所需页面
2.兑换区不够:凡不被修改的文件,直接从文件区调入;可能被修改的部分调到对换区
3.UNIX方式:未被运行过的页面从文件区调入;运行后调出的页面,放对换区,下次调入,从对换区调入。允许进程间页面共享
页面置换算法:
算法好坏影响系统的性能,不适当的算法会导致进程发生“抖动”/Thrashing/颠簸/陷阱/Belady。
1.最佳置换算法:性能最好,无法实现。淘汰的页面是永不使用,或在最长时间内不再被访问的。
2.先进先出算法:性能最差,最直观,实际应用很少。淘汰驻留时间最长的页面,对列实现
Belady现象:即陷阱现象。分配的页面数增多,缺页次数反而增加
3.最近最久未使用算法:LRU算法(least recently used)。每个页面一个访问字段,记录一个页面自上次被访问依赖所经历的时间t,淘汰t值最大的
硬件支持:移位寄存器、堆栈
4.Clock置换算法:
简单的Clock置换算法:最近未用算法NUR。被访问过,访问位置为1;淘汰时,若访问位是0,换出,否知,重新置为0,暂不换出,重复执行(FIFO)
改进型Clock置换算法:增加了一个置换代价(修改位)。最近未访问过+未被修改过的页面。
置换优先级:未访问+未修改(不改变访问位) >> 未访问+已修改(访问位=0) 重复执行,直至找到淘汰页
5.最少使用置换算法(LFU:least frequently used):移位寄存器
6.页面缓冲算法(PBA:page buffering algorithm):未修改淘汰链表+已修改淘汰链表,仍留在内存中
7.随机淘汰算法:随机选择某个用户的页面
8.轮转法:循环
影响缺页中断率的因素:分配给左耳的主存块数、页面的大小、调度算法、作业本身的程序编制方法
缺页中断时间=缺页中断服务时间+缺页读入时间(寻道时间、旋转时间、数据传送时间)+进程重新执行时间
主存中的页面数>=总页面数/2
工作集:某段时间间隔内,进程实际要访问的页面的集合
不同时间t,工作集大小不同,包含的页面数也不同
抖动:进程大部分时间用于进行页面的换入/换出,几乎不能完成任何有效工作
内存中引入过多的进程,产生缺页中断的进程一直处于等待状态,就绪队列空
预防:调节多道程序度
1.局部置换策略:某个进程抖动,不会引起其他进程抖动。无法根本上解决问题,磁盘I/O等待,引起其他进程缺页中断处理时间
2.CPU调度程序中引入工作集算法:内存足够容下进程的工作集,才调入新作业
3.L=S准则:产生缺页的平均时间=系统处理缺页的平均时间,CPU利用率最好
4.挂起若干进程:优先权、占用内存大、执行的剩余时间最长的进程
请求分段
分段:信息的逻辑单位,一条指令只可能在一个分段,被传送的一组信息也在一个分段
1.段表机制
存取方式:只执行、只读、允许读写
访问字段:被访问的频繁程度
存在位:是否调入内存
增补位:运行过程中是否进行过动态增长
2.地址变换机构
共享段表:共享进程计数、存取控制字段(不同进程,权限不同)、段号
分段保护:越界检查、存取控制检查、环保护机构(低编号高优先级)、空间模型
缺页数目=置换数目+作业分配的物理块数