进程与线程的区别
最后更新于:2022-04-02 04:03:06
[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)
:-: 父进程与子线程
';