《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文

上传人:zhuma****mei1 文档编号:134105194 上传时间:2020-06-02 格式:DOC 页数:45 大小:283.50KB
返回 下载 相关 举报
《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文_第1页
第1页 / 共45页
《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文_第2页
第2页 / 共45页
《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文_第3页
第3页 / 共45页
《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文_第4页
第4页 / 共45页
《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文》由会员分享,可在线阅读,更多相关《《多线程同步双缓冲技术的研究与实现》-公开DOC·毕业论文(45页珍藏版)》请在金锄头文库上搜索。

1、南昌航空大学学士学位论文绪论11.1课题背景11.2课题研究的意义21.3多线程技术的概述、发展历程及前景21.3.1多线程的概述21.3.2多线程的发展及展望31 本文的工作和任务82 系统的总体设计92.1 系统模块分析92.2 系统设计思想103 基本介绍103.1声音采集103.2采样的位数103.3采样的频率113.4系统的相关函数113.5实时录音播放程序流程:133.6 MFC多线程编程134 关键技术154.1多线程同步技术154.2双缓存技术185 系统的实现195.1系统的结构195.2 控制模块设计195.3系统实现的框图196 系统测试20附录29绪论 1.1课题背景随

2、着计算机硬件技术的迅速发展和现代社会对信息速度要求的提高,系统设计师们面临着在丰富系统功能和提高性能的同时,降低系统成本和功耗的问题。面对来自市场的压力,系统供应商希望能够持续增加系统的处理能力;处理器厂商希望提供具有更强处理能力的CPU。如何在这种情况下提高处理器的总体处理能力是一个积蓄解决的问题。提高处理器性能的通常办法是提高主频,但这样做会增加处理器的功耗和设计的复杂度,搞频率所带来的高热量会导致芯片运行不稳定,且处理器发展到今天,主频的提升空间已经不大。多线程技术成为提高计算机的系统性能的主要方案。实施嵌入式领域的迅速发展,对多线程要求越来越高。现在基于WEB的很多应用都要求多线程同步

3、进行;尤其是对于网网络和服务器方面,对于I/O的处理能力有很高的要求,如高端安全gateway、VPN、IPSec扽好,需要大量的线程同步技术。这些领域对性能要求的增长速度远非单个CPU处理能力所力及的。所有这些都要求处理器朝着多核多线程的同步技术的方向发展。在嵌入式领域,多线程同步技术应用对于提高各种多媒体、网络及通信产品的性能和可扩展性独有重要的意义。本文在这里通过多线程技术和双缓存技术实现一个实时录音、实时回放的系统,同时兼容了录音到文件、从文件播放的功能。1.2课题研究的意义随着科技技术的不断发现,网络越来越发达、方便,网民数量越来越多,除了电脑用户外,手机网民的数量在急剧增长,因此相

4、应的需求也越来越多。通过多线程可以使CPU的能力越来越高,电脑或者手机的应用程序的资源的利用情况都可以得到改善,因为其主要优势在于充分利用了CPU的空闲时间片,可以用尽可能少的时间来对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。更为重要的是,由于同一进程的所有线程是共享同一内存,所以不需要特殊的数据传送机制,不需要建立共享存储区或共享文件,从而使得不同任务之间的协调操作与运行、数据的交互、资源的分配等问题更加易于解决。这使得多线程技术在未来是热门技术和话题。1.3多线程技术的概述、发展历程及前景1.3.1多线程的概述在计算机编程中,一个基本的概念就是同时

5、对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。中断对那些实时性很强的任务来说是很有必要的。但对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更迅速地响应用户的请求。最开始,线程只是用于分配单个处理器的处理时间的一种工具。但假如操作系统本身支持多个处理器,那么每个线程都可分配给一个不同的处理器,真正进入“并

6、行运算”状态。从程序设计语言的角度看,多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器。程序在逻辑意义上被分割为数个线程;假如机器本身安装了多个处理器,那么程序会运行得更快,毋需作出任何特殊的调校。根据前面的论述,大家可能感觉线程处理非常简单。但必须注意一个问题:共享资源!如果有多个线程同时运行,而且它们试图访问相同的资源,就会遇到一个问题。举个例子来说,两个线程不能将信息同时发送给一台打印机。为解决这个问题,对那些可共享的资源来说(比如打印机),它们在使用期间必须进入锁定状态。所以一个线程可将资源锁定,在完成了它的任务后,再解开(释放)这个锁,使其他线程可以接着使用同样的

7、资源。 多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 线程和进程的区别在于,子进程和父进程有不同的代

8、码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文.多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定. 线程的运行中需要使用计算机的内存资源和CPU。1.3.2多线程的发展及展望在PC的早期,有人曾经提倡未来应该朝多任务的方向前进,但是大多数的人还是很迷惑:在一个单使用者的个人计算机上,多任务有什么用呢?好了,最后事实表示即使是不知道这一概念的使用者也都需要多任务的。1 Dos下的多任务 在最初PC上的Intel 8088微处理器并不是为多任务而设计的,部分原因是内存管理不够强。当启动和结束多个程序时,多任务的操作系统通常需要移动内存块以收集空

9、闲内存。在8088上是不可能透明于应用系统来做到这一点的。DOS本身对多任务没有太大的帮助,它的设计目的是尽可能小巧,并且与独立于应用程序之外,因此,除了加载程序以及对程序提供文件系统的存取功能,它几乎没有提供任何支持。 不过,有创意的程序写作者仍然在DOS的早期就找到了一种克服这些缺陷的方法,大多数是使用常驻(TSR:terminate-and-stay-resident)程序。有些TSR,比如背景打印队列程序等,透过拦截硬件时钟中断来执行真正的背景处理。其它的TSR,诸如SideKick等弹出式工具,可以执行某种型态的工作切换暂停目前的应用程序,执行弹出式工具。DOS也逐渐有所增强以便提供

