OSIX的一些基本知识.ppt

上传人:za****8 文档编号:15256611 上传时间:2020-08-06 格式:PPT 页数:20 大小:257.66KB
返回 下载 相关 举报
OSIX的一些基本知识.ppt_第1页
第1页 / 共20页
OSIX的一些基本知识.ppt_第2页
第2页 / 共20页
OSIX的一些基本知识.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
1,第四章 Linux多线程编程,2,为什么选linux平台?,1、Linux是开源的,技术人员应该多用linux,能学到很多东西。Windows就是个黑箱,用久了就成了他的奴隶。,3、进行嵌入式开发时大多需要Linux平台,希望大家提前熟悉Linux。,2、Linux时下比较流行,使用者日益增多,并且应用软件日益丰富。,3,4、Linux 社群是一个活跃的、乐于助人的团体。假如你的系统崩溃了,或是遇到了其他任何形式的问题,都会有一个庞大的队伍站在你身后,向你伸出援手,积极地帮助你。,5、微软打击盗版,如果你不愿花钱买正版,也许不久你就会投入到Linux的怀抱,因为Linux 是免费的 。,多样化的版本选择,安全,6、Intel提供的一些工具软件,windows平台下的是要收费的,而linux平台下的是免费的。,ubuntu,debian,fedora,Mandriva,4,什么是Linux操作系统?,其实Linux不能算是一个操作系统,严格来讲,Linux只是一个操作系统中的内核。,内核是什么?,内核建立了计算机软件与硬件之间通讯的平台,即通常我们所说的协议层,内核只提供系统服务,比如文件管理、虚拟内存、设备I/O等,与硬件本身无关。,5,真正的linux只是一个系统核心,而各种linux发行版所带的软件多数都是GNU提供的,包括相当重要的系统软件,比如C语言编译器,shell等。就连最常用的ls命令也是来自GNU的 fileutils .,那么我们通常所说的Linux操作系统又是什么?,我们通常所说的Linux,指GNU/Linux,即采用Linux内核的 GNU操作系统。例如,Debian、Red Hat等。,6,GNU:,GNU 的本意代表 “Gnus Not Unix”,虽然如此,它却是一个与 UNIX 完全相容的软件系统。,不同之处在于,GNU 提供的是 free 的软件,而 UNIX 却是一个要付费的软件系统。,GNU 之所以与 UNIX 完全相容,是因为 UNIX 的使用者很多,为了让 UNIX 的使用者在使用 GNU 的时候不会有疏离的感觉,所以 GNU 尽量与UNIX 相容,它的相容只是看起来与用起来像 UNIX 而已, GNU 其实改进了所多 UNIX 的缺点,使它能尽量完美。,GNU 是 Richard Stallman 於 1975 年,在 MIT 所成立的 Free Software Foundation (FSF)中所执行的一项计划。,7,作业:,1、实现基于pthread线程库的线程池。,要求:,(1)编写pthreadpool.h和pthreadpool.c,实现线程池的功能;,(2)将pthreadpool.c编译成静态链接库pthreadpool。,(3)编写一个简单的测试程序测试pthreadpool。,验收标准:,功能正确,使用简单方便,接口合理,8,2、编写文件下载服务的服务器端和客户端程序。,要求:,(1)编写服务器端程序downloadserver,使用方法为: downloadserver path,(2)编写客户端程序downloadclient,使用方法为: downloadclient serverIP path threadcount,验收标准:,功能正确,速度越快越好,9,实施方式:,以组的方式进行,每组5人左右,自由组合,提交内容:,源码,设计报告,测试结果,评分方式:,组长做报告,互相打分,10,4.1 POSIX与Pthreads线程库简介,4.2 Pthreads提供的基本线程操作函数,4.3 线程的互斥与同步,4.4 使用GDB调试线程以及线程的调优,4.5 使用Pthread库的综合实例,本章的主要内容:,11,4.1 POSIX与Pthreads线程库简介,(1)POSIX简介,(2)Pthreads线程库简介,12,Portable Operating System Interface 可移植操作系统接口,(1)POSIX简介,POSIX 标准是由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会)开发 ,是由ANSI(American National Standards Institute,美国国家标准学会 )和ISO(International Organization for Standardization,国际标准化组织 )标准化。,缩写为 POSIX 是为了读音更像 UNIX.,13,POSIX的诞生和Unix的发展是密不可分的.,由于各厂家对Unix的开发各自为政,造成了Unix的版本相当混乱,给软件的可移植性带来很大困难,对Unix的发展极为不利。,为结束这种局面,IEEE开发了POSIX,POSIX在源代码级别上定义了一组最小的Unix(类Unix)操作系统接口。,然而,POSIX 并不局限于 UNIX。许多其它的操作系统,例如 Microsoft Windows NT,Linux等都支持(部分) POSIX 标准.,14,POSIX 现在已经发展成为一个非常庞大的标准族,某些部分正处在开发过程中。,15,(2)其目的是为了提高 UNIX 环境下应用程序源代码级的可移植性。,(3)也就是说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译运行。,(1)POSIX标准定义了操作系统应该为应用程序提供的接口:系统调用集。,总之:,Linux与UNIX这么相象的另一个原因就是他们都遵循POSIX标准。,16,(2)Pthread线程库简介,POSIX 1003.1c定义了处理线程的一系列C语言类型的API函数,提供了一个可移植的多线程库,称为Pthreads。,Pthreads现在已成为Linux操作系统中多线程接口的标准,并且广泛使用在大多数的unix平台上。针对Windows操作系统,Pthreads也存在一个开放源代码的版本,称为pthreads-win32。,如果打算使用C语言开发多线程程序,并且需要一个能比OpenMP提供更多直接控制的可移植的API,那么Pthreads是一个很好的选择。,17,Pthreads库的函数原形定义在中,在编写多线程程序时需要include该头文件。,编译时需要连接libpthread库。(-lpthread),Pthread本来是一套用户级线程库, 但在Linux上实现时, 却使用了内核级线程来完成, 这样的好处是, 可以充分的提高程序的并发性.,POSIX API 没有限定线程应该如何工作,因此对于如何去编制线程程序就留有了很大的余地。,GNU有pth (GNU Portable Threads)是用户级线程。,可以通过_POSIX_THREADS宏测试系统是否支持Pthread. # ifdef _POSIX_THREADS,18,Pthread线程库提供的函数一般都已pthread开头,例如:,19,测试程序运行的时间:,结构timeval的定义为:strut timeval long tv_sec; /* 秒数 */ long tv_usec; /* 微秒数 */ ;,gettimeofday(struct timeval *tp);,The gettimeofday() function shall obtain the current time, expressed as seconds and microseconds since the Epoch, and store it in the timeval structure pointed to by tp.,20,可以看出,使用这种方式计时,精度可达微秒,也就是10-6秒。进行计时的时候,我们需要前后调用两次gettimeofday,然后计算中间的差值.,例:programruntime.c,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!