Threads 线程  为什么要引入线程 – WEB 服务器 同时处理多个客户请求 – 创建多个进程降低响应时间 – 进程开销较大 ( 上下文切换 )  线程 ( 轻量级进程 ) – 是 CPU 调度的一个基本单位.

Slides:



Advertisements
Similar presentations
高级服务器设计和实现 1 —— 基础与进阶 余锋
Advertisements

第 3 章操作系统基础 3.1 操作系统概述 3.2 操作系统的功能模块 3.3 典型操作系统概述.
Linux 系统. 操作系统发展需求 1 没有操作系统 2 简单批处理操作系统 3 多道程序设计的批处理 4 多道程序设计的分时操作系统 5 多处理机并行系统 6 网络操作系统 7 分布式操作系统.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
2.7 线程 2.7.1线程的其本概念.
Foundations of Computer Science
第五章 处理机管理 5.1 引言 5.2 调度算法 5.3 调度算法性能分析 5.4 实时调度 5.5 多处理机调度 5.6 调度算法举例
第二章 进程、线程与作业 多道程序设计 Multi-programming 进程的引入 Process 线程与轻进程
操作系统结构.
实用操作系统概念 张惠娟 副教授 1.
“服务器服务于Internet”报告会 倪光南 1999年7月6日
天文望远镜集成建模研究 杨德华 南京天文光学技术研究所 30 NOV, 年中国虚拟天文台年会 广西师范大学 桂林
Operating System CPU Scheduing - 2 Monday, August 11, 2008.
Operating System CPU Scheduing - 3 Monday, August 11, 2008.
Operating System Concepts 作業系統原理 Chapter 3 行程觀念 (Process Concept)
Operating System Concepts
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
C H A P T E R 11 体系结构对操作系统的支持.
CHAPTER 4 THREADS,SMP,AND MICROKERNELS
Applied Operating System Concepts
第4章 作業系統的介紹及操作.
第8章作業系統.
从UNIX到Windows的 电信软件移植实践
作 業 系 統 第三組 楊育翰 顏瑞霖.
Operating System Concepts 作業系統原理 CHAPTER 2 系統結構 (System Structures)
Chapter 3 行程觀念 (Process Concept)
ICT RTOS Research Group 胡伟平,王剑
存储系统.
SVN服务器的搭建(Windows) 柳峰
实践演练 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
Chapter 4 多執行緒 (Multi Thread)
1-1-1作業系統的功能 提供使用者操作介面 提供程式執行環境 控制輸入\輸出程序 分配系統資源 管理與維護磁碟中的檔案
线程(Thread).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
作業系統 (Operating System)
Online job scheduling in Distributed Machine Learning Clusters
操作系统原理 Operating System Principles
第2章 进程的描述与控制 2.1 进程及其描述 2.2 进程基本状态及其相互转换 2.3 进程控制 2.4 线程 进程的引入
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
PaPaPa项目架构 By:Listen 我在这.
Operating System Principles 作業系統原理
第二章 Linux简介 Linux概述 Linux系统的特点 Linux中使用的应用程序 Linux的组成 Linux版本介绍
第3章 認識處理元.
Threads 线程 为什么要引入线程 线程(轻量级进程) WEB服务器 同时处理多个客户请求 创建多个进程降低响应时间
华南理工大学 陈虎 博士 多核处理器上的操作系统 华南理工大学 陈虎 博士
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
Operation System(OS).
RTOS.
中国科学技术大学计算机系 陈香兰 Fall 2013 第三讲 线程 中国科学技术大学计算机系 陈香兰 Fall 2013.
进程概念.
3.5 线程 问题的提出 进程的引入使操作系统得以完成对并发执行的多道程序动态特征的描述和资源共享的管理,因而进程既是调度的基本单位又是资源分配的基本单位。进程所具有的这两个特点构成了程序并发执行的基础,但同时又导致进程切换过程中由于进程映像过大而带来的时空开销。因此,如果系统中创建的进程过多,或进程切换的频率过高,则会使系统效率下降,限制了并发度的进一步提高。
第7章 進階的同步 觀念與實務.
Process Description And Control
CHAPTER 6 Concurrency:deadlock And Starvation
资源分配与调度 第5章 资源分配与调度.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
_07多连接之select模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
凌群電腦新一代   交易所TCP/IP Gateway
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
ADX series Configuration
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Chapter 4 Multi-Threads (多執行緒).
Experimental Analysis of Distributed Graph Systems
Presentation transcript:

Threads 线程  为什么要引入线程 – WEB 服务器 同时处理多个客户请求 – 创建多个进程降低响应时间 – 进程开销较大 ( 上下文切换 )  线程 ( 轻量级进程 ) – 是 CPU 调度的一个基本单位

WEB server/Http request IE WEB Server …. … jpg data 2.jpg data

FlashGet / eMule /BT

1 、线程的引入  为了解决以进程为运行单位而产生的并发性不 高和系统开销大的缺陷。  人们希望将进程作为调度和分派的独立单位属 性与作为拥有资源的独立单位属性分开。使得 运行者尽量不拥有资源,轻装上阵;而拥有资 源者尽量少切换。  引入线程作为轻装运行的独立单位,而进程作 为资源拥有单位。可大大提高系统的并发程度, 同时又减少系统的时空开销。

单线程与多线程

2 、线程的定义  定义:线程是由进程所包含的一个实体,并能 被系统独立调度和分派的基本单位,亦即独立 运行的实体或进程中的一条执行路径或线索。  组成:线程由线程控制块( TCB )、保存线程 的程序计数器、局部变量、少数状态参数和返 回地址等信息的一组寄存器和堆栈组成。  传统的进程称为重型进程 (Heavy Weight Process) ,而将线程有时称为轻型进程( Light Weight Process) 。  一个进程中至少有一个线程,并继承或共享进 程资源。

3 、线程属性  轻型实体:基本不拥有资源,只共享进程的资 源;  独立调度和分派的基本单位:线程是独立运行 的基本单位,且切换开销极小;  并发执行:线程之间(同一进程或非同一进程) 可并发执行;  共享进程资源:进程的内存空间、 I/O 设备、文 件、数据等。

4 、线程与进程的比较(重点)  相似的地方: – 都可以并发执行; – 都有就绪、执行、阻塞这些基本状态,也 都可以在这些基本状态间转换状态;从创 建到撤销都有一定的生命周期; – 都需要同步工具。

– 在引入线程的 OS 中,线程代替进程成为独立调 度和分派的基本单位,进程则仍是拥有资源的 基本单位。 – 并发粒度不同。同一个进程里的不同线程之间, 以及不同进程的线程之间都可以并发执行,所 以线程拥有更好的并发性。 – 拥有资源数量不同。进程是拥有资源的基本单 位,线程除了些在运行过程中必不可少的资源 外基本上不拥有系统资源,它可以访问自己所 在的进程的资源。 – 管理开销不同。创建、撤销进程时系统都要为 之分配和回收资源,所以进程切换用的时空开 销相对要多于线程。进程间通信很麻烦,而同 一进程的线程间则通过共享进程的资源很方便 地通信和同步,同步开销小得多。 不同的地方:

Benefits  Responsiveness – 可以获得快速的用户响应,如在 C/S 模式下, web server 为每个用户连接运行一个线程; RPC 服务器 中, RPC 服务进程会开启多个线程服务于每个 RPC request  Resource Sharing – 进程是拥有资源的基本单位( CPU ,地址空间, I/O 资源),进程中的线程可以共享这些资源  Economy – 创建线程比创建进程更快,进程内的线程切换 ( context switch) 比进程更快, solaris 中创建线程 比进程快 30 倍,线程切换比进程切换快 5 倍  Utilization of SMP Architectures – 可以充分利用多处理器体系结构,使得一个进程中 的线程在不同的处理器上运行,提高进程执行的并 行度

