linux内核线程、轻量级进程、用户进程
来源:互联网 发布:淘宝货物怎么上架 编辑:程序博客网 时间:2024/05/16 09:00
1、内核线程
内核线程只运行在内核态,不受用户态上下文的拖累。
Ø处理器竞争:可以在全系统范围内竞争处理器资源;
Ø使用资源:唯一使用的资源是内核栈和上下文切换时保持寄存器的空间
Ø调度:调度的开销可能和进程自身差不多昂贵
Ø同步效率:资源的同步和数据共享比整个进程的数据同步和共享要低一些。
2、轻量级进程
轻量级进程(LWP)是建立在内核之上并由内核支持的用户线程,它是内核线程的高度抽象,每一个轻量级进程都与一个特定的内核线程关联。内核线程只能由内核管理并像普通进程一样被调度。
轻量级进程由clone()系统调用创建,参数是CLONE_VM,即与父进程是共享进程地址空间和系统资源。
与普通进程区别:LWP只有一个最小的执行上下文和调度程序所需的统计信息。
Ø处理器竞争:因与特定内核线程关联,因此可以在全系统范围内竞争处理器资源
Ø 使用资源:与父进程共享进程地址空间
Ø 调度:像普通进程一样调度
3、用户线程
用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全又库函数在用户空间完成,不需要内核的帮助。因此这种线程是极其低消耗和高效的。
Ø处理器竞争:单纯的用户线程是建立在用户空间,其对内核是透明的,因此其所属进程单独参与处理器的竞争,而进程的所有线程参与竞争该进程的资源。
Ø使用资源:与所属进程共享进程地址空间和系统资源。
Ø调度:由在用户空间实现的线程库,在所属进程内进行调度
4、Linux使用的线程库
LinuxThreads是用户空间的线程库,所采用的是线程-进程1对1模型(即一个用户线程对应一个轻量级进程,而一个轻量级进程对应一个特定的内核线程),将线程的调度等同于进程的调度,调度交由内核完成,而线程的创建、同步、销毁由核外线程库完成(LinuxThtreads已绑定到GLIBC中发行)。
在LinuxThreads中,由专门的一个管理线程处理所有的线程管理工作。当进程第一次调用pthread_create()创建线程时就会先创建(clone())并启动管理线程。后续进程pthread_create()创建线程时,都是管理线程作为pthread_create()的调用者的子线程,通过调用clone()来创建用户线程,并记录轻量级进程号和线程id的映射关系,因此,用户线程其实是管理线程的子线程。
LinuxThreads只支持调度范围为PTHREAD_SCOPE_SYSTEM的调度,默认的调度策略是SCHED_OTHER。
用户线程调度策略也可修改成SCHED_FIFO或SCHED_RR方式,这两种方式支持优先级为0-99,而SCHED_OTHER只支持0。
ØSCHED_OTHER 分时调度策略,
ØSCHED_FIFO 实时调度策略,先到先服务
ØSCHED_RR 实时调度策略,时间片轮转
SCHED_OTHER是普通进程的,后两个是实时进程的(一般的进程都是普通进程,系统中出现实时进程的机会很少)。SCHED_FIFO、SCHED_RR优先级高于所有SCHED_OTHER的进程,所以只要他们能够运行,在他们运行完之前,所有SCHED_OTHER的进程的都没有得到执行的机会。
- linux内核线程、轻量级进程、用户进程
- linux内核线程、轻量级进程和用户进程
- linux内核线程、轻量级进程和用户进程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程
- 内核线程、轻量级进程、用户线程、用户进程
- Linux下的LWP(轻量级进程)、进程 、 线程、用户级线程、内核线程
- 进程,轻量级进程,内核线程,用户线程的区别关系
- 进程,轻量级进程,内核线程,用户线程的区别关系
- 进程,轻量级进程,内核线程,用户线程的区别关系
- 进程,轻量级进程,内核线程,用户线程的区别关系
- HDU 1233--还是畅通工程
- 几种常见的列表菜单
- Java中@Resource注解和@Autowired注解(spring中的@Autowired)
- 对第三周知识的复习
- java中的内部类简介
- linux内核线程、轻量级进程、用户进程
- java动态代理(JDK和cglib)
- 仔细分析mapreduce代码
- 数据库增删改查未拼接的 sql语句
- java反射简介
- POJ 2485--Highways
- 网易有道 洗牌
- color
- Java多线程1