美文网首页操作系统
os——第四章 线程

os——第四章 线程

作者: Myth52125 | 来源:发表于2017-10-21 10:22 被阅读0次

4.1进程和线程

资源所有权:指的是进程拥有进程映像(代码,数据,栈,属性),资源的所有权

调度/执行:一个进程沿着可以通过一个或多个程序执行路径执行,进程拥有一个执行状态和被分配的优先级,备操作系统调度和分派的实体。

目前操作系统分派的单位通常称为线程,拥有资源控制权的单位通常称为进程

4.2 线程分类

线程的实现可以分为:用户级线程和内核级线程。
线程上下文:寄存器内容,程序计数器和栈指针。

用户级线程

在一个纯粹的用户级线程软件中,线程管理的工作是由应用程序完成,内核意识不到线程的存在。
线程库是用于用户级线程管理的历程包,包含用于创建和销毁小城代码,在线程间传递信息和数据的代码,调度线程的代码,以及保存和恢复线程上下文的代码。

用户级线程和内核级线程

也就说在这种模型下,用户自己管理线程。
相当于一个进程级的多道程序。

因此会发生如下的情况,进程A有两个线程1,2

  • 当进程A中的线程1执行IO操作的时候,需要陷入内核,然后内核阻塞进程A,然后切换到别的进程
    此时,线程2在处理器角度不处于运行态,因为处理器不知道线程2的存在。在线程库角度处于运行态
  • 时钟中断传递给内核,内核确定当前进程用完了时间片,进程切换。线程处于运行态
  • 线程1需要等待线程2的某个动作(某种形式的同步),此时线程2阻塞,转为执行线程1

这种情况下,由于IO会造成进程切换,引起不能使用线程的好处。
为了解决这个问题,

  1. 编写多进程应用
    不能使用线程的好处
  2. jacketing技术
    将一个产生阻塞的系统调用转化成一个非阻塞的系统调用。将系统IO调用转化为应用级IOjacket历程

内核级线程

在纯粹的内核级线程软件中,县城管理工作有内核完成,应用程序部分没有进行线程管理的代码,只用到了线程的api
内核为进程和其他内部结构的每个线程维护上下文信息,线程调度是由内核基于线程完成。
有点:内核可以把同一个进程中的多个线程调度到多个处理器中运行(也就是不同的处理器执行同一进程中的不同线程),进程中的一个线程阻塞,内核可以调度同一个进程中的另一个线程。
缺点:当进行线程切换的时候,需要到内核的状态切换。

混合方法

混合系统中,县城创建在用户空间中完成,调度和同步也在用户空间中进行。
一个进程中的多用户及线程被映射到一些(少于用户级线程数目)内核级线程上。

4.3多核和多线程

多核处理器任务调度和通信以及高速缓存一致性维护都给软件带来了额外的开销。
因此导致cpu增多以后,性能先上升后下降。

相关文章

  • Java线程——Thread

    线程Thread Java的线程对应OS中的线程,相当于对OS线程的封装 UncaughtExceptionHan...

  • os——第四章 线程

    4.1进程和线程 资源所有权:指的是进程拥有进程映像(代码,数据,栈,属性),资源的所有权 调度/执行:一个进程沿...

  • Java线程1 - 状态与同步机制

    1,线程简介 1)线程light weight process,轻量级进程,是os调度的最小单位。进程是os进行资...

  • 线程

    原文地址: https://sunnyqjm.github.io/2018/06/27/os_02/ 线程 线程是...

  • iOS开发 多线程的高级应用(一)

    iOS开发 多线程的高级应用(一) OS开发 多线程的高级应用(一)

  • OS之线程

  • 第2节linux系统编程

    linux下申请子线程 创建 import os rpid = os.fork() #父程序得到子程序的id 子线...

  • Thread

    概述 Java线程映射到OS的线程 代码版本:oracle jdk 1.8 java.lang.Thread im...

  • [Java篇] Java 多线程基础

    多线程编程是java编程最重要的模块之一,对于不同的OS,线程和进程的理解是不一样的,向mac os就没有prog...

  • Java的线程36-39

    线程、多线程与线程池总结--孙福生 Java中的线程 线程是进程当中的一个执行流程多进程:在OS中能(同时)运行多...

网友评论

    本文标题:os——第四章 线程

    本文链接:https://www.haomeiwen.com/subject/cuzbuxtx.html