一些应用程序可以分成若干相对独立的部 分 [Word 的后台打印, 拼写检查等,IE 浏览 器 ] 每一部分用一个线程来实现 一个线程阻塞时可调度同一进程的另一个 线程运行而不是切换进程 线程间通信无需内核干预 需要解决进行线程间同步 Application benefits of threads

三种线程状态 : running, ready, blocked 线程无挂起状态 Termination of a process, will terminates all threads within the process Threads States( 线程状态 )

User Level Threads(ULT)  内核不关注线程的存在  所有的线程管理由应用程序通过调用 ULT 库实 现  线程间的切换无需内核模式下的特权指令(无 模式转换)  线程调度由特定的应用 程序完成  例子 - POSIX Pthreads - Mach C-threads 一种 UNIX 的操作系统, 采用微内核 - Solaris threads Java 线程:创建 Thread 类的子类或实现 Runable 接口

User Level Threads library 用户级线程库  Contains codes for: ( 包含以下代码 ) – creating and destroying threads( 线程的创 建和撤消 ) – passing messages and data between threads 线程间数据和消息的传递 – scheduling thread execution 对线程的调度 – saving and restoring thread contexts 对线程上下文的保存和恢复

Advantages  Thread switching does not involve the kernel: no mode switching 无模式 ( 管态 / 目态 ) 转换  Scheduling can be application specific: choose the best algorithm. 可选择最好的调度算法  ULTs can run on any OS. Only needs a thread library 只要有库, 就可在任何操作 系统运行 Inconveniences  Most system calls are blocking and the kernel blocks processes. So all threads within the process will be blocked 多数的系统调用将阻塞该进程 的所有线程  The kernel can only assign processes to processors. Two threads within the same process cannot run simultaneously on two processors 一个进程的两个线程不能同在 两个处理器上同时运行 用户级线程的优缺点

Kernel Level Threads(KLT) 内核级的线程  内核完成对所有线程的管理  无线程库,但内核供内核线程的编程接口( API )  内核需要维护进程和线程的上下文信息  线程间的调度由内核完成  调度的基本单位是线程  例子 - Windows 95/98/NT/ Solaris - Tru64 UNIX - BeOS 处理机

Advantages  the kernel can simultaneously schedule many threads of the same process on many processors 内核可在多处理机上同时对一个 进程的多个线程进行调度  blocking is done on a thread level 阻塞仅限线程级别  kernel routines can be multithreaded 内核程序也可以是多线程 Inconveniences  thread switching within the same process involves the kernel. We have 2 mode switches per thread switch 同进程的线程内的转换涉 及内核, 每一个线程的转换 需要两个模式转换  this results in a significant performance slowing down 导致系统性能的下降 内核级的线程

Multithreading Models 多线程模式  Many-to-One ( 多对一 )  One-to-One ( 一对一 )  Many-to-Many ( 多对多 )

Many-to-One  Many user-level threads mapped to single kernel thread. (纯用户级线程)  Used on systems that do not support kernel threads.( 常用 于不支持内核线程的 系统中 )

One-to-One  Each user-level thread maps to kernel thread. (纯核心级线程)  Examples – Windows 95/98/NT/2000 – OS/2

Many-to-Many Model 混合式线程  Allows many user level threads to be mapped to many kernel threads.  Takes advantage of many-to-one and one- to-one models  Allows the operating system to create a sufficient( 充足的 ) number of kernel threads.  例子 – Solaris 2 – Windows NT/2000 with the ThreadFiber 纤程 package

Many-to-Many Model

多线程与单线程 多线程 : 操作系统支持在一个进程中有多个执行 线程 单线程 : 操作系统不支持线程概念 MS-DOS 支持单用户进程及单线程 传统 UNIX 支持多用户进程但每进程只支持一个 线程 现今的操作系统,如 Solaris, Windows, 支持多 线程 Solaris: SUN 微系统公司开发的一种网络操作系统