下载此文档

培训资料:Linux编程知识.ppt


文档分类:IT计算机 | 页数:约34页 举报非法文档有奖
1/34
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/34 下载此文档
文档列表 文档介绍
Linux编程知识
主要内容
WARE的比较
Linux程序的常见概念
Linux Make的使用
Linux编程的风格
变量类型:Linux的更直观:u_int32_t VS ULONG
变量命名:Linux采用全小写,简短,WARE;采用的是匈牙利命名法,容易理解,但长度较长
控制块{}WARE是强制要求if、else等后面必须有{},不容易出错;而Linux是能不用则不用,且尽量多容纳有效行
函数返回值:功能性的函数,Linux一般是0返回正确,WARE是VOS_OK正确,VOS_ERR错误
常数的使用:Linux使用常数的地方较多,WARE是提倡用有意义的宏来代替,能够顾名思义
...
编译器,支持C99,可变宏、更多的关键字,等等,WARE仅支持ANSI C89
总之,Linux是天才们的编码,WARE是普通人的编码,更追求稳定
Linux程序的常见概念(一)
进程:亦可称为任务。Linux下的进程互不影响,各自使用独立的空间,由CPU、OS共同负责内存保护、WARE使用相同的地址空间,能够互相访问,因此也会发生踩内存的现象。
COMWARE下启动任务是VOS_T_Create函数,通常是任务A调用该函数来启动B,两者代码通常不相同。
Linux是fork函数来启动子进程。通常返回值PID来区分:
1、返回值是0,则是子进程,子进程可以通过getpid来获取自身PID
2、返回值是-1,表明创建任务出错
3、其它,则是父进程,并得到了子进程的PID
Linux程序的常见概念(一)
fork代码常见形式:
...
if ( (pid = fork()) == 0 ) {
/* Child process */
}
else if (pid == -1) {
/* Error Handler */
}
else {
/* Parent process */
}
...
Linux程序的常见概念(二)
线程:可以说是轻量级的进程。创建一个线程比创建一个进程的开销少得多。同一个进程下的线程可以共享父进程的所有资源,很方便地实现线程间的通讯。
COMWARE不支持。Linux下用得也较少。Windows下用得最多。
线程通常是用来UI和Function分离:主线程负责从图形化界面上接收用户的数据,并将其传给对应的子线程。子线程负责接收数据并计算,并将结果返回给主线程,由主线程显示给用户。
好处:避免了长时间的计算,用户无法进行控制。缺点:编码时需要考虑同步、互斥的问题。
Miniware短时间内不会用到线程。有兴趣的可参考pthread_create
Linux程序的常见概念(三)
共享链接库:共享一份代码,数据各自独立,更常用的是COW-Copy on Write
与可执行文件的区别:不能直接运行,不需要main函数
编译共享链接库时,需要使用-fPIC和-shared
别的程序要使用,编码时需要提供头文件,声明各函数;链接时,需要-L给出链接库的目录以及-l给出链接库的名称
程序运行时,由OS负责装入
-fPIC:Position-Independent Code:Access all constant addresses through a Global Offset Table
与静态库的区别:静态库的代码是编译链接时使用,而且用哪些链接哪些,使用一次链接一次,编译链接后直接存在于可执行文件中,类似于C语言中的#define;共享链接库是运行时加载,链接时放在可执行文件的是文件名和代码起始地址(或函数名),类似于C语言的函数调用
Linux程序的常见概念(三)
对于Miniware来说,;,放在ram fs,执行时才会用到。
COMWARE没有共享链接库的说法。
Linux还可以动态加载共享链接库,但需要程序员的额外编码。避免了一开始就加载,但后续用不到的浪费(比如if分支加载不同的动态链接库)。
Linux下是dlopen、dlsym;
Miniware基本不需要用到该特性。
Linux程序的常见概念(四)
信号量:用于访问全局资源的互斥、进程间同步的手段。
本质是非负的整数计数器。
使用者在访问全局资源前,首先需要去获取一个信号,如果计数器大于0,则使用者可以获取成功;否则的话,使用者的任务将会被挂起;
获取信号量成功后,可以开始访问全局资源;访问结束后,应当及时释放,使得在其上面阻塞的任务能够尽快得到调度。
如果计数器初始化为1,且只有两个竞争者,则是互斥的典型现象。
Linux程序的常见概念(四)
sem_ini

培训资料:Linux编程知识 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数34
  • 收藏数0 收藏
  • 顶次数0
  • 上传人q1188830
  • 文件大小503 KB
  • 时间2017-08-18