`
annan211
  • 浏览: 459421 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 虚拟机线程与操作系统内核线程之间的关系

    博客分类:
  • jvm
 
阅读更多
java jdk 中 线程操作与虚拟机中线程操作之间的关系映射

  在多cpu处理器中,一个cpu 可以映射多个 KLT指令集,一个KLT 又可以映射多个轻量级线程LWP,这里的 cpu  KLT  LWP 都是系统级的成员,一个轻量级线程 又对应着多个用户线程。
  线程的实现方式可以有多种
  1 内核线程实现

     直接由操作系统内核支持的线程,内核通过操纵调度器来吧任务分配到不同的处理器 上,这种实现方式可以真正意义上的去处理多种任务。程序一般不会去直接使用内核线程,而是去实现内核线程的一种高级接口--轻量级进程LWP,轻量级进程就是我们通常意义上说的线程,只有先去实现内核线程才能实现轻量级进程,轻量级进程和内核线程是1:1 关系的线程模型。
  基于内核线程的支持,每个轻量级进程可以单独成为一个调度单元,即使某个轻量级进程在系统调用中被阻塞了,也不会影响系统的整体工作进程。但是这种实现方式也有巨大的局限性,由于其是基于系统内核线程支持的,所以首先他的数量是有限的,对于处理需要大量线程处理的任务是无法实现的,其次 线程的创建 析构 同步 等操作都要涉及 系统内核线程的内核态和用户态的切换,对于资源的消耗无疑是巨大的。

  2 用户线程实现
     用户线程的实现,是指 线程的创建 调度 和销毁都是在用户态中完成,无需内核知道,
这种实现方式 可以非常快速而且低耗,很多数据库线程就是基于用户线程实现的。
其优势在于不需要基于系统内核线程,劣势也在于其不是基于系统内核线程的,系统内核线程只是把资源分配到进程这一级,所以对于死锁  资源阻塞  如何分配任务给其他处理器 等处理是非常困难的甚至是无法完成的。所以很多种语言放弃了这种实现方式。

  3 混合实现
     Solaries 系统是基于unix 实现的,她的多线程实现是基于 既有内核线程的实现也含有用户线程,用户线程的 创建 析构 销毁 还是在用户态,仍然可以支持大规模的用户线程并发,操作系统提供的轻量级进程 为 用户线程和 内核线程 之间架起了一座桥梁,为处理器映射提供了条件,由于轻量级线程的使用,使得用户线程的调用可以在轻量级线程内完成,所以很大程度的避免了阻塞。

  4 java 线程的实现
 
   java 的线程模型 很大程度上是基于操作系统的线程模型实现的。不同的平台可能会有很大的不同,虚拟机规范中也并没有规定必须基于何种线程模型来实现,对于编码和运行期来说,线程模型是透明的。

分享到:
评论

相关推荐

    深入java虚拟机.pdf

    深入 Java 虚拟机.pdf ...Java 虚拟机提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。Java 虚拟机也提供了自动内存管理、垃圾收集、多线程支持等功能,提高了 Java 程序的可靠性和性能。

    Java多线程编程实战指南(核心篇)

    Java多线程编程实战指南...本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。

    Java虚拟机(Java VM) msjavax86 微软java虚拟机

    与Sun Microsystems(现在被Oracle收购)的Java虚拟机不同,微软的版本在某些时期提供了与Windows更紧密的集成,尤其是在早期的Web应用中。然而,由于微软和Sun之间的许可纠纷,微软停止了对msjavax86的更新,推荐...

    Java虚拟机规范中文版.pdf

    Java虚拟机(JVM)是实现Java技术的关键组件,它为Java程序提供了一个运行环境。Java程序在编写后会被编译成一种称为字节码的中间表示形式,这种字节码可以跨平台运行,因为JVM负责将字节码转换成机器代码。JVM的...

    java虚拟机

    JVM的设计目标是实现一次编写,到处运行(Write Once, Run Anywhere),通过将Java字节码转换为特定硬件平台的机器码,使得Java程序可以在任何支持JVM的操作系统上运行。 在Java虚拟机第二版中,我们可以深入探讨...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...

    java虚拟机wince版

    "Java虚拟机wince版"指的是专门为Windows CE系统设计的Java虚拟机实现,确保在该操作系统上能够执行Java字节码。 Windows CE是一种轻量级、嵌入式操作系统,广泛应用于移动设备、工业控制设备和汽车导航系统等。...

    Java运行原理与Java虚拟机.pdf

    ### Java运行原理与Java虚拟机 #### 一、Java运行原理概述 Java作为一种跨平台的编程语言,其独特之处在于它的编译和解释过程。Java程序的执行涉及到两个主要步骤:首先是编译阶段,其次是解释执行阶段。 1. **...

    java虚拟机的详细原理

    它为Java程序提供了一个运行环境,使得Java程序可以在任何安装了JVM的操作系统上运行而无需重新编译。 #### 二、Java虚拟机的生命周期 Java虚拟机的生命周期包括启动、执行和终止三个主要阶段: 1. **启动**:当...

    Java 虚拟机面试题全面解析(干货)

    Java虚拟机(JVM)是Java程序运行的核心,它负责在不同操作系统上提供统一的运行环境。对于准备面试或希望深入理解JVM的开发者而言,了解JVM的各个组件和特性是必须的。本文将通过解析Java虚拟机面试题来深入探讨JVM...

    JAVA虚拟机解读入门

    5. 本地方法接口:允许JVM调用原生的C/C++代码,实现与操作系统或其他非Java库的交互。 通过学习《JAVA虚拟机解读入门》,你将能够了解JVM如何加载和解析类,以及类加载的双亲委托模型。你还将掌握栈帧的工作方式,...

    自己动手写Java虚拟机(GO语言)

    《自己动手写Java虚拟机(GO语言)》是一本面向技术爱好者和程序员的书籍,它指导读者使用Go语言实现一个Java虚拟机(JVM)。这本书的编写基于《深入理解Java虚拟机》第二版以及相关的Java规范,旨在帮助读者深入...

    Java虚拟机的安装程序

    在这个场景中,我们关注的是“jre-1_5_0_08-windows-i586-p-s.rar”这个压缩包,它包含了Java运行时环境(JRE)的1.5.0_08版本,专为Windows操作系统32位i586架构设计。 首先,让我们深入了解Java虚拟机的结构和...

    Java虚拟机的深入研究

    JVM通过移植接口与底层操作系统和硬件进行交互,接口由适配器和Java操作系统两部分组成,其中适配器是平台依赖的。JVM之上是Java的基本类库和扩展类库,它们提供了丰富的API,供开发者编写应用程序和小程序。 Java...

    java多线程编程实战指南 核心篇 代码

    《Java多线程编程实战指南(核心篇)》以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及...

Global site tag (gtag.js) - Google Analytics