Windows多任务管理机制分析

合集下载

多线程程序实验报告(3篇)

多线程程序实验报告(3篇)

第1篇一、实验目的1. 理解多线程的概念和作用。

2. 掌握多线程的创建、同步和通信方法。

3. 熟悉Java中多线程的实现方式。

4. 提高程序设计能力和实际应用能力。

二、实验环境1. 操作系统:Windows 102. 开发工具:IntelliJ IDEA3. 编程语言:Java三、实验内容本次实验主要完成以下任务:1. 创建多线程程序,实现两个线程分别执行不同的任务。

2. 使用同步方法实现线程间的同步。

3. 使用线程通信机制实现线程间的协作。

四、实验步骤1. 创建两个线程类,分别为Thread1和Thread2。

```javapublic class Thread1 extends Thread {@Overridepublic void run() {// 执行Thread1的任务for (int i = 0; i < 10; i++) {System.out.println("Thread1: " + i);}}}public class Thread2 extends Thread {@Overridepublic void run() {// 执行Thread2的任务for (int i = 0; i < 10; i++) {System.out.println("Thread2: " + i);}}}```2. 创建一个主类,在主类中创建两个线程对象,并启动它们。

```javapublic class Main {public static void main(String[] args) {Thread thread1 = new Thread1();Thread thread2 = new Thread2();thread1.start();thread2.start();}```3. 使用同步方法实现线程间的同步。

```javapublic class SynchronizedThread extends Thread {private static int count = 0;@Overridepublic void run() {for (int i = 0; i < 10; i++) {synchronized (SynchronizedThread.class) {count++;System.out.println(Thread.currentThread().getName() + ": " + count);}}}}public class Main {public static void main(String[] args) {Thread thread1 = new SynchronizedThread();Thread thread2 = new SynchronizedThread();thread1.start();thread2.start();}```4. 使用线程通信机制实现线程间的协作。

电大操作系统实验报告3_ 进程管理实验

电大操作系统实验报告3_ 进程管理实验

电大操作系统实验报告3_ 进程管理实验电大操作系统实验报告 3 进程管理实验一、实验目的进程管理是操作系统的核心功能之一,本次实验的目的是通过实际操作和观察,深入理解进程的概念、状态转换、进程调度以及进程间的通信机制,掌握操作系统中进程管理的基本原理和方法,提高对操作系统的整体认识和实践能力。

二、实验环境本次实验使用的操作系统为 Windows 10,编程语言为 C 语言,开发工具为 Visual Studio 2019。

三、实验内容及步骤(一)进程的创建与终止1、编写一个 C 程序,使用系统调用创建一个子进程。

2、在父进程和子进程中分别输出各自的进程 ID 和父进程 ID。

3、子进程执行一段简单的计算任务,父进程等待子进程结束后输出结束信息。

以下是实现上述功能的 C 程序代码:```cinclude <stdioh>include <stdlibh>include <unistdh>int main(){pid_t pid;pid = fork();if (pid < 0) {printf("创建子进程失败\n");return 1;} else if (pid == 0) {printf("子进程:我的进程 ID 是%d,父进程 ID 是%d\n",getpid(), getppid());int result = 2 + 3;printf("子进程计算结果:2 + 3 =%d\n", result);exit(0);} else {printf("父进程:我的进程 ID 是%d,子进程 ID 是%d\n",getpid(), pid);wait(NULL);printf("子进程已结束\n");}return 0;}```编译并运行上述程序,可以观察到父进程和子进程的输出信息,验证了进程的创建和终止过程。

(二)进程的状态转换1、编写一个 C 程序,创建一个子进程,子进程进入睡眠状态一段时间,然后被唤醒并输出状态转换信息。

任务分配管理制度(5篇)

任务分配管理制度(5篇)

任务分配管理制度第一章总则第一条本规定制定的目的:(一)有利于公司规范化管理;(二)各部门可通过任务分配本清楚地记录本部门对公司所做出的贡献;同时便于主管进行任务分配,减少员工工作的阻力;(三)作为员工调薪、绩效考核、评优的依据,当多个领导下发任务造成任务冲突的解决依据。

第二条任务分配的原则。

