`
tcxiang
  • 浏览: 88028 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java线程与Linux内核线程的映射关系(转)

    博客分类:
  • java
 
阅读更多

Java线程与Linux内核线程的映射关系

 (2013-07-26 12:07:50)
   
Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。 

Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是由JVM的实现来确定的。Linux 2.6上的HotSpot使用了NPTL机制,JVM线程跟内核轻量级进程有一一对应的关系线程的调度完全交给了操作系统内核,当然jvm还保留一些策略足以影响到其内部的线程调度,举个例子,在linux下,只要一个Thread.run就会调用一个fork产生一个线程。
 

Java线程在Windows及Linux平台上的实现方式,现在看来,是内核线程的实现方式。这种方式实现的线程,是直接由操作系统内核支持的——由内核完成线程切换,内核通过操纵调度器(Thread Scheduler)实现线程调度,并将线程任务反映到各个处理器上。内核线程是内核的一个分身。程序一般不直接使用该内核线程,而是使用其高级接口,即轻量级进程(LWP),也即线程。这看起来可能很拗口。看图:

(说明:KLT即内核线程Kernel Thread,是“内核分身”。每一个KLT对应到进程P中的某一个轻量级进程LWP(也即线程),期间要经过用户态、内核态的切换,并在Thread Scheduler 下反应到处理器CPU上。)

 

        这种线程实现的方式也有它的缺陷:在程序面上使用内核线程,必然在操作系统上多次来回切换用户态及内核态;另外,因为是一对一的线程模型,LWP的支持数是有限的。

 

对于一个大型程序,我们可以开辟的线程数量至少等于运行机器的cpu内核数量。java程序里我们可以通过下面的一行代码得到这个数量:
  
Runtime.getRuntime().availableProcessors();
所以最小线程数量即时cpu内核数量。如果所有的任务都是计算
分享到:
评论

相关推荐

    linux内核完全注释,linux内核

    1. **进程管理**:Linux内核如何调度和管理进程,包括进程创建、进程间通信、信号处理、线程模型等内容。了解这些,能帮助我们理解程序在系统中的运行机制。 2. **内存管理**:内核如何分配和回收内存,包括物理...

    linux内核图解-linux内核图解

    Linux内核是操作系统的核心部分,它负责管理系统的硬件资源,调度进程,以及提供系统调用接口等关键功能。本文将深入探讨Linux内核的主要组成部分、工作原理及其在系统中的作用。 1. 内核架构 Linux内核采用微内核...

    linux内核探秘.zip

    2. **内存管理**:Linux内核采用分页内存管理,将物理内存划分为固定大小的页,通过页表映射虚拟地址到物理地址。同时,它支持虚拟内存机制,如交换空间,使得进程可以访问超过物理内存大小的地址空间。 3. **文件...

    深入理解Linux内核(中文第3版)_linux_

    3. **内存管理**:内核如何分配、回收内存,以及虚拟地址空间的映射,都是Linux内核中的重要话题。书中的这部分内容将涵盖页表、内存分配器、内存碎片管理等方面。 4. **文件系统**:Linux内核支持多种文件系统,...

    深入理解 Linux 内核.pdf 高清下载

    - **线程**:现代Linux内核支持线程,每个线程拥有独立的执行栈和程序计数器,但共享进程的内存空间。 #### 3. **设备驱动与硬件抽象层** - **设备驱动模型**:Linux内核提供了一套通用的框架,用于编写各种设备...

    linux内核源码0.11

    早期的Linux内核使用了简单的页表结构来映射物理内存。 3. 文件系统:支持基本的文件操作,如打开、关闭、读写等。0.11版可能包含了一些基础的文件系统类型,如ext(早期的Linux扩展文件系统)。 4. 设备驱动:这是...

    Linux内核设计的艺术_图解Linux操作系统架构设计与实现原理.pdf

    8. **并发与并行**:Linux内核通过进程和线程实现并发,利用多处理器进行并行计算,提高系统性能。 9. **安全性与权限**:Linux内核通过用户和组的概念,以及访问控制列表(ACL)来保障系统的安全。此外,还有...

    Linux内核代码阅读心得体会.pdf

    文档中介绍了系统调用参数、fork()系统调用和内核线程的概念。fork()是一个创建进程的系统调用,它是Unix系统中实现多进程编程的核心机制之一。内核线程是运行在内核空间的轻量级进程,由内核管理和调度。 kbuild...

    深入了解Linux内核

    Linux内核使用分页技术实现虚拟内存,通过页表映射物理地址。它还实现了伙伴系统和slab分配器,有效管理内存碎片。 4. **文件系统** Linux支持多种文件系统,如EXT2、EXT3、EXT4、Btrfs等。虚拟文件系统(VFS)层...

    Linux 内核 完全注释 赵炯

    7. **同步与互斥**:内核中的信号量、自旋锁、读写锁、条件变量等同步原语,以及它们在多线程环境中的应用。 8. **模块化设计**:Linux内核的模块化允许动态加载和卸载,理解模块的编译、加载和卸载机制。 9. **...

    UNIX高级环境编程 linux内核设计与实现

    《Linux内核设计与实现》则聚焦于Linux操作系统的核心机制,通常由Gregg Rojas和Jason R. Molenda等作者编写。该书详细阐述了Linux内核的设计理念和实现细节,包括进程调度、内存管理、文件系统、设备驱动以及网络子...

    Linux 内核 源码完全注释

    Linux内核使用了分页技术,将物理内存划分为固定大小的页,通过页表进行地址映射。内存分配包括slab分配器和伙伴系统,slab适用于频繁分配和释放相同大小对象的场景,而伙伴系统则用于大块内存的分配与回收。 调度...

    linux内核分析与操作系统设计

    《Linux内核分析与操作系统设计》是一本深入探讨操作系统核心机制和Linux内核实现的专著。本书旨在帮助读者理解操作系统的基本概念,并通过Linux内核的实例深入剖析其工作原理,为读者提供丰富的实践经验和理论知识...

    Linux内核精髓-精通Linux内核必会的75个绝技.扫.pdf(带完整书签版)

    《Linux内核精髓-精通Linux内核必会的75个绝技》是一本深入探讨Linux内核的专著,旨在帮助读者理解并掌握Linux操作系统的核心机制。这本书以75个关键技能为线索,逐一剖析了Linux内核的各个方面,为读者提供了全面而...

    linux内核分析及实际应用

    深入理解Linux内核对于系统管理员、开发者以及任何与Linux系统打交道的人来说都至关重要。 在"Linux内核分析及实际应用"中,我们可以探讨以下几个关键知识点: 1. **内核架构**:Linux内核采用微内核架构,主要...

    Java与线程.pdf

    ### Java与线程知识点详解 #### 一、线程的基本概念 线程是程序执行流的最小单元,它比进程更为轻量级。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。在多线程环境中,这些线程可以并行执行...

    linux内核教学课件

    内存管理是Linux内核的重要组成部分,本章将讲述虚拟内存的概念,如何通过页表实现地址映射,以及内存分配与回收的策略。此外,还会涉及内存保护和交换机制,以确保系统资源的有效利用和安全。 7. **Chap 7 进程...

    linux内核实验手册

    ### Linux内核实验手册知识点概览 #### Linux内核概览 - **定义**:“Linux” 或 “Linux内核” 是一种用C语言和汇编语言编写的操作系统内核,提供硬件抽象、磁盘及外部设备控制、文件系统控制、多任务等功能。 - *...

Global site tag (gtag.js) - Google Analytics