Linux用户级线程和内核级线程区别
2014-03-03 19:23
288 查看
1.内核级线程:
(1)线程的创建、撤销和切换等,都需要内核直接实现,即内核了解每一个作为可调度实体的线程。(2)这些线程可以在全系统内进行资源的竞争。
(3)内核空间内为每一个内核支持线程设置了一个线程控制块(TCB),内核根据该控制块,感知线程的存在,并进行控制。
在一定程度上类似于进程,只是创建、调度的开销要比进程小。有的统计是1:10
2.用户级线程:
(1)用户级线程仅存在于用户空间。——>对比内核(3)
(2)内核并不能看到用户线程。——>重要的区别
(3)内核资源的分配仍然是按照进程进行分配的;各个用户线程只能在进程内进行资源竞争。
posix线程调度是一个混合模型,很灵活,足以在标准的特定实现中支持用户级和内核级的线程。模型中包括两级调度--线程及和内核实体级。线程级与用户级线程类似,内核实体由内核调度。由线程库来决定它需要多少内核实体,以及他们是如何映射的。
POSIX 引入了一个线程调度竞争范围(thread-scheduling contention scope)的概念,这个. 概念赋予了程序员一些控制权,使它们可以控制怎样将内核实体映射为线程。线程的contentionscope属性可是PTHREAD_SCOPE_PROCESS,也可以是PTHREAD_SCOPE_SYSTEM。带有PTHREAD_SCOPE_PROCESS属性的线程与它所在的进程中的其他线程竞争处理器资源。带有PTHREAD_SCOPE_SYSTEM属性的线程很像内核级线程,他们在全系统的范围内竞争处理器资源。POSIX的一种映射方式将PTHREAD_SCOPE_SYSTEM线程和内核实体之间绑定起来。
内核级线程创建时先设置线程属性PTHREAD_SCOPE_SYSTEM,代码如下,:
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); //设置内核级的线程,以获取较高的响应速度
//创建线程
ret = pthread_create(&iAcceptThreadId, &attr, AcceptThread, NULL);
相关文章推荐
- linux中采用用户级线程模拟实现EDF和RMS两种处理机实时调度算法之改进
- Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
- Linux线程的实现 & LinuxThread vs. NPTL & 用户级内核级线程 & 线程与信号处理
- Linux 进程和线程查看以及管理
- Linux线程笔记
- Linux进程创建一——进程、线程、LWP
- Linux线程浅析[线程初始化和销毁,线程分离]
- Linux ulimit和动态修改MySQL最大线程数限制
- 【Linux】一个简单的线程创建和同步的例子
- linux 实时线程优先级实质
- Linux 线程相关
- Linux 用户线程间同步
- 【Linux基础】线程概述
- linux 线程 机制 探索
- Linux中pthread线程使用详解
- Linux 线程实现机制分析
- linux学习笔记-线程(1)
- linux线程控制和通信
- 关于Linux线程的线程栈以及TLS
- Linux的进程/线程间通信方式总结