Windows线程管理和调度机制概述

本文详细介绍了Windows线程管理,包括线程的组成、用户级和内核级线程的区别,以及线程调度机制。Windows采用基于优先级的抢占式线程调度,线程分为32个优先级,动态调整线程优先级和时间配额来确保多线程公平执行。此外,还讨论了线程的状态转换和线程在多处理器系统中的平衡调度。
摘要由CSDN通过智能技术生成

1. 线程管理

(1)线程,有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。

(2)进程(Process)定义了一个执行环境,包括它自己私有的地址空间、一个句柄表,以及一个安全环境;线程(thread)则是一个控制流,有自己的调用栈(call stack),记录了执行的历史。每个进程都包含一个或多个线程,当进程被初始化创建时系统为该进程创建第一个线程;当最后一个线程结束时,进程也随之结束。

说道这里就需要说到线程的工作模式

进程中的线程既可以在用户模式下运行,也可以在内核模式下运行。如果一个进程运行在用户模式下,那么它就只能访问进程地址空间;如果运行在内核模式下,那么它将可以访问这个地址空间。

用户级线程
应用程序在操作系统提供的单个控制流的基础上,通过在有些控制点(比如系统调用)上分离出一些虚拟的控制流,从而模拟多个控制流的行为。由于应用程序对指令流的控制能力相对较弱,所以,用户级线程之间的切换往往受线程本身行为以及线程控制点选择的影响,线程是否能够公平地获得处理器时间取决于这些线程的代码特征。而且,支持用户级线程的应用程序代码很难做到跨平台移植,以及对于多线程模型的透明。用户级线程模型的优势
(1)线程切换效率高,因为它不涉及系统内核模式和用户模式之间的切换;
(2)另外一个好处是应用程序可以采用适合自己特点的线程选择算法,可以根据应用程序的逻辑来定义线程的优先级,当线程数量很大时。但是,相对的会增加应用程序代码的复杂度。

内核级线程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值