POSIX的一些基本知识

上传人:平*** 文档编号:47517530 上传时间:2018-07-02 格式:PPT 页数:20 大小:160.36KB
返回 下载 相关 举报
POSIX的一些基本知识_第1页
第1页 / 共20页
POSIX的一些基本知识_第2页
第2页 / 共20页
POSIX的一些基本知识_第3页
第3页 / 共20页
POSIX的一些基本知识_第4页
第4页 / 共20页
POSIX的一些基本知识_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《POSIX的一些基本知识》由会员分享,可在线阅读,更多相关《POSIX的一些基本知识(20页珍藏版)》请在金锄头文库上搜索。

1、第四章 Linux多线程编程1为什么选linux平台?1、Linux是开源的,技术人员应该多用linux ,能学到很多东西。Windows就是个黑箱, 用久了就成了他的奴隶。3、进行嵌入式开发时大多需要Linux平台,希 望大家提前熟悉Linux。2、Linux时下比较流行,使用者日益增多,并 且应用软件日益丰富。24、Linux 社群是一个活跃的、乐于助人的团体 。假如你的系统崩溃了,或是遇到了其他任何 形式的问题,都会有一个庞大的队伍站在你身 后,向你伸出援手,积极地帮助你。 5、微软打击盗版,如果你不愿花钱买正版, 也许不久你就会投入到Linux的怀抱,因为 Linux 是免费的 。多样

2、化的版本选择 安全6、Intel提供的一些工具软件,windows平 台下的是要收费的,而linux平台下的是免 费的。ubuntu debian fedora Mandriva 3什么是Linux操作系统?其实Linux不能算是一个操作系统,严格来讲, Linux只是一个操作系统中的内核。内核是什么?内核建立了计算机软件与硬件之间通讯的平台, 即通常我们所说的协议层,内核只提供系统服务 ,比如文件管理、虚拟内存、设备I/O等,与硬 件本身无关。4真正的linux只是一个系统核心,而各种linux发行版 所带的软件多数都是GNU提供的,包括相当重要的 系统软件,比如C语言编译器,shell等。

3、就连最常 用的ls命令也是来自GNU的 fileutils . 那么我们通常所说的Linux操作系统又是什么?我们通常所说的Linux,指GNU/Linux,即采用 Linux内核的 GNU操作系统。例如,Debian、 Red Hat等。5GNU:GNU 的本意代表 “Gnus Not Unix”,虽然如此, 它却是一个与 UNIX 完全相容的软件系统。 不同之处在于,GNU 提供的是 free 的软件,而 UNIX 却是一个要付费的软件系统。 GNU 之所以与 UNIX 完全相容,是因为 UNIX 的 使用者很多,为了让 UNIX 的使用者在使用 GNU 的时候不会有疏离的感觉,所以 GN

4、U 尽量与 UNIX 相容,它的相容只是看起来与用起来像 UNIX 而已, GNU 其实改进了所多 UNIX 的缺点 ,使它能尽量完美。 GNU 是 Richard Stallman 於 1975 年,在 MIT 所 成立的 Free Software Foundation (FSF)中所执行 的一项计划。 6作业:1、实现基于pthread线程库的线程池。 要求:(1)编写pthreadpool.h和pthreadpool.c, 实现线程池的功能;(2)将pthreadpool.c编译成静态链接库 pthreadpool。(3)编写一个简单的测试程序测试 pthreadpool。验收标准:

5、功能正确使用简单方便接口合理72、编写文件下载服务的服务器端和客户端程序。要求:(1)编写服务器端程序downloadserver,使 用方法为: downloadserver path(2)编写客户端程序downloadclient,使用方 法为: downloadclient serverIP path threadcount验收标准:功能正确速度越快越好8实施方式:以组的方式进行,每组5人左右,自由组合提交内容:源码设计报告测试结果评分方式:组长做报告互相打分94.1 POSIX与Pthreads线程库简介4.2 Pthreads提供的基本线程操作函数4.3 线程的互斥与同步4.4 使用

6、GDB调试线程以及线程的调优4.5 使用Pthread库的综合实例本章的主要内容:104.1 POSIX与Pthreads线程库简介(1)POSIX简介(2)Pthreads线程库简介11Portable Operating System Interface可移植操作系统接口(1)POSIX简介POSIX 标准是由IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师 协会)开发 ,是由ANSI(American National Standards Institute,美国国家标准学会 )和 ISO(Internatio

7、nal Organization for Standardization,国际标准化组织 )标准化。缩写为 POSIX 是为了读音更像 UNIX. 12POSIX的诞生和Unix的发展是密不可分的. 由于各厂家对Unix的开发各自为政,造成了Unix 的版本相当混乱,给软件的可移植性带来很大困 难,对Unix的发展极为不利。 为结束这种局面,IEEE开发了POSIX,POSIX 在源代码级别上定义了一组最小的Unix(类Unix) 操作系统接口。 然而,POSIX 并不局限于 UNIX。许多其它的 操作系统,例如 Microsoft Windows NT, Linux等都支持(部分) POSI

8、X 标准. 13POSIX 现在已经发展成为一个非常庞大的标 准族,某些部分正处在开发过程中。 14(2)其目的是为了提高 UNIX 环境下应用程序源 代码级的可移植性。(3)也就是说,为一个POSIX兼容的操作系统 编写的程序,应该可以在任何其它的POSIX操作 系统(即使是来自另一个厂商)上编译运行。(1)POSIX标准定义了操作系统应该为应用 程序提供的接口:系统调用集。总之:Linux与UNIX这么相象的另一个原因就是他们 都遵循POSIX标准。15(2)Pthread线程库简介POSIX 1003.1c定义了处理线程的一系列C语言类 型的API函数,提供了一个可移植的多线程库,称 为

9、Pthreads。Pthreads现在已成为Linux操作系统中多线程接口 的标准,并且广泛使用在大多数的unix平台上。针 对Windows操作系统,Pthreads也存在一个开放源 代码的版本,称为pthreads-win32。如果打算使用C语言开发多线程程序,并且需要一 个能比OpenMP提供更多直接控制的可移植的API ,那么Pthreads是一个很好的选择。 16Pthreads库的函数原形定义在中,在 编写多线程程序时需要include该头文件。编译时需要连接libpthread库。(-lpthread)Pthread本来是一套用户级线程库, 但在Linux上 实现时, 却使用了内

10、核级线程来完成, 这样的好 处是, 可以充分的提高程序的并发性. POSIX API 没有限定线程应该如何工作,因此对 于如何去编制线程程序就留有了很大的余地。GNU有pth (GNU Portable Threads)是用户级线程。 可以通过_POSIX_THREADS宏测试系统是否支持 Pthread. # ifdef _POSIX_THREADS 17前缀缀功能集合pthread_线线程或子线线程pthread_attr_线线程对对象属性pthread_mutex_互斥量pthread_mutexattr_互斥量对对象属性pthread_cond_条件变变量pthread_condatt

11、r_条件变变量属性Pthread线程库提供的函数一般都已pthread开头 ,例如:18测试程序运行的时间:结构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. 19可以看出,使用这种方式计时,精度可达微秒, 也就是10-6秒。进行计时的时候,我们需要前后调 用两次gettimeofday,然后计算中间的差值. 例:programruntime.c20

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件

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