OSIX的一些基本知识.ppt_第1页
OSIX的一些基本知识.ppt_第2页
OSIX的一些基本知识.ppt_第3页
OSIX的一些基本知识.ppt_第4页
OSIX的一些基本知识.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论