作业

一、什么是作业

window中的作业本质上是一个内核对象,即能够管理进程,并加以限制的内核对象,记录各个进程的相关信息。如visual studio在创建c++项目时,会生成Cl.exe,由它生成更多的进程,如扫描编译文件、启动调试器、以及c++项目等,如果用户停止正在编译中的c++工程,就通过Cl.exe来管理控制。

二、作业在实际中的应用

1.在window 中创建一个作业对象的api函数是CreateJobObject
2.判断进程是否在作业中IsProcessInJob
3.添加限制参数,基本限制结构体JOBOBJECT_BASIC_LIMIT_INFORMATION (如空闲时一直执行,进程执行cpu时间,参数开启标识)、UI限制结构体JOBOBJECT_BASIC_UI_RESTRICTIONS.使用SetInfomationJobObject设置作业
4.进程放入作业中AssignProcessToJobObject,并resumeThread启动进程

三、如何管理作业

1.为作业中进程添加限制参数,如基本限制、UI限制、安全限制等,可以设置作业中进程执行时间、工作集、并发数、优先级、进程间访问标识、访问令牌等管理参数
2.创建、终止作业中进程
3.查询作业中统计信息,如cpu执行时间、页面错误计数、进程数、超时被终止的进程数等
4.作业通知,如cpu时间是否到期、进程何时终止等都会触发作业对象,当作业对象绑定I/O完成端口,即可获取相应的通知进而处理相关事务。如作业中无进程运行通知、cpu到期通知、进程数超标通知、进程终止通知、异常通知等。

四、总结

作业本质也是内核对象,用于登记各个进程的相关信息,并对进程添加限制,当作业对象被销毁,作业对象并不是立即清理,而是标记为无效,其他作业或进程无法使用该作业,如OpenJobObject无效,等作业中所有进程都结束后,作业对象才会被清理,绑定I/O完成端口可灵活管理作业中进程,如创建、注销相关资源,执行某些事务处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值