要弄清楚Thread的层次结构,必须先弄清楚它的参照系。看看“The Futures of Ruby Threading”这段话:“Current stable releases of Ruby use user space threads (also called "green threads"), which means that the Ruby interpreter takes care of everything to do with threads. This is in contrast to kernel threads, where the creation, scheduling and synchronization is done with OS syscalls, which makes these operations costly, at least compared to their equivalents in user space threads.”这里的用户空间线程和内核线程是相对于Ruby解释器来说的。如果把参照系换成操作系统,此处的内核线程只是一个用户空间线程。
常说Java线程是Native thread,是说Java的一个线程映射到操作系统上的一个用户线程。往下随后怎么映射就要看操作系统的实现了。可以看看
Solaris的线程模型,
这里也有些说明资料。
不过Java线程也并不一定是一一映射的,比如Jikes RVM虚拟机,采用了M:N模型,而不是大家经常看到的1:1,具体资料可以看
这里。BEA的JRockit是两个都有,既支持1:1模型,也支持M:N模型,叫Thin Thread。
在JVM上实现了M:N模型,当然在操作系统上也可以实现M:N模型,只是层次不同,抽象级别不同。象Solaris就实现了M:N模型,不过这个模型在Solaris 9中已经放弃,为什么?实现太难。“It is not to say that a good implementation of the M:N model is impossible,but simply that a good 1:1 implementation is probably sufficient. ”想更进一步了解Solaris多线程的发展历程,看这个pdf吧(
www.sun.com/software/whitepapers/)。
了解清楚Thread的层次结构,碰到Green Thread,Native Thread,User space Thread,Kernel Thread时才不会糊涂。
分享到:
相关推荐
2. **Picokernel结构**:与传统的分层内核设计不同,ThreadX采用了Picokernel结构,即服务直接调用内核,减少了不必要的层次,提高了执行效率。 3. **ANSI C源代码**:ThreadX主要采用ANSI C编写,这意味着它可以...
ThreadX支持任务级和线程级的调度,以满足不同层次的并发需求。 #### 七、ThreadX的应用场景 - **移动设备**:如智能手机和平板电脑中的操作系统管理。 - **汽车电子系统**:控制发动机、安全系统和其他车辆组件。 ...
RT-thread的核心架构包括内核、中间层组件以及软件包三个层次。 - **内核**:负责基础的多线程管理和调度,提供了信号量、互斥量等功能,以及基础的线程间通信机制。 - **组件与服务层**:提供上层应用所需的各种...
2. 实现`Runnable`接口:如果你不想修改类的继承层次结构,可以创建一个实现了`Runnable`接口的类,并实现`run()`方法。然后将这个`Runnable`对象作为参数传递给`Thread`的构造函数。 ```java class MyRunnable ...
RT-Thread操作系统软件结构主要分为内核、组件和软件包三个层次。内核是系统的最核心部分,包含任务管理、内存管理、定时器管理、中断管理、信号量、互斥量等基本的实时内核功能。组件层提供了更为丰富的功能,例如...
在RT-Thread 3.0编程指南中,涵盖了RT-Thread的软件结构、线程调度与管理、定时器、任务间同步及通信、内存管理、I/O设备管理等核心概念和编程接口。 首先,RT-Thread软件结构包括核心功能层、中间件层和应用程序层...
通过标准化设备驱动的层次结构,RT-Thread提供了易于理解的层次化驱动编程模型,利于驱动的开发和维护。 以上知识点概述了RT-Thread操作系统中SPI设备驱动框架的设计与应用,以及如何在正点原子STM32F4探索者开发板...
- **Picokernel结构**:ThreadX采用了独特的Picokernel结构,与传统的分层内核设计不同,其服务直接集成到核心层,从而实现了更快的转换和命令执行速度。这种设计减少了不必要的层次,提高了系统的响应速度和整体...
RT-Thread操作系统的软件结构由内核、设备驱动框架、组件与服务、用户应用程序四个层次构成。内核是系统的心脏,包括了线程调度、同步机制、定时器管理等。设备驱动框架提供硬件抽象层,方便设备驱动的编写与维护。...
2. **线程堆栈跟踪**:线程转储会显示每个线程的堆栈跟踪,即调用方法的层次结构。这有助于定位导致问题的具体代码行。 3. **死锁检测**:通过分析线程转储,可以查找是否存在多个线程互相持有对方需要的资源而导致...
1. **线程树视图**:将线程按照调用栈层次结构展现,方便查看线程间的调用关系。 2. **等待链视图**:揭示了线程因为等待资源而形成的链状结构,有助于发现潜在的阻塞问题。 3. **死锁检测**:自动检测和标记可能的...
RT-Thread的软件结构清晰,可以细分为内核、组件、软件包三个层次。内核是操作系统的最核心部分,而组件是构建在内核之上,提供系统服务的模块,软件包则进一步提供了具体应用功能的实现,它们共同构成了RT-Thread的...
- **线程组层次结构**:线程可以加入不同的线程组,形成层次结构。 **守护线程:** - **守护线程概念**:守护线程是用于服务其他线程的线程,如垃圾回收器。 - **守护线程的作用**:当所有非守护线程都结束时,守护...
##### 1.1 RT-Thread的软件结构 RT-Thread的软件架构设计灵活,主要分为以下几个层次: - **内核层**:包括实时内核、线程调度、内存管理等核心功能。 - **组件层**:提供网络协议栈、文件系统、图形用户界面等...
* 线程层次结构:CUDA 的线程层次结构可以分为三个级别:grid、block 和 thread。grid 是最顶层的线程组织形式,block 是中间层的线程组织形式,而 thread 是最底层的线程组织形式。 * 存储器层次结构:CUDA 的...
RT-Thread包括内核、组件和应用程序框架三个层次。内核提供任务调度、信号量、互斥锁、消息队列等基本调度和同步机制;组件则包含了网络、文件系统、GUI等丰富的功能模块;应用程序框架使得开发者能够方便地构建和...
文档首先会介绍CAN的基本原理,包括CAN协议的层次结构、帧格式(数据帧和远程帧)、仲裁机制、错误检测与处理等。理解这些基础知识对于正确配置和使用CAN接口至关重要。CAN通信中,节点通过发送和接收CAN数据帧来...
码头工人-elasticsearch-5.2.2-cgroups2 修复了ES 5.2中对cgroup版本2层次结构的支持( )。 ES 5.2在启动支持cgroups v2( )的较新内核(例如Ubuntu 18.04 LTS的默认内核)时出现问题。 启动ES时的例外是: [2018-...