JVM线程模型与操作系统厂商的关系

jvm线程仍然可以自行控制调度算法(hotspot在非solaris放弃了这种骚操作,直接让一个jvm线程对应一个os线程,成为1vs1模型)。


也就说,有些jvm厂商自己实现线程调度算法,在os线程的基础上又做了一层封装。从而实现多个线程在一个os线程内并发,或者多个线程在n个线程内并发。你可以理解为jvm厂商真把jvm当成是计算机操作系统来做了。

按照jvm的规范,jvm线程是操作系统级别的,由操作系统调度,而非用户进程级别。这就意味着jvm根据操作系统提供的内核函数来实现jvm线程接口规范。即有一种叫坐TCB的存在对标PCB.


另一方面,我们可以理解为现代操作系统对进程进一步抽象,将进程看成内存管理单元,将cpu核的算力的时间片分配单元从进程剥离出来,由原先按照进程分配改为按照线程来分配,具体指令实现就是寄存器上下文对象由之前内核进程一个,改为每个线程一个,上下文不再是进程上下文,而是线程上下文。


线程进程模型是操作系统厂商实现的,和cpu厂商无关,cpu厂商只是面向操作系统内核提供服务(可以理解为有多个内核计算单元),所有内核计算单元维护一个指令调度表(去中心化的感觉),并发同步问题由操作系统实现自己去负责担保。

你可能感兴趣的:(操作系统,java)