2-2010-2011-高级操作系统-进程线程模型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线程块列表:描述属于该进程的所有线程的相关信息, 以便线程调度器进行处理机资源的分配和回收 虚拟地址空间描述表:描述进程地址空间各部分属性, 用于虚拟存储管理 对象句柄列表:当进程创建或打开一个对象时,就会得 到一个代表该对象的句柄,用于对象访问
进程类对象
进程 对象类型
ID; 安全描述符 基本优先级 默认处理器集合 定额限制 执行时间 I/O,VM计数 异常/调试端口 退出状态 ……
SOLARIS进程模型
进程
对用户程序执行上下文环境的抽象 包括虚拟内存地址空间, 程序资源, 和至少一个 执行线程
硬件上下文
进程执行过程中的处理机信息, 它与CPU结构相关 总体来说,就是硬件寄存器的状态 (普通寄存器, 特权寄存器) 保存在LWP中
软件上下文
地址空间, 证书,打开文件, 资源限制等等 ——同一进程中可被其他线程共享的资源
proc 数据结构
p_cred p_sessp p_pidp p_pgidp p_sig ……
认证 会话 PID GID 信号支持
段的AVL树
物理内存
u_finfo
struct uf_entry[] entry1 entry2 …… 打开的文件
vnode inode
vnode inode
p_tlist LWP 进程表 p_sessp 资源控制 LWP p_zone zone信息 kthread sched class sched class kthread sched class
系统为了管理进程设置的一个专门的数据结构,用它 来记录进程的外部特征,描述进程的运动变化过程 (又称进程描述符、进程属性) 系统利用PCB来控制和管理进程,所以PCB是系统感知 进程存在的唯一标志
SOLARIS的进程控制块与进程表
proc_t p_exec p_as 地址空间 vnode inode HAT 可执行文件 进程地址空间
进程实现:采用阻塞系统调用,进程被阻塞 线程实现:在一个进程中构造三个线程,采 用线程阻塞系统调用
2.线程的引入(1/2)
需要多线程的原因: 一个应用中同时发生着多种活动 → 如何使 程序设计模型简单化 → 新的元素:线程 → 并行实体共享同一个地址空间和所有可用数 据的能力 创建、撤消进程、进程通信、进程切换等开 销大 何谓开销? 性能考虑 多CPU系统的发展
重要的数据结构
进程 用户线程 轻量级进程 proc_t ulwp_t klwp_t
内核线程
kthread_t
对象
进程 用户线程 轻量级进程 内核线程
定
义
名
字
包含数据结构定义的头文件
uts/common/sys/proc.h lib/libc/_inc/thr_uberdata.h uts/common/sys/klwp.h uts/common/sys/thread.h
LWP轻量级进程
LWP把内核线程和用户线程绑定到一起
当程序从用户态陷入到内核态时,用户线 程的硬件上下为保存在内核线程的栈中, 保存的位置存放在LWP结构中 发生系统调用时,系统调用的参数存放在 LWP中 如果进程中有多个LWP,则这个进程的多个 用户线程可以同时访问内核的系统调用
进程、内核线程和LWP的关系
使用FORK()的示例代码
3.进程分类与进程层次结构
系统进程 用户进程
前台进程 后台进程
CPU密集型 I/O密集型
系统进程优先于用户进程
UNIX进程家族:init为根 Windows:地位相同
4. 进程状态
挂起状态
运行 三状态 模型
就绪
阻塞
五状态 模型
运行
终止
创建
就绪
阻塞
Windows
核心的进程之间没有任何关系 (包括父子关系),各运行环境子系统 分别建立、维护和表达各自的进程关系 Windows 把Win32环境子系统设计成整个 系统的主子系统,一些基本的进程管理 功能也被放置在Win32子系统中 在Windows中,与一个运行环境子系统中 的应用进程相关的进程控制块信息会分 布在本运行环境子系统、Win32子系统和 系统内核中
WINDOWS 的进程关系
POSIX应用 fork() POSIX子系 统 CreateProcess() Win32子系 统
本地过程调用
进程管 对象管 理器 理器
WINDOWS 中的WIN32进程结构
Windows
中的每个Win32进程都由一个执行体进程 块表示,执行体进程块描述进程的基本信息,并指 向其他与进程控制相关的数据结构 执行体进程块中的主要内容包括:
创建进程 打开进程 查询进程信息 设置进程信息 终止进程
对象体属性
提供的服务
WINDOWS 的进程
Windows 的进程由执行体进程块EPROCESS表示, EPROCESS即执行体进程对象
进程对象的属性:PID, PCB, Access Token, Base Priority, 句柄表,指向进程环境块PEB的指针,默 认亲和处理器集合等
3.线程模型
线程: 线程ID(标识符) 有执行状态(状态转换) 调度参数、优先级等 运行时有什么? 不运行时要做什么?(保存上下文) 有自己的堆栈,做什么? 可存取所在进程的内存和其他资源 可以创建、撤消另一个线程
进程与线程的关系
POSIX线程
IEEE
1003.1c定义的线程标准Pthread
空闲位图中的每一位指示一个处理机是否处于空闲状态调度策略windows严格基于线程的优先级来确定哪一个线程将占用处理机并进入运行状windows在单处理机系统和多处理机系统中的线程调度是不同的1主动切换线程优先级运行状态就绪状态转到阻塞状态2抢占当一个高优先级线程进入就绪状态时正在处于运行状态的低优先级线程被抢占线程优先级运行状态就绪状态从阻塞状态唤醒2抢占用户态下运行的线程可以抢占内核态下运行的线程在判断一个线程是否被抢占时并不考虑线程处于用户态还是内核态调度器只是依据线程优先级进行判断当线程被抢占时它被放回相应优先级的就绪队列的处于实时优先级的线程在被抢占时时间配额被重置为一个完整的时间配额处于动态优先级的线程在被抢占时时间配额不变重新得到处理机使用权后将运行到剩余的时间配额用完3时间配额用完线程优先级运行状态就绪状态时间配额用完如果刚用完时间配额的线程优先级降低了windows将寻找一个优先级高于刚用完时间配额线程的新设置值的就绪线程如果刚用完时间配额的线程的优先级没有降低并且有其他优先级相同的就绪线程windows将选择相同优先级的就绪队列中的下一个线程进入运行状态刚用完时间配额的线程被排到就绪队列的队尾即分配一个新的时间配额并把线程状态从运行状态改为就绪状态如果没有优先级相同的就绪线程可运行刚用完时间配额的线程将得到一个新的时间配额并继续运行4线程结束当线程完成运行时它的状态从运行状态转到终止状态如果处于终止状态的线程对象上没有未关闭的句柄则该线程将被从进程的线程列表中删除相关数据结构将被释放线程优先级提升在下列5种情况下windows会提升线程的当前优先级
(2)核心级线程(KLT)
所有线程管理由核心完成 没有线程库,但对核心线 程工具提供API 核心维护进程和线程的上 下文 线程之间的切换需要核心 支持 以线程为基础进行调度 例子:Windows
核心级线程的优点和缺点
优点: 对多处理器,核心可以同时调度同一进 程的多个线程 阻塞是在线程一级完成 核心例程是多线程的 缺点: 在同一进程内的线程切换调用内核,导 致速度下降
(3)ULT和KLT结合方法
线程创建在用户空间完成
线程调度等在核心态完成 例子:Solaris
4.SOLARIS进程线程模型
Solaris的多线程模型中包括四种实体:
进程,内核线程,用户线程和轻量级进 程(LWP)
Solaris内核是多线程的
进程是资源分配和管理的单元 内核级线程是内核的调度单元 用户级线程是程序执行在用户态的抽象 LWP把用户线程和内核线程绑定到一起
线程的引入(2/2)
进程的两个基本属性: 资源的拥有者 给每个进程分配一虚拟地址空间,保存进 程映像,控制一些资源(文件,I/O设备), 有状态、优先级、调度信息 调度单位 进程是一个执行轨迹
引入线程 的好处?
线程:可称为轻量级进程 进程中的一个运行实体、CPU调度单位 资源的拥有者还是进程或称任务
LINUX进程状态及转换
fork()
资源到位 wake_up_interruptible() 或收到信号 wake_up() 收到信号SIG_CONT wake_up()
TASK_RUNNING 就绪
等待资源到位 wake_up()
TASK_UNINTERRUPTIBLE 深度睡眠
schedule() 等待资源到位 sleep_on() schedule() 时间片到
在Windows 中,PCB也称为内核进程块KPROCESS KPROCESS即内核进程对象 EPOCESS和KPROCESS位于内核空间,PEB位于用 户空间
进程环境块
线程环境块
进程地址空间 系统地址空间 WIN32进程块 句柄表
进程块
线程块
内核进程块 进程ID 父进程ID 进程退出状态 创建和退出次数 →下一个进程块 限额块 内存管理信息 异常端口 程序调试端口 →主访问令牌 →句柄表 设备映射 进程环境块 映像文件名称 映像基地址 进程特权级 →Win32进程块 →作业对象
2. 进程创建
创建时机 —— 4种主要事件导致生成新 进程
前台进程 后台进程(守护进程daemon)
fork()、exec()
CreateProcess
地址空间
FORK()的过程
1.
2. 3.
4.
5.
6.
符 初始化子进程描述符结构 为子进程分配地址转换表 以一次一页的方式复制父进程地址数据和堆栈区,并 更新子进程地址转换表,指向这些新页面 (运用写时复制技术) 获得由子进程继承的共享资源的指针,如打开的文件 和当前工作目录 子进程就绪,加入调度队列 设置子进程从fork返回0 向父进程返回子进程PID
TASK_INTERRUPTIBLE 浅度睡眠
等待资源到位 Interruptible_sleep_on() schedule()
占有CPU 执行
ptrace() schedule()
do_exit()
TASK_STOPPED 暂停
TASK_ZOMBIE 死亡但户口未注销
5.进程控制块
(PROCESS CONTROL BLOCK,PCB)
核心不知道线程的活动,只管理线程的 进程的活动 当线程调用系统调用时,整个进程阻塞 对线程库来说,线程仍然是运行状态 即线程状态是与进程状态独立的
用户级线程的优点和缺点
优点: 线程切换不调用核心 调度是应用程序特定的:可以选择最好的算 法 ULT可运行在任何操作系统上(只需要线程库) 缺点: 大多数系统调用是阻塞的,因此核心阻塞进 程,故进程中所有线程将被阻塞 核心只将处理器分配给进程,同一进程中的 两个线程不能同时运行于两个处理器上
一个执行环境——用于执行线程的状态容器 在进程内由用户提供内核状态的对象 为用户线程提供内核状态的对象 内核中调度和执行的基本单位
proc_t ulpw_t klwp_t kthread_t
三、WINDOWS 进程线程模型
Windows进程是作为对象来管理的,进 程对象的属性包括:
进程标识(PID) 资源访问令牌(Access Token) 进程的基本优先级(Base Priority) 默认亲合处理机集合(Processor Affinity) 等
静态部分(PCB和资源表格) 动态部分:核心栈(核心过程的栈结构,不同进程在 调用相同核心过程时有不同核心栈)
中断处理和调度过程
二、线程的基本概念
线程的使用 经典的线程模型 线程的实现 实例:Solaris
1.线程的使用(1/5)
有三个线程的字处理软件
线程的使用(2/5)
一个多线程的Web服务器
线程的使用(3/5)
(a)分派线程
(b)工作线程
线程的使用(4/5)
模型 多线程 单线程进程 有限状态机 特性 并行性、阻塞系统调用 无并行性、阻塞系统调用 并行性、非阻塞系统调用、 中断
构造服务器的三种方法
线程的使用(5/5)
SPOOLing思想
应用:处理极大量数据 过程: 读入一块数据 → 处理 → 写出数据
LWP
kthread 线程链表
6.进程虚拟地址空间
7.进程上下文环境(CONTEXT)
对进程执行活动全过程的静态描述 由进程的用户地址空间内容、硬件寄存器内容 及与该进程相关的核心数据结构组成 用户级上下文:进程的用户地址空间(包括用户 栈各层次),包括用户正文段、用户数据段和用 户栈 寄存器级上下文:程序计数器、程序状态寄存器、 栈指针、通用寄存器的值 系统级上下文:
3.线程的实现机制
用户级线程 核心级线程 两者结合方法
(1)用户级线程(USER LEVEL THREAD)
由应用程序完成所 有线程的管理 通过线程库(用户空 间) 一组管理线程的过程 核心不知道线程的 存在 线程切换不需要核 心态特权 调度是针对应用的, 是特定的
对用户级线程的核心活动
高级操作系统
ADVANCED OPERATING SYSTEM
北京大学信息学院 EECS of Peking University 2010-2011
大纲
进程模型
线程模型 Windows进程线程模型 进程调度 Windows线程调度
一、进程基本概念
1.多道程序设计(multiprogramming) 允许多个程序同时进入内存并运行 目的 → 提高系统效率
进程类对象
进程 对象类型
ID; 安全描述符 基本优先级 默认处理器集合 定额限制 执行时间 I/O,VM计数 异常/调试端口 退出状态 ……
SOLARIS进程模型
进程
对用户程序执行上下文环境的抽象 包括虚拟内存地址空间, 程序资源, 和至少一个 执行线程
硬件上下文
进程执行过程中的处理机信息, 它与CPU结构相关 总体来说,就是硬件寄存器的状态 (普通寄存器, 特权寄存器) 保存在LWP中
软件上下文
地址空间, 证书,打开文件, 资源限制等等 ——同一进程中可被其他线程共享的资源
proc 数据结构
p_cred p_sessp p_pidp p_pgidp p_sig ……
认证 会话 PID GID 信号支持
段的AVL树
物理内存
u_finfo
struct uf_entry[] entry1 entry2 …… 打开的文件
vnode inode
vnode inode
p_tlist LWP 进程表 p_sessp 资源控制 LWP p_zone zone信息 kthread sched class sched class kthread sched class
系统为了管理进程设置的一个专门的数据结构,用它 来记录进程的外部特征,描述进程的运动变化过程 (又称进程描述符、进程属性) 系统利用PCB来控制和管理进程,所以PCB是系统感知 进程存在的唯一标志
SOLARIS的进程控制块与进程表
proc_t p_exec p_as 地址空间 vnode inode HAT 可执行文件 进程地址空间
进程实现:采用阻塞系统调用,进程被阻塞 线程实现:在一个进程中构造三个线程,采 用线程阻塞系统调用
2.线程的引入(1/2)
需要多线程的原因: 一个应用中同时发生着多种活动 → 如何使 程序设计模型简单化 → 新的元素:线程 → 并行实体共享同一个地址空间和所有可用数 据的能力 创建、撤消进程、进程通信、进程切换等开 销大 何谓开销? 性能考虑 多CPU系统的发展
重要的数据结构
进程 用户线程 轻量级进程 proc_t ulwp_t klwp_t
内核线程
kthread_t
对象
进程 用户线程 轻量级进程 内核线程
定
义
名
字
包含数据结构定义的头文件
uts/common/sys/proc.h lib/libc/_inc/thr_uberdata.h uts/common/sys/klwp.h uts/common/sys/thread.h
LWP轻量级进程
LWP把内核线程和用户线程绑定到一起
当程序从用户态陷入到内核态时,用户线 程的硬件上下为保存在内核线程的栈中, 保存的位置存放在LWP结构中 发生系统调用时,系统调用的参数存放在 LWP中 如果进程中有多个LWP,则这个进程的多个 用户线程可以同时访问内核的系统调用
进程、内核线程和LWP的关系
使用FORK()的示例代码
3.进程分类与进程层次结构
系统进程 用户进程
前台进程 后台进程
CPU密集型 I/O密集型
系统进程优先于用户进程
UNIX进程家族:init为根 Windows:地位相同
4. 进程状态
挂起状态
运行 三状态 模型
就绪
阻塞
五状态 模型
运行
终止
创建
就绪
阻塞
Windows
核心的进程之间没有任何关系 (包括父子关系),各运行环境子系统 分别建立、维护和表达各自的进程关系 Windows 把Win32环境子系统设计成整个 系统的主子系统,一些基本的进程管理 功能也被放置在Win32子系统中 在Windows中,与一个运行环境子系统中 的应用进程相关的进程控制块信息会分 布在本运行环境子系统、Win32子系统和 系统内核中
WINDOWS 的进程关系
POSIX应用 fork() POSIX子系 统 CreateProcess() Win32子系 统
本地过程调用
进程管 对象管 理器 理器
WINDOWS 中的WIN32进程结构
Windows
中的每个Win32进程都由一个执行体进程 块表示,执行体进程块描述进程的基本信息,并指 向其他与进程控制相关的数据结构 执行体进程块中的主要内容包括:
创建进程 打开进程 查询进程信息 设置进程信息 终止进程
对象体属性
提供的服务
WINDOWS 的进程
Windows 的进程由执行体进程块EPROCESS表示, EPROCESS即执行体进程对象
进程对象的属性:PID, PCB, Access Token, Base Priority, 句柄表,指向进程环境块PEB的指针,默 认亲和处理器集合等
3.线程模型
线程: 线程ID(标识符) 有执行状态(状态转换) 调度参数、优先级等 运行时有什么? 不运行时要做什么?(保存上下文) 有自己的堆栈,做什么? 可存取所在进程的内存和其他资源 可以创建、撤消另一个线程
进程与线程的关系
POSIX线程
IEEE
1003.1c定义的线程标准Pthread
空闲位图中的每一位指示一个处理机是否处于空闲状态调度策略windows严格基于线程的优先级来确定哪一个线程将占用处理机并进入运行状windows在单处理机系统和多处理机系统中的线程调度是不同的1主动切换线程优先级运行状态就绪状态转到阻塞状态2抢占当一个高优先级线程进入就绪状态时正在处于运行状态的低优先级线程被抢占线程优先级运行状态就绪状态从阻塞状态唤醒2抢占用户态下运行的线程可以抢占内核态下运行的线程在判断一个线程是否被抢占时并不考虑线程处于用户态还是内核态调度器只是依据线程优先级进行判断当线程被抢占时它被放回相应优先级的就绪队列的处于实时优先级的线程在被抢占时时间配额被重置为一个完整的时间配额处于动态优先级的线程在被抢占时时间配额不变重新得到处理机使用权后将运行到剩余的时间配额用完3时间配额用完线程优先级运行状态就绪状态时间配额用完如果刚用完时间配额的线程优先级降低了windows将寻找一个优先级高于刚用完时间配额线程的新设置值的就绪线程如果刚用完时间配额的线程的优先级没有降低并且有其他优先级相同的就绪线程windows将选择相同优先级的就绪队列中的下一个线程进入运行状态刚用完时间配额的线程被排到就绪队列的队尾即分配一个新的时间配额并把线程状态从运行状态改为就绪状态如果没有优先级相同的就绪线程可运行刚用完时间配额的线程将得到一个新的时间配额并继续运行4线程结束当线程完成运行时它的状态从运行状态转到终止状态如果处于终止状态的线程对象上没有未关闭的句柄则该线程将被从进程的线程列表中删除相关数据结构将被释放线程优先级提升在下列5种情况下windows会提升线程的当前优先级
(2)核心级线程(KLT)
所有线程管理由核心完成 没有线程库,但对核心线 程工具提供API 核心维护进程和线程的上 下文 线程之间的切换需要核心 支持 以线程为基础进行调度 例子:Windows
核心级线程的优点和缺点
优点: 对多处理器,核心可以同时调度同一进 程的多个线程 阻塞是在线程一级完成 核心例程是多线程的 缺点: 在同一进程内的线程切换调用内核,导 致速度下降
(3)ULT和KLT结合方法
线程创建在用户空间完成
线程调度等在核心态完成 例子:Solaris
4.SOLARIS进程线程模型
Solaris的多线程模型中包括四种实体:
进程,内核线程,用户线程和轻量级进 程(LWP)
Solaris内核是多线程的
进程是资源分配和管理的单元 内核级线程是内核的调度单元 用户级线程是程序执行在用户态的抽象 LWP把用户线程和内核线程绑定到一起
线程的引入(2/2)
进程的两个基本属性: 资源的拥有者 给每个进程分配一虚拟地址空间,保存进 程映像,控制一些资源(文件,I/O设备), 有状态、优先级、调度信息 调度单位 进程是一个执行轨迹
引入线程 的好处?
线程:可称为轻量级进程 进程中的一个运行实体、CPU调度单位 资源的拥有者还是进程或称任务
LINUX进程状态及转换
fork()
资源到位 wake_up_interruptible() 或收到信号 wake_up() 收到信号SIG_CONT wake_up()
TASK_RUNNING 就绪
等待资源到位 wake_up()
TASK_UNINTERRUPTIBLE 深度睡眠
schedule() 等待资源到位 sleep_on() schedule() 时间片到
在Windows 中,PCB也称为内核进程块KPROCESS KPROCESS即内核进程对象 EPOCESS和KPROCESS位于内核空间,PEB位于用 户空间
进程环境块
线程环境块
进程地址空间 系统地址空间 WIN32进程块 句柄表
进程块
线程块
内核进程块 进程ID 父进程ID 进程退出状态 创建和退出次数 →下一个进程块 限额块 内存管理信息 异常端口 程序调试端口 →主访问令牌 →句柄表 设备映射 进程环境块 映像文件名称 映像基地址 进程特权级 →Win32进程块 →作业对象
2. 进程创建
创建时机 —— 4种主要事件导致生成新 进程
前台进程 后台进程(守护进程daemon)
fork()、exec()
CreateProcess
地址空间
FORK()的过程
1.
2. 3.
4.
5.
6.
符 初始化子进程描述符结构 为子进程分配地址转换表 以一次一页的方式复制父进程地址数据和堆栈区,并 更新子进程地址转换表,指向这些新页面 (运用写时复制技术) 获得由子进程继承的共享资源的指针,如打开的文件 和当前工作目录 子进程就绪,加入调度队列 设置子进程从fork返回0 向父进程返回子进程PID
TASK_INTERRUPTIBLE 浅度睡眠
等待资源到位 Interruptible_sleep_on() schedule()
占有CPU 执行
ptrace() schedule()
do_exit()
TASK_STOPPED 暂停
TASK_ZOMBIE 死亡但户口未注销
5.进程控制块
(PROCESS CONTROL BLOCK,PCB)
核心不知道线程的活动,只管理线程的 进程的活动 当线程调用系统调用时,整个进程阻塞 对线程库来说,线程仍然是运行状态 即线程状态是与进程状态独立的
用户级线程的优点和缺点
优点: 线程切换不调用核心 调度是应用程序特定的:可以选择最好的算 法 ULT可运行在任何操作系统上(只需要线程库) 缺点: 大多数系统调用是阻塞的,因此核心阻塞进 程,故进程中所有线程将被阻塞 核心只将处理器分配给进程,同一进程中的 两个线程不能同时运行于两个处理器上
一个执行环境——用于执行线程的状态容器 在进程内由用户提供内核状态的对象 为用户线程提供内核状态的对象 内核中调度和执行的基本单位
proc_t ulpw_t klwp_t kthread_t
三、WINDOWS 进程线程模型
Windows进程是作为对象来管理的,进 程对象的属性包括:
进程标识(PID) 资源访问令牌(Access Token) 进程的基本优先级(Base Priority) 默认亲合处理机集合(Processor Affinity) 等
静态部分(PCB和资源表格) 动态部分:核心栈(核心过程的栈结构,不同进程在 调用相同核心过程时有不同核心栈)
中断处理和调度过程
二、线程的基本概念
线程的使用 经典的线程模型 线程的实现 实例:Solaris
1.线程的使用(1/5)
有三个线程的字处理软件
线程的使用(2/5)
一个多线程的Web服务器
线程的使用(3/5)
(a)分派线程
(b)工作线程
线程的使用(4/5)
模型 多线程 单线程进程 有限状态机 特性 并行性、阻塞系统调用 无并行性、阻塞系统调用 并行性、非阻塞系统调用、 中断
构造服务器的三种方法
线程的使用(5/5)
SPOOLing思想
应用:处理极大量数据 过程: 读入一块数据 → 处理 → 写出数据
LWP
kthread 线程链表
6.进程虚拟地址空间
7.进程上下文环境(CONTEXT)
对进程执行活动全过程的静态描述 由进程的用户地址空间内容、硬件寄存器内容 及与该进程相关的核心数据结构组成 用户级上下文:进程的用户地址空间(包括用户 栈各层次),包括用户正文段、用户数据段和用 户栈 寄存器级上下文:程序计数器、程序状态寄存器、 栈指针、通用寄存器的值 系统级上下文:
3.线程的实现机制
用户级线程 核心级线程 两者结合方法
(1)用户级线程(USER LEVEL THREAD)
由应用程序完成所 有线程的管理 通过线程库(用户空 间) 一组管理线程的过程 核心不知道线程的 存在 线程切换不需要核 心态特权 调度是针对应用的, 是特定的
对用户级线程的核心活动
高级操作系统
ADVANCED OPERATING SYSTEM
北京大学信息学院 EECS of Peking University 2010-2011
大纲
进程模型
线程模型 Windows进程线程模型 进程调度 Windows线程调度
一、进程基本概念
1.多道程序设计(multiprogramming) 允许多个程序同时进入内存并运行 目的 → 提高系统效率