全部科目 > 多媒体应用设计师 >
2014年上半年 上午试卷 综合知识
第 27 题
知识点 (1)MID   声音   编码   采样   文件格式   信号  
关键词 编码   波形   采样   声音   文件格式   信号  
章/节 移动多媒体终端设备及系统平台  
 
 
以下不属于保存声音波形采样信号编码文件格式是(27)。
 
  A.  MID
 
  B.  WAV
 
  C.  MP3
 
  D.  AU
 
 




 
 
 
知识点讲解
· (1)MID
· 声音
· 编码
· 采样
· 文件格式
· 信号
 
        (1)MID
        MID(Mobile Internet Device,移动互联网设备)是在2008年IDF大会上由英特尔公司推出的一款新概念迷你笔记本计算机。在英特尔公司的定义中,这是一款体积小于笔记本计算机,但大于手机的移动互联网装置。MID与UMPC类似,同样为便于携带的移动PC产品,通过MID,用户可以接入互联网,随时进行信息查询、邮件收发等操作。自MID概念被提出以后,它就一直被业内看作是一款革命性的创新产品,其核心设计思路是将移动多媒体与互联网无缝联接。为此,英特尔公司特别将其定义为比PPC、智能手机屏幕略大并且比UMPC尺寸略小的5~7英寸的产品,而这将是一个全新的移动产品市场,所有符合MID标准的产品将不再带有键盘,而是通过触摸式屏幕实现相关操作。
        不过在广义定义上,也可以把MID产品看作为未来超移动计算机的代表,即屏幕尺寸在10英寸(含10英寸)以下的小型PC都可以被归类为MID产品。
 
        声音
        人能够很好地判定声源的方向。在水平方向上,人们靠声音的相位差及强度差确定声音的方向,因为声音到达两只耳朵的时间或距离有所不同。常见的立体声效果就是靠左、右耳听到在不同位置录制的不同声音实现的,所以会有方向感。现实生活中,当头部转动时,听到的声音的方向就会改变,但在VR系统中,声音的方向与用户头部的运动无关。
 
        编码
               编码过程
               在给定了软件设计规格说明书后,下一步的工作就是编写代码。一般来说,编码工作可以分为四个步骤:
               (1)确定源程序的标准格式,制订编程规范。
               (2)准备编程环境,包括软硬件平台的选择,包括操作系统、编程语言、集成开发环境等。
               (3)编写代码。
               (4)进行代码审查,以提高编码质量。为提高审查的效率,在代码审查前需要准备一份检查清单,并设定此次审查须找到的bug数量。在审查时,要检查软件规格说明书与编码内容是否一致;代码对硬件和操作系统资源的访问是否正确;中断控制模块是否正确等。
               编码准则
               在嵌入式系统中,由于资源有限,且实时性和可靠性要求较高,因此,在开发嵌入式软件时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。也就是说,代码的执行速度要越快越好,系统占用的存储空间要越小越好,软件开发和维护的时间要越少越好。
               具体来说,在编写代码时,需要做到以下几点:
               .保持函数短小精悍。一个函数应该只实现一个功能,如果函数的代码过于复杂,将多个功能混杂在一起,就很难具备可靠性和可维护性。另外,要限制函数的长度,一般来说,一个函数的长度最好不要超过100行。
               .封装代码。将数据以及对其进行操作的代码封装在一个实体中,其他代码不能直接访问这些数据。例如,全局变量必须在使用该变量的函数或模块内定义。对代码进行封装的结果就是消除了代码之间的依赖性,提高了对象的内聚性,使封装后的代码对其他行为的依赖性较小。
               .消除冗余代码。例如,将一个变量赋给它自己,初始化或设置一个变量后却从不使用它,等等。研究表明,即使是无害的冗余也往往和程序的缺陷高度关联。
               .减少实时代码。实时代码不但容易出错、编写成本较高,而且调试成本可能更高。如果可能,最好将对执行时间要求严格的代码转移到一个单独的任务或者程序段中。
               .编写优雅流畅的代码。
               .遵守代码编写标准并借助检查工具。用自动检验工具寻找缺陷比人工调试便宜,而且能捕捉到通过传统测试检查不到的各种问题。
               编码技术
                      编程规范
                      在嵌入式软件开发过程中,遵守编程规范,养成良好的编程习惯,这是非常重要的,将直接影响到所编写代码的质量。
                      编程规范主要涉及的三方面内容:
                      .命名规则。从编译器的角度,一个合法的变量名由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。但是从程序员的角度,一个好的名字不仅要合法,还要载有足够的信息,做到“见名知意”,并且在语意清晰、不含歧义的前提下,尽可能地简短。
                      .编码格式。在程序布局时,要使用缩进规则,例如变量的定义和可执行语句要缩进一级,当函数的参数过长时,也要缩进。另外,括弧的使用要整齐配对,要善于使用空格和空行来美化代码。例如,在二元运算符与其运算对象之间,要留有空格;在变量定义和代码之间要留有空行;在不同功能的代码段之间也要用空行隔开。
                      .注释的书写。注释的典型内容包括:函数的功能描述;设计过程中的决策,如数据结构和算法的选择;错误的处理方式;复杂代码的设计思想等。在书写注释时要注意,注释的内容应该与相应的代码保持一致,同时要避免不必要的注释,过犹不及。
                      性能优化
                      由于嵌入式系统对实时性的要求较高,因此一般要求对代码的性能进行优化,使代码的执行速度越快越好。以算术运算为例,在编写代码时,需要仔细地选择和使用算术运算符。一般来说,整数的算术运算最快,其次是带有硬件支持的浮点运算,而用软件来实现的浮点运算是非常慢的。因此,在编码时要遵守以下准则:
                      .尽量使用整数(char、short、int和long)的加法和减法。
                      .如果没有硬件支持,尽量避免使用乘法。
                      .尽量避免使用除法。
                      .如果没有硬件支持,尽量避免使用浮点数。
                      下图是一个例子,其中两段代码的功能完全一样,都是对一个结构体数组的各个元素进行初始化,但采用两种不同的方法来实现。下图(a)采用数组下标的方法,在定位第i个数组元素时,需要将i乘以结构体元素的大小,再加上数组的起始地址。下图(b)采用的是指针访问的方法,先把指针fp初始化为数组的起始地址,然后每访问完一个数组元素,就把fp加1,指向下一个元素。在一个奔腾4的PC上,将这两段代码分别重复10 700次,右边这段代码需要1ms,而左边这段代码需要2.13ms。
                      
                      算术运算性能优化的例子
 
        采样
        采样是指每隔一定时间间隔,取模拟信号的当前值作为样本,该样本代表了模拟信号在某一时刻的瞬时值。这样,就变连续的模拟信息为离散信号。采样技术依据奈奎斯特取样定理:如果采样速率大于模拟信号最高频率的2倍,则可以用得到的样本空间恢复原来的模拟信号。
 
        文件格式
        常见的图形/图像文件有以下几种:
        (1)BMP:PC上最常用的位图格式,有压缩和不压缩两种形式,该格式可表现2~24位的色彩,分辨率也可从480×320至1024dpi× 768dpi。
        (2)DIB(Device Independent Bitmap):描述图像的能力基本与BMP相同,并且能运行于多种硬件平台,只是文件较大。
        (3)PCP(PC Paintbrush):由Zsoft公司创建的一种经过压缩且节约磁盘空间的PC位图格式,它最高可表现24位图形(图像)。
        (4)DIF(Drawing Interchange Format):AutoCAD中的图形文件,它以ASCII(American Standard Code for Information Interchange,美国国家信息交换标准码)方式存储图形,表现图形在尺寸大小方面十分精确。
        (5)WMF:Microsoft Windows图元文件,具有文件短小、图案造型化的特点。该类图形比较粗糙,并只能在Microsoft Office中调用编辑。
        (6)GIF(Graphics Interchange Format):在各种平台的各种图形处理软件上均可处理的经过压缩的图形格式。缺点是存储色彩最高只能达到256种,由于存在这种限制,目前除了Web网页还在使用它外,其他场合已很少使用了。
        (7)JPG(Joint Photographics Expert Group):可以大幅度地压缩图形文件的一种图形格式。对于同一幅画面,JPG格式存储的文件是其他类型图形文件的1/10~1/20,而且色彩数最高可达到24位,所以它应用相当广泛。
        (8)TIF:文件体积庞大,但存储信息量亦巨大,细微层次的信息较多,有利于原稿阶调与色彩的复制。该格式有压缩和非压缩两种形式,最高支持的色彩数可达1.6×107种。
        (9)EPS(Encapsulated PostScript):用PostScript语言描述的ASCII图形文件,在PostScript图形打印机上能打印出高品质的图形(图像),最高能表示32位图形(图像)。
        (10)PSD(Photoshop Standard):Photoshop中的标准文件格式,专门为Photoshop而优化的格式。
        (11)CDR(CorelDraw):CorelDraw的文件格式。另外,CDX是所有CorelDraw应用程序均能使用的图形(图像)文件,是发展成熟的CDR文件。
        (12)IFF(Image File Format):用于大型超级图形处理平台,如AMIGA机,好莱坞的特技大片多采用该图形格式处理。图形(图像)效果,包括色彩纹理等能逼真地再现原景。当然,该格式耗用的内存外存等的计算机资源也十分巨大。
        (13)TGA(Tagged Graphic):是Truevision公司为其显示卡开发的图形文件格式,创建时期较早,最高色彩数可达32位。VDA、PIX、WIN、BPX、ICB等均属其旁系。
        (14)PCD(Photo CD):由KODAK公司开发,其他软件系统对其只能读取。
        (15)MPT(Macintosh Paintbrush)或MAC:Macintosh机所使用的灰度图形(图像)模式,在Macintosh Paintbrush中使用,其分辨率只能是720 × 567dpi。
        (16)SWF(Flash):Flash是Adobe公司制定的一种应用于Internet的动画格式,它是以矢量图作为基本的图像存储形式的。
        除此之外,Macintosh机专用的图形(图像)格式还有PNT、PICT、PICT2等。
 
        信号
        任务间同步的另一种方式是异步信号。在两个任务之间,可以通过相互发送信号的方式,来协调它们之间的运行步调。
        所谓的信号,指的是系统给任务的一个指示,表明某个异步事件已经发生了。该事件可能来自于外部(如其他的任务、硬件或定时器),也可能来自于内部(如执行指令出错)。异步信号管理允许任务定义一个异步信号服务例程ASR(Asynchronous Signal Routine),与中断服务程序不同的是,ASR是与特定的任务相对应的。当一个任务正在运行的时候,如果它收到了一个信号,将暂停执行当前的指令,转而切换到相应的信号服务例程去运行。不过这种切换不是任务之间的切换,因为信号服务例程通常还是在当前任务的上下文环境中运行的。
        信号机制与中断处理机制非常相似,但又各有不同。它们的相同点是:
        .都具有中断性:在处理中断和异步信号时,都要暂时地中断当前任务的运行;
        .都有相应的服务程序;
        .都可以屏蔽响应:外部硬件中断可以通过相应的寄存器操作来屏蔽,任务也能够选择不对异步信号进行响应。
        信号机制与中断机制的不同点是:
        .中断是由硬件或特定的指令产生,而信号是由系统调用产生;
        .中断触发后,硬件会根据中断向量找到相应的处理程序去执行;而信号则通过发送信号的系统调用来触发,但系统不一定马上对它进行处理;
        .中断处理程序是在系统内核的上下文中运行,是全局的;而信号处理程序是在相关任务的上下文中运行,是任务的一个组成部分。
        实时系统中不同的任务经常需要互斥地访问共享资源。当任务试图访问资源时被正使用该资源的其他任务阻塞,可能出现优先级反转的现象,即当高优先级任务企图访问已被某低优先级任务占有的共享资源时,高优先级任务必须等待直到低优先级任务释放它占有的资源。如果该低优先级任务又被一个或多个中等优先级任务阻塞,问题就更加严重。由于低优先级任务得不到执行就不能访问资源、释放资源。于是低优先级任务就以一个不确定的时间阻塞高优先级的任务,导致系统的实时性没有保障。下图为是一个优先级反转的示例。
        
        一个优先级反转的示例
        如上图所示,系统存在任务1、任务2、任务3(优先级从高到低排列)和资源R。某时,任务1和任务2都被阻塞,任务3运行且占用资源R。一段时间后,任务1和任务2相继就绪,任务1抢占任务3运行,由于申请资源R失败任务1被挂起。由于任务2的优先级高于任务3,任务2运行。由于任务3不能运行和释放资源R,因此任务1一直被阻塞。极端情况下,任务1永远无法运行,处于饿死状态。
        解决优先级反转问题的常用算法有优先级继承和优先级天花板。
               优先级继承协议
               L. Sha、R. Rajkumar和J. P. Lehoczky针对资源访问控制提出了优先级继承协议(Priority Inheritance Protocol,PIP)。
               PIP协议能与任何优先级驱动的抢占式调度算法配合使用,而且不需要有关任务访问资源情况的先验知识。优先级继承协议的执行方式是:当低优先级任务正在使用资源,高优先级任务抢占执行后也要访问该资源时,低优先级任务将提升自身的优先级到高优先级任务的级别,保证低优先级任务继续使用当前资源,以尽快完成访问,尽快释放占用的资源。这样就使高优先级任务得以执行,从而减少高优先级任务被多个低优先级任务阻塞的时间。低优先级任务在运行中,继承了高优先级任务的优先级,所以该协议被称作优先级继承协议。
               由于只有高优先级任务访问正被低优先级任务使用的资源时,优先级继承才会发生,在此之前,高优先级任务能够抢占低优先级任务并执行,所以优先级继承协议不能防止死锁,而且阻塞是可以传递的,会形成链式阻塞。另外,优先级继承协议不能将任务所经历的阻塞时间减少到尽可能小的某个范围内。最坏情况下,一个需要μ个资源,并且与v个低优先级任务冲突的任务可能被阻塞min(μ,v)次。
               优先级冲顶协议
               J. B. Goodenough和L. Sha针对资源访问控制提出了优先级冲顶协议(Priority Ceiling Protocol,PCP)。
               PCP协议扩展了PIP协议,能防止死锁和减少高优先级任务经历的阻塞时间。该协议假设所有任务分配的优先级都是固定的,每个任务需要的资源在执行前就已确定。每个资源都具有优先级冲顶值,等于所有访问该资源的任务中具有的最高优先级。任一时刻,当前系统冲顶值(current priority ceiling)等于所有正被使用资源具有的最高冲顶值。如果当前没有资源被访问,则当前系统冲顶值等于一个不存在的最小优先级。当任务试图访问一个资源时,只有其优先级高于当前系统冲顶值,或其未释放资源的冲顶值等于当前系统冲顶值才能获得资源,否则会被阻塞。而造成阻塞的低优先级任务将继承该高优先级任务的优先级。
               已经证明,PCP协议的执行规则能防止死锁,但其代价是高优先级任务可能会经历优先级冲顶阻塞(Priority ceiling blocking)。即高优先级任务可能被一个正使用某资源的低优先级任务阻塞,而该资源并不是高优先级任务请求的。这种阻塞又被称作回避阻塞(avoidance blocking),意思是因为回避死锁而引起的阻塞。即使如此,在PCP协议下,每个高优先级任务至多被低优先级任务阻塞一次。使用PCP协议后,能静态分析和确定任务之间的资源竞争,计算出任务可能经历的最大阻塞时间,从而能分析任务集合的可调度性。在PCP协议下,高优先级任务被阻塞时会放弃处理器,因此,访问共享资源的任务可能会产生4次现场切换。



更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2023 All Rights Reserved
软考在线版权所有