公平、公开、公正、平等、自愿。

第三条凡任务分配都必须详细记录。

任务分配本分公司任务分配本(用于跨部门任务分配)、部门任务分配本两种。

第四条凡任务都须以会议的形式进行分配。

第五条任务分配本上禁止乱涂乱画;分配本由各部门主管应妥善保管,不得遗失。

第六条任务分配本凡涉及公司内部____者,不得外泄。

第七条任务分配本用完之后请将其交于总经理助理处入档,并重领新的任务分配本。

第八条任务可为两种。

日常任务和临时性任务。

日常任务包括每日/每周/每月应循环做的事,将日常任务事项列于临时性任务之前。

第二章人员安排第九条任务分配的人员安排如下:(一)总经理:指导、协调和监督各部门的任务分配,落实奖惩措施;(二)主管:任务分配;(三)员工:积极配合,执行任务;(四)总经理助理:印制任务分配本,定时____各部门主管讨论任务分配管理制度的落实效果,完善任务分配管理制度。

第三章工作流程第十条任务分配的工作流程如下:任务分配部门主管任务执行员工任务验收“谁安排,谁验收”任务监督监督小组第十一条任务分配表的填写方法:(1)编号的编写以部门名称拼音首字母+当天日期为准,若当天出现多份任务分配表,以当天日期+(第几份)为准,如综合部____年____月____日进行的任务分配为zh____0504(1);(2)完成时限由部门主管与员工协商确定;(3)员式在自愿的原则下同意任务分配者,签名确认,若员工不同意任务分配,须在备注中说明原因,部门主管视任务紧急程度将信息及时反馈于总经理;(4)返工次数采用“正”字记数法,满____次为一个“正”字,依此类推;(5)验收实行“谁安排,谁验收”的原则,也就是说,谁安排分配了任务,谁就对任务进行验收;多次返工多次验收;(6)验收评价分五等级,从高到低依次为:非常满意,满意,合格,需改进,不可接受(依次用5,4,3,2,1来代替);(7)如验收人在员工完成任务后,暂时没时间验收,导致验收日期超过完成时限,请验收人验收后在备注中说明原因;第十二条回朔任务号的编写方法。

操作系统定时任务设置与管理技巧

操作系统定时任务设置与管理技巧

操作系统定时任务设置与管理技巧一、理解定时任务在操作系统中,定时任务是一种自动执行的功能,它可以按照设定的时间间隔或特定的日期和时间来执行指定的任务。

定时任务可以用于自动备份数据、执行系统维护和更新等操作,提高工作效率和减少人工操作。

二、定时任务的设置1. 使用操作系统自带的定时任务工具不同的操作系统有不同的定时任务工具,例如在Windows系统中,可以使用任务计划程序(Task Scheduler)来设置定时任务。

在Linux系统中,可以使用Cron来设置定时任务。

2. 确定任务的执行时间在设置定时任务之前,需要确定任务的执行时间。

任务的执行时间可以是按照固定的时间间隔执行、按照每天、每周或每月的特定日期和时间执行,或者按照其他特定的条件执行。

3. 设置任务的执行命令在设置定时任务时,需要指定任务的执行命令。

执行命令可以是一个可执行程序的路径,也可以是一个脚本文件的路径。

在命令中可以包含参数,以便更好地控制任务执行的细节。

4. 配置任务的执行选项除了执行时间和命令之外,还可以配置任务的执行选项。

例如,在Windows的任务计划程序中,可以设置任务的运行权限、触发器的条件和操作系统的版本要求等。

三、定时任务的管理1. 监控任务的执行情况一旦定时任务设置完成,可以通过监控任务的执行情况来确保任务按照预期工作。

可以查看任务的执行日志,了解任务的执行状态和执行结果,以便及时处理可能出现的错误或异常情况。

2. 调整任务的执行时间在实际使用中,可能需要根据实际情况调整任务的执行时间。

可以根据任务的执行情况和需要,灵活地调整任务的执行时间,以便更好地满足业务需求。

3. 更新任务的执行命令定时任务在运行过程中,有时需要针对业务的变化而更新任务的执行命令。

