java smp_内核线程和用户线程(SMP)

用户级和内核级线程

用户级线程:任何应用程序都可以通过使用线程库设计成多线程程序。线程库是用于用户级线程管理的一个例程句,它包含用于创建和销毁线程的代码、在线程间传递消息和数据的代码、调度线程执行的代码以及保存和恢复线程上下文的代码。该情况下所有活动发生在用户空间中,并且发生在一个进程中,而内核并不知道这些活动。内核继续以进程为单位进行调度。

用户级线程优点:所有线程管理数据结构都在一个进程的用户地址空间中,线程切换不需要内核态特权,因此,进程不需要为了线程管理切换到内核态。1.用户级线程执行一个系统调用时,不仅这个线程会阻塞,进程中所有的线程都会阻塞:2.一个多线程应用程序不能利用多处理技术。内核一次只把一个进程分配给一个处理器,因此一个进程中只有一个线程可以执行

内核级线程:有关线程管理的所有工作都是由内核完成的。

内核级线程优点:

1.内核可以同时把同一个进程中的多个线程调度到多个处理器中

2.如果进程中一个线程被阻塞,内核可以调度同一个进程中的另一个线程。内核级线程方法的另一个优点是内核例程自身也可以使用多线程

SMP(对称多处理结构)

SMP中有多个处理器,每个都有它自己的控制单元、算数逻辑单元和寄存器

Attention:用户级线程:

同一进程中只能同时有一个线程在运行,如果有一个线程使用了系统调用而阻塞,那么整个进程都会被挂起。另外,页面失效也会产生同样的问题。

内核级线程:

内核支持线程执行系统调用指令时,只导致该线程被中断

以下是用户级线程和内核级线程的区别:

(1)内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的。

(2)用户级线程的创建、撤消和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤消和调度都需OS内核提供支持,而且与进程的创建、撤消和调度大体是相同的。

(3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。

(4)在只有用户级线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内,CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度。

(5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。

内核线程的优点:

(1)当有多个处理机时,一个进程的多个线程可以同时执行。

缺点:

(1)由内核进行调度。

用户进程的优点:

(1) 线程的调度不需要内核直接参与,控制简单。

(2) 可以在不支持线程的操作系统中实现。

(3) 创建和销毁线程、线程切换代价等线程管理的代价比内核线程少得多。

(4) 允许每个进程定制自己的调度算法,线程管理比较灵活。

(5) 线程能够利用的表空间和堆栈空间比内核级线程多。

(6) 同一进程中只能同时有一个线程在运行,如果有一个线程使用了系统调用而阻塞,那么整个进程都会被挂起。另外,页面失效也会产生同样的问题。

缺点:

(1)资源调度按照进程进行,多个处理机下,同一个进程中的线程只能在同一个处理机下分时复用

进程:包括一个存放进程映像(程序、数据、栈和进程控制块中定义属性的集合)的虚拟地址空间,一个进程总是拥有对资源的控制和所有权,包括内存、I/O通道、I/O设备和文件。

进程控制块:标识符、状态、优先级、程序计数器、内存指针、上下文数据…

多线程:操作系统中单个进程内支持多个并发执行路径的能力。在多线程环境中,进程被定义成一个资源分配的单位和一个被保护的单位。在一个进程中,可能有一个或多个线程,每个线程有:

线程运行状态

线程上下文

一个执行栈

用于每个线程局部变量的静态存储空间

与进程内的其它线程共享的对进程的内存和资源的访问

一个简单的进程模型包括:进程控制块、用户地址空间、用户栈和内核栈(进程执行中管理调用/返回行为)

6ea7149bff77a4247572e2fbc85f88e0.png

多线程环境中,进程仍然只有一个与之关联的进程控制块和用户地址空间。但是每个线程都有独立的栈,还有独立的控制块用于包含寄存器优先级和其它线程相关状态信息。

73b00b2c8af27f35357f6a01a2559cb2.png

参考:https://blog.csdn.net/wxywxywxy110/article/details/60780935

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值