zoukankan      html  css  js  c++  java
  • 线程原理篇——>第7章 线程

    第7章 线程

    7.1 进程的分身术——线程

    进程与线程的区别(面试题)

    线程就是我们为了让一个进程能够同时干多件事情而发明的“分身术”。

    线程的本质:拥有同样的程序文本。

    线程是进程里面的一个执行上下文或者执行序列。一个进程可以拥有多个执行序列。

    在线程模式下,一个进程至少有一个线程,但也可以有多个线程。

    将进程分解为线程还可以有效利用多处理器和多核计算机。在没有线程的情况下,增加一个处理器并不能让一个进程的执行速度提高。但如果分解为多个线程,则可以让不同的线程同时运转在不同的处理器上,从而提高进程的执行速度。

    7.2 线程管理

    评判标准:如果某资源不独享会导致线程运行错误,则该资源就由每个线程独享;而其他资源都由进程里面的所有线程共享。

    一般情况下线程共享和独享资源的划分

    序号

    线程共享资源

    线程独享资源

    1

    地址空间

    程序计数器

    2

    全局变量

    寄存器

    3

    打开的文件

    4

    子进程

    状态字

    5

    闹铃

     

    6

    信号及信号服务程序

     

    7

    记账信息

     

     

    7.3 线程模型的实现

    用户态和内核态的区别(面试题)

    进程的调度有两种。一、进程的调度交给线程;二、将线程的调度交给操作系统。

    这两种不同的调度形成了线程的两种实现:用户态实现和内核态实现。由进程自己管理就是用户态线程,由操作系统管理就是内核态线程实现。

    用户态和内核态的判断以线程表所处的位置为依据:位于内核叫做内核态实现,位于用户层叫做用户态实现。

     

    线程的实现方式。因为线程是进程内部的东西,所以,存在由进程直接管理线程的可能性。因此,线程存在着内核态与用户态两种实现可能。

    7.3.1 内核态线程实现

     

    7.3.2 用户态线程实现

    用户态实现就是用户自己做线程的切换,自己管理线程的信息,而操作系统无须知道线程的存在。

    用户态如何进行线程调度呢?用户自己写一个执行系统(runtime system)作调度器,即成了正常执行任务的线程外,还有一个专门负责线程调度的线程。用户态下的运行,是一个线程在执行完一段时间后主动把资源释放给别人使用,而在内核态下则无须如此。因为操作系统可通过周期性的时钟中断把控制权夺过来。在用户态实现情况下,执行系统的调度器(runtime scheduler)也是线程,没有能力强行夺走控制权,所以必须合作。

    用户态的优点:

    灵活性。因为操作系统无须知道线程的存在,所以在任何操作系统上都能应用。

    线程切换快。因为切换在用户态进行,无须陷入到内核态。

    不用修改操作系统。

    用户态的缺点:

    编程序变得很诡异。由于用户态线程需要相互合作才能运转,所以,我们在写程序时,必须仔细斟酌在什么时候应该让出CPU给别的线程使用。而让出时机的选择对线程的效率和可靠性由很大的影响。

    用户态线程实现无法完全达到线程提出所要达到的目的:进程级多道编程。

     

    7.4 现代操作系统的线程实现模型

    7.5 多线程的关系

    7.6 讨论:从用户态进入内核态

    7.7 讨论:线程的困惑——确定性与非确定性

    思考题(面试题)

    1、进程和线程的区别

    2、用户态和内核态区别

    3、用户态和核心态区别

  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/lanyuejiagou/p/12606097.html
Copyright © 2011-2022 走看看