单线程进程结构缺点:
- 并发程序存在问题
- 进程切换开销大
- 进程通信开销大
- 限制了进程并发的力度
- 降低了并行计算的效率
单线程: 共享资源需要在OS中各种机制进行保护,在进行通信时开销及切换就会很大
多线程下线程的概念
线程是进程的一条执行路径,是调度的基本单位,同一个进程中的所有线程共享进程获得的主存空间和资源。
具有:
- 线程的执行状态
- 受保护的线程上下文,线程不运行时,用于存储线程信息
- 独立的程序指令计数器
- 执行堆栈
- 容纳局部变量的静态存储器
线程状态有运行、就绪和睡眠,但没有挂起
线程这个概念最初是由程序设计语言提出的
内核级线程(KLT):
- 线程管理全部由OS内核来做
- OS提供了一个应用程序设计接口API,供开发者使用KLT
- OS直接调用KLT
用户级线程(ULT):
- 所有线程管理数据结构都在进程的用户空间中,线程切换不需要内核模式,能节省模式切换开销和内核的宝贵资源。
- 允许进程按应用特定需要选择进行调度算法,甚至根据应用需求裁剪调度算法
- 能运行在任何OS上,内核在支持ULT方面不需要做任何工作
Java语言就是用户级多线程机制:
不能应用多处理器的特点: 物理并行性机制不是很好(Jacketing)
ULT适用于解决逻辑性并行性问题解决
KLT适用于物理并行性问题解决










网友评论