id和pid的对应表

嘿,昨天我帮邻居老王看他的车。
当我按下他的旧奥迪车钥匙时,仪表板上的红灯亮起,表明 LIN 总线通信出现问题。
这让我想起了我在大学里组装电脑并向老板学习 Linux 进程管理的情景。
当时我发现PID很有趣。
后来在做项目的时候,遇到了分布式系统中的PID。
每一次我都感觉自己有了新的认识。

LIN总线中的PID真的很有趣。
将6 位ID进行异或,然后反转并进行异或,就成为PID。
我记得用 Python 编写了一个脚本,检查了所有 6 4 个 ID 并创建了一个比较表。
有一个ID 0x03 (二进制001 001 ),P0=1 ⊕0⊕1 ⊕0=0,P1 =0⊕0⊕0⊕1 =1 ,所以PID为0x8 1 (二进制1 0000001 )。
这东西真是太神奇了。
它只有六位,却可以产生如此多的组合。

PID在Linux中比较常见。
那天我在服务器上运行命令,发现PID是1 2 3 4 我用ps命令查看,发现有几个进程的PID都是1 2 3 4 ,很可能是线程组。
对比getpid()和gettid()发现TGID是1 2 3 4 ,线程的PID(即gettid()的返回值)不同。
我上周写了一个过程。
主线程PID是5 6 7 8 ,里面的线程PID从5 6 7 9 开始增加。
感觉就像在一个班级里,老师给全班一个编号(TGID),但每个学生都有自己的学生ID(独立PID)。

想想分布式系统中的 PID,那就是另一回事了。
上次我们从事微服务项目时,为了跨服务识别用户,我们为 User 服务中的每个用户分配了一个 ID。
然而,在订购服务中,为了方便搜索,我们使用PID来指代用户服务ID。
例如,用户A在用户服务中的ID为1 001 ,在订单服务中以PID:1 001 标识。
感觉就像一个大学图书馆。
每本书都有自己的索书号(ID),但读者在借书时可以使用书目索引(PID)快速找到它。

等等,还有别的事。
上次调试系统日志时,我看到一条错误消息。
LIN总线的PID为0xC0,对应的ID为0x02 我查了手册,发现这个PID是一个唤醒帧。
当时我就问自己,为什么ID是2 ,PID是1 2 8 呢?后来我才知道,校验位就是起到这个作用,保证通信的正确性。
这就像老王的车一样。
仪表盘上的红灯并不代表钥匙有问题,而是信息传输出现错误。

但是为什么Linux进程中TGID和PID有时会混淆呢?分布式系统中PID和ID之间也存在联系。
哪个更重要?突然我想,也许这就是计算机科学的魅力吧。
一两个看似简单的字母背后隐藏着如此多的知识。

pid分别代表什么

PID是进程的ID号。
每个程序运行时,操作系统都会为其分配一个唯一的编号。

进程信息都在自己的小文件中,包括名称、优先级等。

操作系统用它来管理进程,保证系统稳定性。

在Unix和Linux中,PID是1 到3 2 7 6 7 之间的数字,1 到1 02 3 是系统进程,1 02 4 以上是普通进程。

进程结束后,其PID可以重复使用,避免浪费。

为什么有了pid,还需要端口来标识一个进程

嘿,对于你的问题,你得谈谈我以前做过的工作。
我记得当时我在一家公司负责运维。
当时我们公司有很多服务器和进程。
PID和端口真是让我头疼。

当时我们有一个运行 Apache 的 Web 服务器,喜欢使用 8 0 端口来提供 HTTP 服务。
后来更新了,使用了HTTPS的4 4 3 端口。
有一天,公司经理来找我,说网站访问不正常。
我看到8 0端口正忙。
原来是某个进程不小心阻塞了端口。
我很快检查了一下,发现这个进程的PID是1 2 3 4 我知道我必须杀死这个进程并重新启动Apache。

当时我还很傻,心想:这不就是PID吗?我需要找到一个进程管理工具并将其杀死。
结果我杀掉了进程,端口也被删除了,但是问题并没有解决,因为这个进程的另一个4 4 3 端口也被占用了。
就在那时我意识到PID和端口是两个不同的东西。
PID是进程的标识符,端口是服务的标识符。
一个进程可以有多个端口,所以不能只看PID。

后来学会了用netstat命令查看端口占用情况,然后结合PID来定位问题。
有时一个进程使用多个端口,例如数据库服务可能使用端口 3 3 06 或端口 3 3 07 虽然这些端口不连续,但它们都是由同一进程提供的。

在IT行业你必须要小心,不能只看表面。
PID和端口必须分开理解。
我从来没有接触过这个领域,但我敢说端口在网络通信中的重要性是显而易见的。
它就像门牌号码一样,可以帮助您找到合适的服务。

pid是什么意思ct?

错误如下:PID 和 CT 使用混乱。

不信:PID和CT是两个完全不同的概念。

不要做:不要将 PID 与 CT 混淆。