2016 - 2024

感恩一路有你

java多线程底层原理 用户级线程和内核支持线程有何区别?

浏览量:2114 时间:2021-03-13 20:36:01 作者:admin

内核级线程是用来实现、管理和调度操作系统内核的线程。由于操作系统的管理,操作系统知道线程的存在,为线程安排时间片,并管理与线程相关的内核对象。由于内核级线程由内核管理,因此每次创建或切换线程时,都必须执行模式切换例程。因此,内核级线程的效率相对较低,内核级线程的调度由操作系统的设计者决定,缺乏灵活性。但是内核级线程有一点,即当进程的一个线程由于系统调用或缺页中断而被阻塞时,它不会导致进程的所有线程都被阻塞。内核级线程的优点:较好的并行能力,进程中的线程阻塞不会影响进程中的其他线程。内核级线程的缺点是:线程管理开销太大,缺乏灵活性。用户级线程由以用户模式运行的运行库管理。它的优点是线程的一切(包括调度和创建)都可以完全由用户决定,因此具有很高的灵活性。而且由于采用用户模式管理,节省了内核管理的成本,因此具有较高的效率。但是用户级线程有一个致命的缺点:进程中的线程阻塞会导致整个进程中的所有线程阻塞。而且,由于用户级线程没有时间片的概念,每个线程必须运行一段时间,让CPU被其他线程占用,否则线程会独占CPU。用户级线程的优点:灵活性高,效率高。用户级线程的缺点是:并发性差。由于这两种线程通常不能满足用户的需求,一些研究者开始研究新的线程系统。较好的线程系统是1993年国外几位学者提出的调度器激活机制的线程实现方法。该方法是介于内核级线程和用户级线程之间的一种线程,兼有两种线程的优点。要了解更多关于调度激活机制的信息,可以向我问好

用户级线程和内核支持线程有何区别?

用户级线程和内核级线程的区别如下:(1)内核支持线程是OS内核感知线程,而用户级线程是OS内核不可感知线程。T(2)用户级线程的创建、撤销和调度不需要OS内核的支持,而是在语言级(如Java)进行处理;而内核支持线程的创建、撤销和调度,都需要OS内核的支持,与创建基本相同,进程的撤销和调度。T(3)当用户级线程执行系统调用指令时,其进程会被中断,而当内核支持线程执行系统调用指令时,只有线程会被中断。T(4)在只有用户级线程的系统中,CPU调度仍然基于进程,用户程序控制运行进程中线程的轮换;在内核支持线程的系统中,CPU调度基于线程,OS线程调度器负责线程调度。T(5)用户级线程的程序实体是以用户模式运行的程序,而内核支持线程的程序实体是以任何状态运行的程序。

java多线程底层原理 用户级线程切换需要内核吗 线程阻塞进入内核态

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。