0
点赞
收藏
分享

微信扫一扫

进程和线程区别

善解人意的娇娇 2022-04-01 阅读 62
linux
  • 系统初始进程:

pid 0: idle 初始进程(swapper)
pid 1: init 用户态祖进程
pid 2: kthreadd 内核态祖进程

  • 进程内存空间:

代码区(text文本区):存放编译后可执行的机器指令,从可执行文件加载到进程内存空间中
数据区:存放全局变量和静态局部变量,包含bss(未初始化数据区)和初始化数据区
栈区(stack):存放执行栈、局部变量、返回值等(栈向低内存地址增长)
堆区(data数据段):存放动态申请内存空间(堆向高内存地址增长)

  • 概念方面

1、进程是资源分配的基本单位;
2、线程是任务调度的最小单位

  • 资源方面

1、进程有独立的地址空间,包含代码段、数据段、堆栈段
2、线程共享进程的地址空间,但有独立的栈区、寄存器、程序计数器

  • 调度方面

1、进程切换包含:地址空间、页目录、TLB、内核态堆栈、硬件上下文等
2、线程切换包含:栈区、寄存器、程序计数器

  • 优缺点方面

1、进程优点:有独立地址空间,互不干扰,运行稳定;
2、进程缺点:创建和切换资源开销大,进程间通信没有线程方便
3、线程优点:共享进程地址空间,创建和切换资源开销小,充分利用多核CPU
3、线程缺点:资源同步风险大,程序健壮性不高

  • 知识拓展

1、守护进程:独立于控制终端,周期性执行或处理事件或任务,大多数服务都是守护进程,使用deamon或者fork,父进程退出,特殊的孤儿进程
2、线程安全:操作原子性、执行有序性、利用锁机制、volatile修饰共享变量
4、死锁:线程A和B加锁后竞争对方持有的临界区资源、多次加锁
5、预防死锁:顺序加锁、避免单个线程同时加多个锁、避免单个锁占用多个临界区资源
6、线程池:优点(调度线程比创建线程更快、节省资源、提高响应速度),使用场景(单任务处理时间段,任务量大)

举报

相关推荐

0 条评论