Linux从内核2.6开始使用NPTL (Native POSIX Thread Library)支持,但这时线程本质上还轻量级进程。
Java里的线程是由JVM来管理的,它如何对应到操作系统的线程是由JVM的实现来确定的。Linux 2.6上的HotSpot使用了NPTL机制,JVM线程跟内核轻量级进程有一一对应的关系。线程的调度完全交给了操作系统内核,当然jvm还保留一些策略足以影响到其内部的线程调度,举个例子,在linux下,只要一个Thread.run就会调用一个fork产生一个线程。
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内核数量。如果所有的任务都是计算
相关推荐
1. **进程管理**:Linux内核如何调度和管理进程,包括进程创建、进程间通信、信号处理、线程模型等内容。了解这些,能帮助我们理解程序在系统中的运行机制。 2. **内存管理**:内核如何分配和回收内存,包括物理...
Linux内核是操作系统的核心部分,它负责管理系统的硬件资源,调度进程,以及提供系统调用接口等关键功能。本文将深入探讨Linux内核的主要组成部分、工作原理及其在系统中的作用。 1. 内核架构 Linux内核采用微内核...
2. **内存管理**:Linux内核采用分页内存管理,将物理内存划分为固定大小的页,通过页表映射虚拟地址到物理地址。同时,它支持虚拟内存机制,如交换空间,使得进程可以访问超过物理内存大小的地址空间。 3. **文件...
3. **内存管理**:内核如何分配、回收内存,以及虚拟地址空间的映射,都是Linux内核中的重要话题。书中的这部分内容将涵盖页表、内存分配器、内存碎片管理等方面。 4. **文件系统**:Linux内核支持多种文件系统,...
- **线程**:现代Linux内核支持线程,每个线程拥有独立的执行栈和程序计数器,但共享进程的内存空间。 #### 3. **设备驱动与硬件抽象层** - **设备驱动模型**:Linux内核提供了一套通用的框架,用于编写各种设备...
早期的Linux内核使用了简单的页表结构来映射物理内存。 3. 文件系统:支持基本的文件操作,如打开、关闭、读写等。0.11版可能包含了一些基础的文件系统类型,如ext(早期的Linux扩展文件系统)。 4. 设备驱动:这是...
8. **并发与并行**:Linux内核通过进程和线程实现并发,利用多处理器进行并行计算,提高系统性能。 9. **安全性与权限**:Linux内核通过用户和组的概念,以及访问控制列表(ACL)来保障系统的安全。此外,还有...
文档中介绍了系统调用参数、fork()系统调用和内核线程的概念。fork()是一个创建进程的系统调用,它是Unix系统中实现多进程编程的核心机制之一。内核线程是运行在内核空间的轻量级进程,由内核管理和调度。 kbuild...
Linux内核使用分页技术实现虚拟内存,通过页表映射物理地址。它还实现了伙伴系统和slab分配器,有效管理内存碎片。 4. **文件系统** Linux支持多种文件系统,如EXT2、EXT3、EXT4、Btrfs等。虚拟文件系统(VFS)层...
7. **同步与互斥**:内核中的信号量、自旋锁、读写锁、条件变量等同步原语,以及它们在多线程环境中的应用。 8. **模块化设计**:Linux内核的模块化允许动态加载和卸载,理解模块的编译、加载和卸载机制。 9. **...
《Linux内核设计与实现》则聚焦于Linux操作系统的核心机制,通常由Gregg Rojas和Jason R. Molenda等作者编写。该书详细阐述了Linux内核的设计理念和实现细节,包括进程调度、内存管理、文件系统、设备驱动以及网络子...
Linux内核使用了分页技术,将物理内存划分为固定大小的页,通过页表进行地址映射。内存分配包括slab分配器和伙伴系统,slab适用于频繁分配和释放相同大小对象的场景,而伙伴系统则用于大块内存的分配与回收。 调度...
《Linux内核分析与操作系统设计》是一本深入探讨操作系统核心机制和Linux内核实现的专著。本书旨在帮助读者理解操作系统的基本概念,并通过Linux内核的实例深入剖析其工作原理,为读者提供丰富的实践经验和理论知识...
《Linux内核精髓-精通Linux内核必会的75个绝技》是一本深入探讨Linux内核的专著,旨在帮助读者理解并掌握Linux操作系统的核心机制。这本书以75个关键技能为线索,逐一剖析了Linux内核的各个方面,为读者提供了全面而...
深入理解Linux内核对于系统管理员、开发者以及任何与Linux系统打交道的人来说都至关重要。 在"Linux内核分析及实际应用"中,我们可以探讨以下几个关键知识点: 1. **内核架构**:Linux内核采用微内核架构,主要...
### Java与线程知识点详解 #### 一、线程的基本概念 线程是程序执行流的最小单元,它比进程更为轻量级。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。在多线程环境中,这些线程可以并行执行...
内存管理是Linux内核的重要组成部分,本章将讲述虚拟内存的概念,如何通过页表实现地址映射,以及内存分配与回收的策略。此外,还会涉及内存保护和交换机制,以确保系统资源的有效利用和安全。 7. **Chap 7 进程...
### Linux内核实验手册知识点概览 #### Linux内核概览 - **定义**:“Linux” 或 “Linux内核” 是一种用C语言和汇编语言编写的操作系统内核,提供硬件抽象、磁盘及外部设备控制、文件系统控制、多任务等功能。 - *...