10、对TSR的支持。 一些软件厂商试图在DOS之上架构出工作切换或者多任务的外壳程序(shell)(诸如Quarterdeck的DesqView),但是在这些环境中,仅有其中一个占据了大部分市场,当然,这就是Windows。2 非优先权式的多任务进当Microsoft在1985年发表Windows 1.0时,它是最成熟的解决方案,目的是突破DOS的局限。Windows在实际模式下执行。但是即使这样,它已可以在物理内存中移动内存块。这是多任务的前提,虽然移动的方法尚未完全透明于应用程序,但是几乎可以忍受了。 在图形窗口环境中,多任务比在一种命令列单使用者操作系统中显得更有意义。例如,在传统的命令列U

11、NIX中,可以在命令列之外执行程序,让它们在背景执行。然而,程序的所有显示输出必须被重新转向到一个文件中,否则输出将和使用者正在做的事情混在一起。 窗口环境允许多个程序在相同屏幕上一起执行,前后切换非常容易,并且还可以快速地将数据从一个程序移动到另一个程序中。例如,将绘图程序中建立的图片嵌入由文书处理程序编辑的文本文件中。在Windows中,以多种方式支持数据转移,首先是使用剪贴簿,后来又使用动态数据交换(DDE),而现在则是透过对象连结和嵌入(OLE)。进入21世纪,人们的生活方式正在发生巨大的改变。人与人之间的交互越来越依赖于通讯网络。在这样的发展趋势下,通讯基础设施建设的发展就显得尤为重

12、要。需求带来发展,而发展又是基于技术的。在目前的通讯网络架构中,骨干网的发展是最快的,现代光网络为骨干层提供了强大的传输能力,已经可以满足当前甚至将来一段时间的发展需要。在基本的用户接入层,光纤接入、ADSL接入、DDN等接入方式也基本满足了当前接入层的发展需要。然而,在从用户接入到骨干网之间的通讯基础设施建设,却面临着巨大的挑战。 一方面,越来越多的接入用户以及越来越多样化的业务需求使得各种网络设备必须提供足够的吞吐量,另一方面,由于网络应用不断更新和变化,新业务不断涌现,又要求服务提供商能快速地满足用户的需求,增多盈利模式,从而巩固和提高竞争力。在这样的背景下,传统的处理器在这些方面越来越

13、显得力不从心。 对于传统的单核处理器来说,其性能的提高主要依赖于主频的提高。但这无论在性价比还是性能功耗比方面都遭遇到令市场无法接受的发展瓶颈。 从图1可以看出,在性能提升方面,处理器主频,内存访问速度以及I/O访问速度的发展是十分不平衡的。处理器的主频每两年就要翻一番,而内存访问的速度要每六年才能提高一倍,而I/O访问的速度要提高一倍的话需要八年的时间。所以处理器与I/O的发展不均衡已经产生了很大的瓶颈,单纯依靠提高处理器主频来提升整个系统的性能已经不可行,反而会造成投资的浪费,因为大部分时间CPU都在等待内存或者I/O访问的返回才能继续下一步的工作。高频处理器的设计对工艺要求非常高,生产难

14、道大,成品率也较低,因此造成生产的成本据高不下。所以市场上最新推出的高频单核处理器往往性能价格比是较低的。 另外,在系统设计时,功耗也是必须考虑的问题。实际上,性能功耗比对于整个系统的设计非常重要。相对于其提供的性能,高频的单核处理器在功耗上也是不适合大量集中式使用的。笔者曾经亲身体验过某大公司的刀片式服务器机房,成百上千片的Pentium-M刀片板同时运行,使得整个机房有如烤箱一般。 网络处理器是更加接近ASIC的处理器,期望能够达到接近ASIC的性能,同时又提供灵活的编程能力。在不是十分复杂的网络应用中,网络处理器是比较适合的。但是如果应用复杂的话,由于受限于一定的微码空间,网络处理器就比

15、较被动了。当今网络应用的需求变化速度是非常快的,基本上以三个月的速度在更新,这也给采用网络处理器的产品在响应需求方面提出了挑战。加上微码编程有一定的技术门槛,缺乏相关经验的研发团队在设计初期需要花费更多的时间。总的来说,使用网络处理器设计整个系统会从一定程度上降低整个系统对于应该修改或者升级需求方面的响应速度,固定大小的微码空间也限制了复杂应用的设计。 从用户角度看,他们真正需要的是一种编程简单,针对市场需求升级容易,而且能提供强大吞吐量的处理器产品。RMI公司最新推出的XLR系列多核多线程处理器就是在这样的一个市场需求的背景下诞生的。 图1:关键的性能瓶颈:CPU主频、内存访问速度以及I/O访问速度之间的发展差距RMI公司总裁Raza表示:“当时两大因素促使我有了再创业意愿:一是信息基础设施变得日益重要;二是大公司的反应没有小公司快,尤其是2002年市场不景气时,大公司不愿意在新项目研发上花钱。这两点结合在一起,就给了我们一个难得的市场机会。” Raza接着说:“我们的XLR系列线程处理器采用SoC(系统级芯片)技术,将网络连接、负载平衡、安全、XML等功能集成在一个芯片上,采用台积电(TSMC)90纳米CMOS工艺制造,集成了3.33亿个晶体管,比英特尔的处理器复杂得多,处理能力也高出十倍。” XLR的设计非常复杂,高端的XLR732具有8个核,每个核具有四个v

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号