例如,当需要备份不同路径下的数据时,可以更新任务的执行命令,以确保任务能够正常执行。

4. 停止或删除任务当某个定时任务不再需要执行时,可以停止或删除任务,以释放系统资源。

关键任务识别、分析与观察管理制度范文(三篇)

关键任务识别、分析与观察管理制度范文(三篇)

关键任务识别、分析与观察管理制度范文一、引言关键任务的识别、分析与观察是管理中至关重要的一环。

通过对关键任务的识别和分析,可以确定组织中最重要的目标和任务,并制定相应的管理策略和计划,以确保组织的顺利运行和发展。

观察管理制度是为了实现关键任务的顺利实施而建立的一套规范和程序。

本文将探讨关键任务的识别、分析与观察管理制度的制定范本,以供参考。

二、关键任务的识别与分析关键任务的识别与分析是组织管理的基础工作。

通过识别和分析关键任务,可以确定组织的核心目标和战略方向,并制定相应的管理计划和措施。

1. 识别关键任务识别关键任务的首要任务是了解组织的愿景和使命,并将其转化为具体的目标和任务。

关键任务应当是组织如何实现其使命和愿景的重要步骤,在整个组织中起到引领和推动的作用。

2. 分析关键任务分析关键任务是为了了解其对组织的重要性和影响程度,并确定相应的管理策略和措施。

分析关键任务可以从以下几个方面进行:(1)任务的复杂性和挑战性:分析关键任务所涉及的工作流程、资源需求、技能要求等因素,以确定任务的复杂程度和挑战程度。

(2)任务的优先级:确定关键任务的优先级,以便在资源有限的情况下,合理分配各项任务的优先级。

(3)任务的关联性:分析关键任务之间的关联性和依赖关系,以确定优先级和资源分配的合理性。

三、观察管理制度的制定观察管理制度的制定是为了确保关键任务的顺利实施和达成预期效果。

观察管理制度涉及到各个层面的管理规范和程序,它既是管理的工具,也是管理的目标。

1. 观察管理制度的目标观察管理制度的目标是为了保证关键任务的有效实施和问题的及时解决。

制定观察管理制度的目标应当具体、可测量和可达成,以便对其实施进行评估和改进。

2. 观察管理制度的要素观察管理制度的要素包括以下几个方面:(1)目标设定:根据关键任务的特点和要求,制定明确的目标和指标,以便对其实施进行观察和评估。

(2)制度建设:建立相应的管理规范和程序,明确各方责任和权限,确保关键任务的顺利实施。

计划任务管理系统

计划任务管理系统

计划任务管理系统工作目标1.构建完善计划任务管理体系:目标是设计并实施一个全面的计划任务管理系统,该系统应能确保编辑团队高效地安排、跟踪和管理所有编辑任务。

系统应包括任务分配、进度追踪、截止日期提醒以及性能评估等功能。

–任务分配模块:需能够根据编辑的专长、工作量和紧急程度智能分配任务,确保每个任务都能被合适的人负责。

–进度追踪工具:提供实时任务状态更新,通过甘特图或进度条让每个任务的一目了然,便于编辑之间相互协调和支援。

–截止日期提醒功能:自动为编辑提醒即将到来的截止日期,防止延误,同时支持自定义提醒方式,例如邮件、桌面通知或移动应用推送。

–性能评估系统:定期收集编辑的工作数据,通过定制的指标和图表帮助编辑了解个人工作效率,并提供改进建议。

2.优化编辑工作流程:目标是简化和标准化编辑工作流程,以提高工作效率和质量,减少错误。

–统一入口:建立单一的稿件提交和审核入口,减少编辑寻找稿件的时间,确保不错过任何一篇重要稿件。

–标准化审稿流程:定义明确的审稿步骤和标准,减少主观判断,确保每一篇稿件都按照既定标准处理。

–自动化校验:利用技术手段自动检查稿件的语言、格式和内容完整性,减轻编辑的基础工作负担。

3.提升团队协作能力:目标是建立一个高效、透明的沟通平台,增强团队成员之间的协作和知识分享。

–即时通讯工具:选择合适的即时通讯工具,确保团队成员能在第一时间内沟通,快速解决问题。

