zoukankan      html  css  js  c++  java
  • 线程

    单线程结构进程

    •传统进程是单线程结构进程

    单线程结构进程的问题

    •单线程结构进程在并发程序设计上存在的问题

      •进程切换开销大

      •进程通信开销大

      •限制了进程并发的粒度

      •降低了并行计算的效率

    解决问题的思路

    •把进程的两项功能,即“独立分配资源”与“被调度分派执行”分离开来

    •进程作为系统资源分配和保护的独立单位,不需要频繁地切换;

    •线程作为系统调度和分派的基本单位,能轻装运行,会被频繁地调度和切换

    •线程的出现会减少进程并发执行所付出的时空开销,使得并发粒度更细、并发性更好

    多线程结构进程

    多线程环境下进程的概念

    • 在多线程环境中,进程是操作系统中进行保护和资源分配的独立单位。具有:

      •用来容纳进程映像的虚拟地址空间

      •对进程、文件和设备的存取保护机制

    多线程环境下线程的概念

    •线程是进程的一条执行路径,是调度的基本单位,同一个进程中的所有线程共享进程获得的主存空间和资源。它具有:

      •线程执行状态

      •受保护的线程上下文,当线程不运行时, 用于存储现场信息

      •独立的程序指令计数器

      •执行堆栈

      •容纳局部变量的静态存储器

    多线程环境下线程的状态与调度

    • 线程状态有运行、就绪和睡眠,无挂起

    •与线程状态变化有关的线程操作有:

      •孵化、封锁、活化、剥夺、指派、结束

    •OS感知线程环境下:

      •处理器调度对象是线程

      •进程没有三状态(或者说只有挂起状态)

    •OS不感知线程环境下:

      •处理器调度对象仍是进程

      •用户空间中的用户调度程序调度线程

    并发多线程程序设计的优点

    • 快速线程切换

    • 减少(系统)管理开销

    •(线程)通信易于实现

    • 并行程度提高

    • 节省内存空间

    内核级线程KLT, Kernel-Level Threads

    •线程管理的所有工作由OS内核来做

    •OS提供了一个应用程序设计接口API, 供开发者使用KLT

    •OS直接调度KLT

    内核级线程的特点

    •进程中的一个线程被阻塞了,内核能调度同一进程的其它线程占有处理器运行

    •多处理器环境中,内核能同时调度同一进程中多个线程并行执行

    •内核自身也可用多线程技术实现,能提高操作系统的执行速度和效率

    •应用程序线程在用户态运行,线程调度和管理在内核实现,在同一进程中,控制权从一 个线程传送到另一个线程时需要模式切换, 系统开销较大

    用户级线程ULT, User-Level Threads

    •用户空间运行的线程库,提供多线程应用程序的开发和运行支撑环境

    •任何应用程序均需通过线程库进行程序设计,再与线程库连接后运行

    •线程管理的所有工作都由应用程序完成,内核没有意识到线程的存在

    用户级线程的特点

    •所有线程管理数据结构均在进程的用户空间中,线程切换不需要内核模式,能节省模式切换开销和内核的宝贵资源

    •允许进程按应用特定需要选择调度算法,甚至根据应用需求裁剪调度算法

    •能运行在任何OS上,内核在支持ULT方面不需要做任何工作

    •不能利用多处理器的优点,OS调度进程, 仅有一个ULT能执行

    •一个ULT的阻塞,将引起整个进程的阻塞

    Jacketing技术

    •把阻塞式系统调用改造成非阻塞式的

    •当线程陷入系统调用时,执行jacketing程序

    •由jacketing 程序来检查资源使用情况,以决定是否执行进程切换或传递控制权给另一个线程

    参考资料

    https://www.icourse163.org/course/NJU-1001571004

  • 相关阅读:
    72. Edit Distance
    电脑常识
    java try·····catch·····异常处理学习
    java链接sqlserver数据库
    HTTP Status 500
    初识NDA
    Sublime Text_v2.02包含中文包以及使用方法
    ol 与ul 的区别
    word-break: break-all word-break:keep-all word-wrap: break-word三者的区别
    用deamon打开ISO文件,提示命令行错误!!
  • 原文地址:https://www.cnblogs.com/xumaomao/p/12863442.html
Copyright © 2011-2022 走看看