区别与联系
- 线程是最小执行单位
- 进程是最小资源分配单位,可看成是只有一个线程的进程
- 一个线程只能属于一个进程,一个进程可以包含多个线程
- 线程也有pcb,同一个进程的不同线程的pcb中指向相同的三级页表
- 进程拥有独立的内存单元,多个线程共享进程的内存(资源分配给进程,同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。)
- 进程间不会相互影响 ;线程一个线程挂掉将导致整个进程挂掉
- 在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU环境的设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作
- 通信
- 线程通信直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助
- 进程间通信:管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket
线程资源
线程共享资源
- 文件描述符
- 每种信号的处理方式
- 当前工作目录
- 用户ID和组ID
- 内存地址空间 (.text/.data/.bss/heap/共享库)
线程非共享资源
- 线程id
- 处理器现场和栈指针(内核栈)
- 独立的栈空间(用户空间栈)
- errno变量
- 信号屏蔽字
- 调度优先级
进程资源
???