–知识分享机制:定期举办线上或线下知识分享会,鼓励编辑们分享各自的工作经验和技巧,共同进步。

–跨部门协作平台:与其他部门建立协作机制,确保编辑工作能与其他环节有效对接,形成工作闭环。

工作任务1.调研并选择合适的任务管理工具:研究和比较市场上的不同任务管理工具,根据编辑团队的具体需求,选择最适合的系统进行试用和评估。

–功能测试:对候选的 task management systems 进行详细的功能测试,确保它们能满足我们的需求。

–用户反馈:收集编辑团队对于试用系统的反馈,了解系统的实际使用体验和存在的问题。

动态管理、双周跟踪、任务提示、销号审核等工作机制,-概述说明以及解释

动态管理、双周跟踪、任务提示、销号审核等工作机制,-概述说明以及解释1.引言1.1 概述概述部分旨在介绍动态管理、双周跟踪、任务提示、销号审核等工作机制的背景和重要性。

这些工作机制旨在提升组织的管理效率和决策制定过程的准确性,从而促进工作的顺利进行。

动态管理是一种灵活、适应性强的管理方式,它通过不断跟踪和调整工作计划,确保组织在快节奏、不确定性的环境中能够及时做出反应。

双周跟踪是一种特定的管理工作机制,它通过每两周进行一次跟踪会议或评估,及时了解和解决工作中的问题,以确保项目能够按时交付。

任务提示则是一种用于提醒和引导员工完成任务的方法,通过设置提醒事项,帮助员工合理安排时间和资源,提高工作效率。

而销号审核是一种用于确认某项工作或任务已经完成的程序,能够增加工作的透明度和准确性。

在本文中,我们将深入探讨动态管理、双周跟踪、任务提示、销号审核等工作机制的实施步骤、具体要点以及它们的优势和应用场景。

通过深入了解这些工作机制,我们能够更好地利用它们来提升管理效能,确保工作的顺利进行。

在结论部分,我们将总结各个工作机制的特点和作用,并展望它们未来的发展方向。

阅读本文后,读者将能够深入了解动态管理、双周跟踪、任务提示、销号审核等工作机制,并能够灵活运用它们来提高工作效率、促进组织的发展。

接下来,让我们进入文章的正文部分,深入探讨这些工作机制的具体要点和应用。

1.2 文章结构文章结构部分的内容可以按照以下方式进行编写:文章结构本文的结构主要包括引言、正文和结论三个部分。

引言(Introduction)引言部分主要对整篇文章进行了概述,包括对动态管理、双周跟踪、任务提示、销号审核等工作机制的基本介绍,并提出了本文的目的和意义。

正文(Main Body)正文部分根据题目所给工作机制的不同,分为了动态管理、双周跟踪、任务提示和销号审核四个主要篇章。

每个篇章分别对工作机制的要点进行了详细的阐述和分析。

动态管理部分介绍了什么是动态管理,它的定义、特点以及应用场景。

多线程并发实验报告

一、实验目的1. 理解多线程并发编程的基本概念和原理;2. 掌握Java多线程编程的基本方法和技巧;3. 学习线程同步机制,解决线程安全问题;4. 熟悉线程调度策略,提高程序性能。

二、实验环境1. 操作系统:Windows 102. 开发工具:IntelliJ IDEA3. JDK版本:1.8三、实验内容1. 线程创建与启动2. 线程同步与互斥3. 线程通信与协作4. 线程池与线程调度5. 线程局部变量与共享变量四、实验步骤及结果分析1. 线程创建与启动实验步骤:(1)创建一个继承自Thread类的子类;(2)重写run()方法,定义线程的执行逻辑;(3)创建Thread对象,并调用start()方法启动线程。

实验结果:成功创建并启动两个线程,分别执行各自的run()方法。

2. 线程同步与互斥实验步骤:(1)创建一个共享资源;(2)使用synchronized关键字声明同步方法或同步代码块;(3)在同步方法或同步代码块中访问共享资源。

实验结果:线程在访问共享资源时,能够保证互斥,防止数据不一致。

