1. PID是什么
pid是控制系统中的重要参数,指控制方式,指输出与输入之间的响应方式,英文字母比例积分微分。顾名思义,比例是输出与输入是按一个比例进行的,可调节快慢,通常是改变反馈。积分是输出是输入的积分,就是累加,当输入变化很大输出只按时间长短变化,起到滤波作用,也叫滞后,等效于在输入端并连一个电容。微分是输出只对输入变化部分敏感,特别是输入有尖峰的时候,输出剧烈的响应,但输入不变,不管有多大,输出就为零,因此,也叫超前调节,起加速作用,等效串联一个电容。
2. 如何查找Linux中一些特殊数据类型定义,比如pid_t和uid_t
在sys/types.h头烂段文件中搜索pid_t,可以找卜历喊到下面的语句: #ifndef __pid_t_defined typedef __pid_t pid_t; # define __pid_t_defined #endif 可以看到pid_t类型其实就是__pid_t类型,但是在sys/types.h在头文件中没有找到__pid_t这个类型,这个时候应该怎么办呢?看sys/types.h中包含的头文件,即include语句,从这些语句型野中选择bits/types.h这个头文件,至于为什么这就牵涉到内核的一些类型定义的规则或者叫规律,但是一般按照先sys目录然后再bits目录都没有错。在bits/types.h头文件中可以找到下面的语句: __STD_TYPE __PID_T_TYPE __pid_t; 也就是说__pid_t其实是__PID_T_TYPE类型,而这个类型在哪定义呢?也是先看include语句,选择bits/typesizes.h头文件,也是经验,从这个头文件中就可以找到下面的语句: #define __PID_T_TYPE __S32_TYPE 也就是说__PID_T_TYPE其实是__S32_TYPE类型,如果单从字面意思看的话这应该是一个32位的整形或者其他类型,但是千万不要这么早下结论。而这个类型在bits/typesize.h中找不到,而且这个头文件中也没有include语句,这个时候怎么办呢?还去bits/types.h中找,可以找到下面的语句: #define __S32_TYPE int 至此,终于找到了,pid_t其实就是int类型。在32位机下pid_t是32位的整数,在64位机下pid_t是64位整数,所以看到__S32_TYPE这样的类型千万不要过早地下结论是32位或64位。总结一下,找一个类型,一般的过程就是(比如从xxx.h开始): xxx.h----->sys/xxx.h----->bits/xxx.h----->bits/types.h和bits/typesize.h 或者有时还要去asm目录和asm-generic目录中的头文件中找。还有一种方式就是在linux内核源码中找,但是可能某些同学感觉不爽,哈哈!