- 我的博客:www.shishangguan.net
-
进程的七种状态
在内核源码的 include/linux/sched.h文件中:-
task_struct的status可表示
#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define TASK_STOPPED 4
#define TASK_TRACED 8 -
task_struct和exit_status均可标识
#define EXIT_ZOMBIE 16
#define EXIT_DEAD 32
-
进程标识符
一个线程组中的所有线程和该线程组的领头线程具有相同的pid。
pid存放在task_struct结构的tgid字段中,但使用getpid()时返回的时tgid。
线程组领头线程的pid和tgid是相同的。- linux进程切换实质
1.切换页全局目录
2.切换内核态堆栈和硬件上下文,即TSS段中的值。但linux是软件进程切换,所有的进程共享一个TSS段,使用mov指令手动装填TSS而非切换。 - switch_to宏为什么是三个参数
最后一个参数last用来存储上个运行进程,因为切换到新进程时,从堆栈中恢复的prev指针很可能不是目前该进程的真实前一个进程。 - linux创建进程的关键技术
1.写时复制
2.线程的创建可以共享父进程的地址空间,打开文件等信息。
3.vfork创建的进程共享整个父进程的地址空间,并且可以保证子进程比父进程有限执行。- 我的博客:www.while0.com
相关文章
- 深入理解linux网络技术内幕读书笔记(六)--PCI层与网络接口卡
- 秋招之路-深刻理解 Linux 进程间七大通信(IPC)
- Linux 线程信号量,进程信号量和内核驱动程序信号量(线程同步信号量,进程同步信号量和设备驱动同步信号量)
- 《深入理解Linux内核》读书笔记:内存管理
- 《深入理解linux内核》读书笔记 -- 第二章 内存寻址
- 《深入理解Linux内核》读书笔记-第二章-内存寻址(1)
- linux内核源码解析04–用户进程页表创建
- 【读书笔记::深入理解linux内核】内存寻址
- 《深入理解Java虚拟机》第三章读书笔记(三)——经典垃圾回收器
- 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安全区域,卡表,写屏障,三色标记算法)