3. 线程通信与协作实验步骤:(1)使用wait()和notify()方法实现线程间的通信;(2)创建共享对象,作为线程间通信的媒介;(3)在等待线程中调用wait()方法,在通知线程中调用notify()方法。

实验结果:线程能够通过wait()和notify()方法实现通信与协作,完成特定任务。

4. 线程池与线程调度实验步骤:(1)使用Executors工厂方法创建线程池;(2)提交任务到线程池;(3)关闭线程池。

实验结果:线程池能够有效地管理线程,提高程序性能。

5. 线程局部变量与共享变量实验步骤:(1)创建线程局部变量;(2)创建共享变量;(3)在各个线程中访问和修改线程局部变量与共享变量。

实验结果:线程局部变量在各个线程中独立存在,不会相互干扰;共享变量在各个线程中共享,需要使用同步机制保证数据一致性。

《操作系统》实验二

《操作系统》实验二一、实验目的本实验旨在加深对操作系统基本概念和原理的理解,通过实际操作,提高对操作系统设计和实现的认知。

通过实验二,我们将重点掌握进程管理、线程调度、内存管理和文件系统的基本原理和实现方法。

二、实验内容1、进程管理a.实现进程创建、撤销、阻塞、唤醒等基本操作。

b.设计一个简单的进程调度算法,如轮转法或优先级调度法。

c.实现进程间的通信机制,如共享内存或消息队列。

2、线程调度a.实现线程的创建、撤销和调度。

b.实现一个简单的线程调度算法,如协同多任务(cooperative multitasking)。

3、内存管理a.设计一个简单的分页内存管理系统。

b.实现内存的分配和回收。

c.实现一个简单的内存保护机制。

4、文件系统a.设计一个简单的文件系统,包括文件的创建、读取、写入和删除。

b.实现文件的存储和检索。

c.实现文件的备份和恢复。

三、实验步骤1、进程管理a.首先,设计一个进程类,包含进程的基本属性(如进程ID、状态、优先级等)和操作方法(如创建、撤销、阻塞、唤醒等)。

b.然后,实现一个进程调度器,根据不同的调度算法对进程进行调度。

可以使用模拟的方法,不需要真实的硬件环境。

c.最后,实现进程间的通信机制,可以通过模拟共享内存或消息队列来实现。

2、线程调度a.首先,设计一个线程类,包含线程的基本属性(如线程ID、状态等)和操作方法(如创建、撤销等)。

b.然后,实现一个线程调度器,根据不同的调度算法对线程进行调度。

同样可以使用模拟的方法。

3、内存管理a.首先,设计一个内存页框类,包含页框的基本属性(如页框号、状态等)和操作方法(如分配、回收等)。

b.然后,实现一个内存管理器,根据不同的内存保护机制对内存进行保护。

可以使用模拟的方法。

4、文件系统a.首先,设计一个文件类,包含文件的基本属性(如文件名、大小等)和操作方法(如创建、读取、写入、删除等)。

b.然后,实现一个文件系统管理器,包括文件的存储和检索功能。

软件多项目管理可拆分资源调度优化

信IB 与电IEChina Computer & Communication後件卄发与龛用2021年第3期软件多项目管理可拆分资源调度优化黄浩1"马学森谈杰I(1.合肥工业大学计算机与信息学院,安徽合肥230009; 2.广东三水合肥工业大学研究院,广东佛山528000; 3.安全关键工业测控技术教育部工程研究中心,安徽合肥 230009 )摘 要:在软件开发中,多项目管理资源调度一直是影响控制软件开发成本和开发效率的难点.为此,笔者构建一种面 向资源、项目的多任务的管理优化模型,针对问题的特点,在现有的遗传算法的基础上,提出一种双层混合循环迭代算法(TwoLevel Hybrid Cycle Iterative Algorithm, TLHCIA ).该算法使用作业划分策略提高初始种群的有效性,使用作业优先搜索算法提高迭代速度,使用作业资源转移调度机制缩短多任务资源调度时间.实验结果表明,笔者提出的TLHCIA 可以有效避免不合理的资源转移,减少资源调度冲突,给出更高质量的资源分配和调度方案,从而实现多任务并行执行。

