linuxC线程pthread的相关理解
1. 线程概念 Linux里的线程,也叫轻量级进程(light weight process),本质上是进程。 Linux早期是没有线程的,后来的线程是借助进程实现的。线程、进程的核心都是调用系统的clone方法实现。 线程和进程的区别:(说明:PCB即进程控制块) 进程拥有PCB,用于独立的地址空间。是操作系统最小资源分配单位。(独居地址空间) 线程也有PCB,但没有独立的地址空间,共享同一个地址空间。是操作系统最小执行单位。(合租地址空间) Linux内核线程实现原理: 1)轻量级进程,也有PCB,创建线程使用的底层方法和进程一样都是clone方法。 2)线程有各自的PCB,但是各自的PCB指向内存资源的三级页表是相同的。所以地址空间是相同的,即共享地址空间。 3)线程可看作是寄存器和栈的集合。 三级页表映射:进程PCB -> 页目录(可看作数组,首地址位于PCB里)-> 页表(可看作数组元素) -> 物理页表 -> 内存单元 线程共享的资源: 文件描述符、信号处理方式、当前工作目录、用户ID和组ID、内存地址空间(.text/.data/.bss/heap/so) 线程非共享的资源: 线程ID、处理器现场和内核栈指针、用户空间栈、errno变量、信号屏蔽字、线程调度优先级、线程调度策略 2. pthread线程函数