[TOC] > [微信文章](https://mp.weixin.qq.com/s/USb5e2Zoc0LRgRShRpTYfg?utm_source=tuicool&utm_medium=referral) ## 概述 进程与线程都是类似的结构 ``` struct task_struct { // 进程状态 long state; // 虚拟内存结构体 struct mm_struct *mm; // 进程号 pid_t pid; // 指向父进程的指针 struct task_struct *parent; // 子进程列表 struct list_head children; // 存放文件系统信息的指针 struct fs_struct *fs; // 一个数组,包含该进程打开的文件指针 struct files_struct *files; }; ``` ### 进程与线程的区别 * 我们知道系统调用`fork()`可以新建一个子进程,函数`pthread()`可以新建一个线程。 但无论线程还是进程,都是用task_struct结构表示的,唯一的区别就是**共享的数据区域不同** * 其他操作系统 线程与进程是不一样的 ![UTOOLS1579503155061.png](http://yanxuan.nosdn.127.net/98ed72b3495c4416dec210c8b221a96f.png) :-: 父进程与子进程 ![UTOOLS1579503161742.png](http://yanxuan.nosdn.127.net/4665e368035332093e29c9fb4dc6c93a.png) :-: 父进程与子线程