关键词:自适应遗传算法;项目调度;资源转移网络;循环迭代算法;调度机制中图分类号:TP393 文献标识码:A 文章编号:1003-9767 (2021) 03-142-03Split Resource Scheduling Optimization in Software Multi ProjectManagementHUANG Hao 1'3, MA Xuesen 1'2'3, TAN Jie 1'3(1. School of Computer and Information, Hefei University of Technology, Hefei Anhui 230009, China; 2. Research Inst 让ute of Hefei University of Technology, Sanshui, Guangdong, Foshan Guangdong 528000, China; 3. Engineering Research Center of Safety CriticalIndustiral Measurement and Control Technology, Ministy of Education, Hefei Anhui 230009, China)Abstract: In software development, multi-project management resource scheduling has always been a difficult problem incontrolling software development costs and improving development efficiency. Aiming at the characteristics of the problem, based on the existing genetic algorithm, by constructing a resource and project-oriented multi-task optimization scheduling model, a Two LevelHybrid Cycle Iterative Algorithm (TLHCIA) is proposed. The algorithm uses a job division strategy to improve the effectiveness of theinitial population, a job-first search algorithm to increase the it e ration speed, and a job resource transfer scheduling mechanism to reduce multi-task resource scheduling time. Experimental results show that the TLHCIA proposed by the author can effectively avoidunreasonable resource transfers, reduce resource scheduling conflicts, and provide higher-qual 让y resource allocation and schedulingschemes, thereby achieving parallel execution of multi-tasks.Keywords : adaptive genetic algorithm; project scheduling; resource transfer network; cyclic iteration algorithm; schedulingmechanism0引言目前,国内外学者已对资源受限多项目调度问题进行了 大量研究和详细阐述E 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第19卷 第4期 成都大学学报(自然科学版) Vol119No13 2000年12月 Acta Scientiarum Naturalium Universitatis Chengduensis Dec12000
Windows多任务管理机制分析
刘永红
(成都大学都江分部 都江堰 611830)
摘 要 本文讨论了Windows中的多任务调度机制,简述了Windows多任务调度过程的内部工作原理,并通过对Windows内核中未公开的任务调度程序及相关函数的分析,为Windows编程人员提供了一些人为干预Windows任务调度的方法。

关键词 调度 虚拟机 优先级 事件 任务数据库
1 引 言
Windows是当今流行的多任务操作系统,其多任务处理可分为两类:协同式多任务和抢先式多任务处理模式。

使用协同式多任务处理模式,CPU的分配直接由应用程序决定,所以系统性能好坏取决于应用程序设计好坏。

而运行抢先式多任务处理模式,各进程占用CPU 的时间由系统调度程序决定,当调度程序检测出有比当前任务优先级更高的程序事件后,暂停当前任务并将CPU时间分配给优先级更高的进程。

所有的Win16应用程序都在同一台虚拟机上运行,各程序之间采用的是协同式多任务处理。

每个Win32应用程序和MS-DOS应用程序都具有自己专用的虚拟机,其进程按抢先式多任务处理方式运行。

2 Windows中的多任务调度策略
Windows中调度的任务有两种状态:运行状态和等待状态。

正在运行的任务处于运行状态,当该任务把CPU控制权交给其他任务后,就被置为等待状态。

为了便于任务调度和保存每个任务运行的参数,Windows在装载应用程序时,由LoadM odule()函数创建一任务数据库(简称T DB),该任务数据库在内存中是以链表的形式存在,T DB链表中的结点记下了每个任务切换时的堆栈指针、中断处理程序地址及此任务对应的模块句柄和实例句柄等。

收稿日期 2000-06-01
Windows 就是根据T DB 链表中存放的各个任务的数据信息来完成任务调度的。

对Windows 而言,CPU 属于临界资源,在某一时刻只有一个任务独占CPU 。

为了合理分配CPU ,提高系统的性能,Windows 根据任务是否存在等待事件来进行任务调度。

如果当前任务没有事件可供处理,那么就应该把控制权交给其他具有等待事件的任务。

为了记录每个任务的等待事件个数,在T DB 链表中,为每个任务建立一个事件计数器(T DB 偏移6处的值),系统调度程序就是根据该计数器来进行任务调度。

