- 一个进程可以拥有1或多个线程
- 线程是CPU调度的最小单位(早期的操作系统进程是最小调度单位)
- 线程共享代码段、文件资源、数据段
- 线程有各自的寄存器和栈
线程与进程比较
- 进程是资源分配的最小单位。线程是调度的最小单位
- 一个进程拥有运行时的全部资源。线程拥只独享必要的资源(寄存器和栈等),其他资源共享。
线程上下文切换
进程的上下文切换的是寄存器和程序计数器等内容。线程也类似,也是将自己的独享的内容进行切换出去并保存下来。具体的切换分为以下两种
- 两个不同进程里的线程切换:和两个进程切换一样
两个同一进程里的线程切换:切换线程的私有数据(寄存器和栈),虚拟内存这样共享的东西无需变动
线程的三种实现方式
用户线程:用户空间创建的线程,用户线程库管理
- 内核线程:内核中实现的线程,内核管理的线程
-
用户线程和内核线程关系
1对1
- 1对多
- 多对多
用户线程
用户线程对于操作系统是不可见的,用户线程是有用户线程库管理的。操作系统只能看到用户线程所在的进程。
内核线程
轻量级进程(LWP)
- 内核支持的用户进程
小结
这三中实现方式把我弄晕了。这块后面再回头看一下。