美文网首页
Chapter-3.2 [线程]

Chapter-3.2 [线程]

作者: James | 来源:发表于2017-03-15 20:46 被阅读37次

多线程的优点

1. 并行实体共享同一个地址空间和所有可用数据
2. 创建快,容易撤销
3. 对于IO密集型的程序,使用多线程能够加快程序的运行

线程的几种实现方式

1. 用户级线程(User-LevelThread, ULT) : 由应用程序所支持的线程实现, 内核意识不到用户级线程的实现
2. 内核级线程(Kemel-LevelThread, KLT): 内核级线程又称为内核支持的线程
3. 组合级线程,线程创建完全在用户空间中完成,线程的调度和同步也在应用程序中进行. 
  一个应用程序中的多个用户级线程被映射到一些(小于或等于用户级线程的数目)内核级线程上。

用户线程的优点

1 可以在不支持线程的操作系统中实现。
2 创建和销毁线程、线程切换代价等线程管理的代价比内核线程少, 因为保存线程状态的过程和调用程序都只是本地过程
3 允许每个进程定制自己的调度[算法],线程管理比较灵活。
4 线程能够利用的表空间和堆栈空间比内核级线程多
5 不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,使得线程调用非常快捷
6 线程的调度不需要内核直接参与,控制简单。

用户线程的缺点

1 线程发生I/O或页面故障引起的阻塞时,如果调用阻塞系统调用则内核由于不知道有多线程的存在,
  而会阻塞整个进程从而阻塞所有线程, 因此同一进程中只能同时有一个线程在运行
2 页面失效也会产生类似的问题。
3 一个单独的进程内部,没有时钟中断,所以不可能用轮转调度的方式调度线程
4 资源调度按照进程进行,多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用

内核线程的优点:

1 多处理器系统中,内核能够并行执行同一进程内的多个线程
2 如果进程中的一个线程被阻塞,能够切换同一进程内的其他线程继续执行(用户级线程的一个缺点)
3 所有能够阻塞线程的调用都以系统调用的形式实现,代价可观
4 当一个线程阻塞时,内核根据选择可以运行另一个进程的线程,而用户空间实现的线程中,运行时系统始终运行自己进程中的线程
5 信号是发给进程而不是线程的,当一个信号到达时,应该由哪一个线程处理它?线程可以“注册”它们感兴趣的信号

用户级线程和内核级线程的区别

1 内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的。
2 用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;
 而内核支持线程创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。
3 用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
4 在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,
  由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。
5 用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。

组合级线程

组合级线程.png

用户级线程

用户级线程.png

内核级线程

内核线程.png

相关文章

  • Chapter-3.2 [线程]

    多线程的优点 线程的几种实现方式 用户线程的优点 用户线程的缺点 内核线程的优点: 用户级线程和内核级线程的区别 ...

  • Android

    线程间通信 主线程和工作线程主线程和工作线程 工作线程与工作线程工作线程与工作线程 为什么主线程Looper.lo...

  • 三、操作系统之线程

    前言 什么是线程 引入线程的原因 线程的概念 线程和进程的关系 线程结构 线程有点 多线程模型 用户线程和内核线程...

  • Thread

    队列 线程锁 多线程,线程池 队列 多线程爬虫示例 多线程 自定义线程 线程池

  • 总结多线程与设计模式+synchronized+性能+高吞吐+死

    Java线程 Java语言的线程 何谓线程 线程启动 线程的暂时停止 线程的共享互斥 线程的协调 线程的状态转移 ...

  • 多线程编程

    摘要 线程概念,线程与进程的区别与联系学会线程控制,线程创建,线程终止,线程等待了解线程分离与线程安全学会线程同步...

  • java线程池

    线程VS线程池 普通线程使用 创建线程池 执行任务 执行完毕,释放线程对象 线程池 创建线程池 拿线程池线程去执行...

  • java并发之守护线程

    java中有两种线程,用户线程和守护线程用户线程:主线程停止时,用户线程不会停止守护线程:主线程停止时,守护线程也...

  • Java线程池的使用

    线程类型: 固定线程 cached线程 定时线程 固定线程池使用 cache线程池使用 定时调度线程池使用

  • 线程基础知识

    线程学习 线程的基础知识 线程是什么? 线程和进程的关系 线程的6个状态 线程优先级 主线程、多线程、后台线程的概...

网友评论

      本文标题:Chapter-3.2 [线程]

      本文链接:https://www.haomeiwen.com/subject/uydrnttx.html