Linux下应用层进程、应用层线程和内核线程

Linux下应用层进程、应用层线程和内核线程

前言

总结一下,应用层进程、应用层线程和内核线程的一些基本知识点、以及它们的通信方式、比较比较不同。
主要参考了两本书 《UNIX环境高级编程》、《Linux内核设计与实践》

一、应用层进程

1.ID

每个进程都有独一无二的进程ID,ID为0:调度进程,也叫交换进程,属于内核的一部分。ID为1:Init进程(自举过程中由内核调用,自举后启动一个UNIX内核),不会终止、会成为所有孤儿进程的父进程。

2.fork和vfork

fork和vfork都是创建一个新的子进程,会有两个返回值,返回值为0的是子进程、返回值不为0(子进程ID)的是父进程。其中vfork的主要目的就是创建一个新的进程执行新的程序(exec),并且它可以保证一定是子进程先运行,子进程要调用exec或者exit后,父进程才运行。如果子进程的运行对父进程有依赖,就有可能导致死锁。

3.一些特殊的进程/线程

①父进程运行完了,子进程还在-------> 孤儿进程
②父进程还在,子进程运行完了都是没有释放(父进程未收尸)------->僵尸进程。init进程会接手子进程,为他收尸。
③主线程推出了,子线程强制退出。

4.wait与waitpid

wait与waitpid用于父进程等待子进程,为他收尸(释放资源)。

5.exec函数族

调用一种exec函数时,该进程执行的程序会替换为新的程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值