1. Linux 下的线程
1.1 什么是线程
- LWP :light weight process(轻量级的进程),本质仍是进程(在 Linux 环境下)。
- 进程:独立地址空间,拥有PCB。
- 线程:也有 PCB,但没有独立的地址空间(共享)
- 区别:在于是否共享地址空间。 独居(进程);合租(线程)。
- Linux下: 线程:最小的执行单位,调度的基本单位。
- 进程:最小分配资源单位,可看成是只有一个线程的进程。
1.2 Linux内核线程实现原理
类 Unix 系统中,早期是没有 “线程” 概念的,80 年代才引入,借助进程机制实现出了线程的概念。因此在这类系统中,进程和线程关系密切。
- 轻量级进程(light weight process),也有PCB,创建线程使用的底层函数和进程一样,都是clone。
- 从内核里看进程和线程是一样的,都有各自不同的 PCB,但是 PCB 中指向内存资源的页表是相同的。
- 进程可以蜕变成线程。
- 线程可看做寄存器和栈的集合。
- 在 Linux下,线程是最小的执行单位;进程是最小的分配资源单位。
- 察看 LWP 号:
ps –Lf pid
查看指定线程的 lwp
号。
在离散内存分配的前提下,实现线程?
- 复用页表,页表增加应用记录。