zoukankan      html  css  js  c++  java
  • 【转】菜鸟备忘操作系统用户级线程和内核级线程

    了解了一下,用户级线程和内核级线程。

    用户级线程:

    image

    从这张图上面可以看出来,用户级线程的管理是由应用程序的进程来完成的,而不关内核的事。在内核看来还是只有进程的概念,所以线程的调度也就可以通过应用程序自己设定,不用核心态的特权。

    但是也就是因为这样,在内核中没有线程的概念,如果一个线程进入内核,然后再系统调用的时候阻塞了,那么,核心只会把它作为整个进程阻塞了,也就是说这个进程中的所有线程都被阻塞了。

    线程状态和进程状态是独立的(从何说起?不理解)

    优点:   线程切换不调用核心   调度是应用程序特定的:可以选择最好的算法   ULT可运行在任何操作系统上(只需要线程库)

    缺点:   大多数系统调用是阻塞的,因此核心阻塞进程,故进程中所有线程将被阻塞   核心只将处理器分配给进程,同一进程中的两个线程不能同时运行于两个处理器上

    内核级线程:

    image

    所有线程管理由核心完成 没有线程库,但对核心线程工具提供API 核心维护进程和线程的上下文
    线程之间的切换需要核心支持 以线程为基础进行调度 例子:Windows

    优点:   对多处理器,核心可以同时调度同一进程的多个线程   阻塞是在线程一级完成   核心例程是多线程的 缺点:   在同一进程内的线程切换调用内核,导致速度下降

  • 相关阅读:
    Unity3D 4.0 界面 基础 入门
    try catch finally 用法
    Mysql表引擎Innodb、MyIsam、Memory
    初步的kudu+impala vs dorisdb vs tidb
    mysql创建类似oracle的dblink
    jedis请求keys超时报错
    php 1223
    php 1214
    php 1216
    php 1222
  • 原文地址:https://www.cnblogs.com/lzhitian/p/2857607.html
Copyright © 2011-2022 走看看