DMA:
DMA是一种硬件设备。这种设备的工作原理是这样的:
——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求)
——DMA收到CPU的消息,开始准备。此时CPU把数据源地址、数据目标地址、传输数据量、传输模式等等参数告诉它。(DMA初始化)
——DMA初始化完,向CPU发送消息“借你的总线用一用,我要开始传输数据了!”(总线出借,DMA启动)
——CPU收到消息后,暂时切断自己与总线的联系。DMA开始传输数据。(DMA数据)
——DMA传输完数据之后,向CPU发送消息“搞定了!总线还给你。”(总线归还)
——CPU说:“干得好!老将出马一个顶俩!辛苦了,你先歇着吧。”DMA设备停止。CPU该干啥干啥。
由于是硬件实现的,所以DMA的速度非常快。快到什么程度呢?在DS上,尤其是数据量非常大的时候,相比于CPU当中介,效率能够提高一百万倍以上。
由于DMA的速度是如此之快,所以大量的数据传输,一般都要求使用DMA。
防火墙:
- 过滤进出网络的数据包
- 管理进出网络的访问行为
- 封堵某些禁止的访问行为
- 记录通过防火墙的信息内容和活动
- 对网络攻击进行检测和告警
- 能过滤大部分的危险端口
- 设置严格的外向内的状态过滤规则
- 抵挡大部分的拒绝服务攻击
局限性
● 不能防范不经过防火墙的攻击
● 对新出现的漏洞和攻击方式不能迅速提供有效的防御方法
● 紧急情况下无法做到迅速响应
● 无法防止内部的攻击
● 不能关闭需提供对外服务的端口
● 无法防止利用TCP/IP等协议漏洞的攻击
● 不能防止受病毒感染文件的传输
● 防火墙自身也可能存在安全漏洞
软件著作权虽有其特点,但也符合作品的一般特征,因此它也基本适用《著作权法》第十条的规定。据《著作权法》第十条规定,计算机软件著作权应包括以下权利:
1,发表权;
2,署名权;
3,修改权;
4,保护作品完整权,上述四项为著作权中的人身权利,是每一个作者都有的权利。
5,复制权;
6,发行权;
7,出租权;
8,信息网络传播权;
9,改编权;
10,翻译权;
11,汇编权以及第十七项规定的其他权利,以上权利为计算机软件作者能够享有的财产权,而其他项目如第八项九项十项十一项十三项是不能成为计算机软件的财产权的。
声音信号、音频信号:
软件开发方法
1.结构化方法:
关键词:数据流图(面向数据流);自顶向下,逐层分解;功能的分解与抽象;最早出现
组成:结构化分析,结构化设计、结构化程序设计
适用场合:数据处理领域的问题;但不适合解决大规模的、特别复杂的项目,难以适应需求的变化
2.Jackson方法:
关键词:数据结构
适用场合:
JSP:小规模项目+输入数据结构与输出数据结构有对应关系。
JSD:时序特点较强的系统,包括数据处理系统和一些实时控制系统,以事件为驱动。
3.原型化方法:
关键词:快速开发、需求不清
适用场合:用户需求不清,业务理论不确定,需求经常变化的情况+当系统规模不是很大,也不太复杂时=采用该方法比较好的
5.面向对象开发方法:
关键词:对象(按照人类认识世界的方法和思维)、UML(Unified Modeling Language,统一建模语言)
组成:面向对象分析、面向对象设计、面向对象实现
包括:Booch方法、Coad方法、OMT方法……
软件生存周期模型
1.瀑布模型(waterfall model)
关键词:线性顺序(固定次序)、以文档为驱动、需求很明确
使用场合:需求很明确(以文档为驱动);但缺乏灵活性,无法解决需求不明确、不准确的问题。一种理想的线性开发模式
2.演化模型(evolutionary model)=增量模型(Incremental Model)
关键词:原型、需求模糊、快速构造一个初始可运行版本,逐步演化为最终版本、活动级迭代、交错的线性序列
使用场合:需求缺乏准确认识,需求模糊
先做总体需求分析、设计,编码、测试中逐个增量开发;在上一次增量的基础上提交新的一部分软件;避免使用未成熟技术、经常的客户反馈等方法减少风险
强调每一个增量均发布一个可操作产品。早期的增量是最终产品的“可拆卸”版本,但提供了为用户服务的功能,并且为用户提供了评估的平台
优点:人员分配灵活;适应于需求总是变化
缺点:软件具备开放式体系结构(各个构件逐渐并入已有系统中);容易退化为边做边改模型,对软件整体是去控制;必须做全盘系统分析,这种模型将功能细化后分别开发(防止增量包存在相交)
3.螺旋模型(spiral model)
关键词:瀑布模型+演化模型+风险分析、螺旋周期、过程级迭代
螺旋周期大致与瀑布模型相符:指定计划、风险分析、实施工程、用户评估
每次迭代都提交一个新的完整的软件版本;增加风险识别、风险分析、风险控制,计划性强
使用场合:弥补瀑布模型、演化模型的不足
4.喷泉模型(water fountain model)=增量模型(Incremental Model)
关键词:对象、迭代性(重复多次)、无间隙性(不存在明显边界)
使用场合:面向对象的开发方法,以用户需求为动力,以对象作为驱动的模型;
编译器包括:
词法分析、语法分析、语义分析、中间代码生成、代码优化目标代码生成、符号表管理、出错处理
以中间代码为分水岭,分为机器有关、机器无关。同一种程序语言的编译器,开发出一个前端之后,就可以针对不同的机器开发相应的后端,前后端有机结合就形成了该语言的一个编译器
区别:
1.编译方式下,机器上运行的是与源程序等价的目标程序。源程序、编译程序都不再参与到目标程序的执行过程中。翻译成独立保存的目标程序
2.解释方式下,解释程序、源程序(或某种等价表示)要参与到程序的运行过程中。运行程序的控制权在解释程序。不生成独立的目标程序
互斥:“你用的时候别人都不能用,别人用的时候,你也不能去用”,是一种源于资源共享的间接制约关系。
同步:“我们大家利用一些共同的资源区,大家一起合作,完成某些事情,但是我在干某些小事的时候,可能要等到你做完另一些小事”,是一种源于相互合作的直接制约关系。
互斥的进程间没有必然的联系,属于竞争者关系,谁竞争到资源(的使用权),谁就使用它,直到使用完才归还。就比如洗衣房的洗衣机这个资源,去洗衣的同学并不需要有必然联系,你们可以互不认识,但是谁竞争到洗衣机的使用权,就可以使用,直到洗完走人。
同步的进程间是有必然联系的,即使竞争到使用权,如果合作者没有发出必要的信息,该进程依然不能执行。就比如排队打水,即使排到你了,如果水箱没水了,你就打不了水,说明你和水箱是有着必然联系的,你得从它里面取水,你们是同步关系,你们合作完成“打水”这个过程。
在实现互斥时,P,V操作相当于申请资源和释放资源。
同步与互斥实现的P,V操作虽然都是成对出现。但是互斥的P,V操作出现在同一个进程的程序里,而同步的P,V操作出现在不同进程的程序中。
同步:多个进程在执行次序上的协调,相互等待消息
互斥:对临界资源的使用
虽然P,V操作在每一个进程中都是成对出现的,但不一定是针对一个信号量。互斥信号量的P,V操作总是出现在一个进程中的临界区的前后,而同步信号量的P,V操作总是出现在具有同步关系的两个进程中,需要等待消息的一方执行P操作,发出消息的一方执行V操作。
单缓冲、双缓冲
缓冲区:
- 缓和CPU与I/O设备间速度不匹配的矛盾。
- 减少对CPU的中断频率,放宽对CPU中断响应时间的限制。
- 解决基本数据单元大小(即数据粒度)不匹配的问题。
- 提高CPU和I/O设备之间的并行性。
CPU与I/O设备间速度不匹配,解决方法:
- 釆用硬件缓冲器,但由于成本太高,除一些关键部位外,一般不釆用硬件缓冲器
- 釆用缓冲区(位于内存区域)
单缓冲:
如图5-5所示,在块设备输入时,假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为 C。
由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M十T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C, T)+M。T和M,M和C是不可以并行的