linux系统编程 线程

线程的概念:

  • LWP:light weight process 轻量级的进程,本质仍是进程(linux环境下)
  • 进程:独立地址空间,拥有PCB
  • 线程:无独立地址空间,拥有PCB
  • 区别:在于是否共享地址空间。        共享(线程)        私有(进程)

linux下:       

  • 线程:最小的执行单位        进程:最小分配资源单位,可以看成只有一个线程的进程

linux内核线程实现原理:

  • 轻量级进程,也有PCB,创建线程使用的底层函数和进程一样,都是clone
  • 从内核量看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表是相同的
  • 进程可以蜕变为线程
  • 线程可以看做寄存器和栈的集合

线程共享资源

  • 文件描述符表
  • 每种信号的处理方式
  • 当前工作目录
  • 用户ID和组ID
  • 内存地址空间(.text/.data/.bss/heap/共享库)

线程非共享资源

  • 线程ID
  • 处理器现场和栈指针(内核栈)
  • 独立的栈空间(用户空间栈)
  • errno变量
  • 信号屏蔽字
  • 调度优先级

线程优缺点

  • 优点:提高程序并发性、开销小、数据通信共享数据方便
  • 缺点:库函数不稳定、调试、编写困难、gdb不支持、对信号支持差

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值