我们可以通过Windows 中未公开的核心函数P ostEvent ()把指定任务的事件计数器值增1,人为地伪造一个事件,引起相应的任务被唤醒。

当有多个任务都具有等待事件时,Windows 采用的最高优先级(HPF )算法进行调度。

为此Windows 定义了任务的优先权值:范围从-32到+15,任务的优先权值越小,它的优先级就越高,其任务结点在T DB 链表中的位置也越靠前。

而在实际应用中,绝大多数Windows 应用程序的优先值都是0,若优先权值相同,则按先来先服务的原则进行。

任务的优先权值只对具有等待事件的任务生效,如果一个任务没有等待事件,即使优先权再高,也不会被调度。

若当前任务所分配的时间片用完或当前任务再无等待事件,任务调度程序就要释放当前任务的控制权,把控制权交给已选中的可调度任务。

但在Windows API 中并没直接公开这样一个函数,许多具有释放控制权功能的函数都被隐藏在G etMessage ()或PeekMessage ()这样的消息函数中,当应用程序在消息环中没有消息可供接收时,它就会把控制权交给别的任务,以防止当前任务进入死循环。

当前任务释放控制权以后,如果没一个任务被调度程序选中,调度程序就会使Windows 进入系统空闲状态,相应的电源管理软件就会使整个系统处于低能耗的睡眠状态,直至有任务被唤醒而重新开始正常运转。

3 在Windows 中如何实现人工干预任务调度过程
Windows 的核心任务调度程序是ReSchedule (),其作用是根据相应的调度策略,在T DB 链表中选定一个具有等待事件且优先级较高的一个任务,然后把这个任务切换进来。

在检测完DOS 重入标记和任务调度重入标记后,ReSchedule ()将首先调整本次被调度的任务在T DB 链表中的位置,以使得其他未被调度的任务在下一次调度时的优先级比它要高,从而保证调度的机会均等性。

接着在旧任务的T DB 中保存它的当前状态,并从被唤醒的新任务的堆栈中恢复其运行环境,完成这次调度。

如果整个T DB 链表中没有一个任务可以调度,调度程序就进入了空闲循环,以等待用户进行一些操作来产生调度事件。

如果用户不想通过调度程序遍历T DB 链表,来搜寻那些存在等待事件的可调度任务,可以通过DirectedY ield ()函数来直接调度指定任务。

该函数将不会遍历T DB 任务链表,它直接把控制切换到指定任务中去执行。

如果DirectedY ield ()唤醒的是一个不存在等待事件的任务,那么这个任务将不会被执行,这种情况下,调度程序将搜索T DB 链表以寻找具有可调度事件的任务。

为了强行执行一个指定任务,可以通过P ostEvent ()函数来给指定任务伪造一个事件,也可以调用函数P ostAppMessage ()或者P ostMessage ()来给应用程序
・84・成都大学学报(自然科学版)
传递一个W M -NU LL 消息,然后再调用DirectedY ield (),这时调度程序就会无条件地运行指定任务,而不理会任务是否有真正的事件。

我们在编写Windows 的一个多任务调度程序时,如果想随时能够指定下一个运行的任务,就可以通该方法完成。

参考文献
1 全正等译,未公开的Windows 核心技术,北京:清华大学出版社.
2 段爱民等译,Windows95高级实用指南,北京:清华大学出版社.
Analysis of Multitasking Management
Principles in Windows
Liu Yonghong
(Dujiang Branch of Chengdu University ,Dujiangyan ,611830)
ABSTRACT
The article is about multitasking management principles in windows ,and introduces s ome reserved windows API functions ,providing windows programmers with the method of manual control in multitasking windows.
K ey Word Scheduling Virtual com puter Priority Event T ask database
本刊启事
为适应我国信息化建设需要,扩大作者学术交流渠道,本刊已加入《中国学术期刊(光盘版)》和“中国期刊网”。

作者著作权使用费已与本刊稿酬一次性付给。

如作者不同意将文章编入该数据库,请在来稿时声明,本刊将做适当处理。


94・刘永红 Windows 多任务管理机制分析。

相关文档
最新文档