fbpx
维基百科

作業 (電腦)

在計算機科學中,作業(英語:job)和工作(英語:task,又譯為任務)是在記憶體中的一組程式指令。它包括了一段虛擬定址空間分頁,與作業系統資源,提供執行緒運行的空間。有時候,它與行程被認為是同義的;但也有人認為,在即時系統(real-time)中運行的行程才被稱為作業。

Windows作业对象

Windows 2000操作系统开始,job是一组进程的集合,用于限制其使用的资源、性能信息统计维护、自动关闭子进程等。允许将进程组合在一起并创建一个进程的"容器"来限制进程能够做什么。无法将当前进程或它的任何子进程从作业中去除,这个安全特性可以确保进程无法摆脱对它施加的限制。Win32关于作业的API:

  • CreateJobObject:创建作业内核对象。若该作业已经存在,则返回一个指向该作业的句柄
  • OpenJobObject:打开命名的作业内核对象
  • CloseHandle:关闭一个作业内核对象句柄(不会自动终止作业中的进程)
  • IsProcessInJob:验证某一个进程是否存在于作业中
  • AssignProcessToJobObject:增加一个进程句柄到一个作业内核对象
  • TerminateJobObject:终止一个作业的所有进程
  • SetInformationJobObject:给job设置资源限制。作业句柄参数不能传递NULL值,以防止进程删除施加于自己身上的限制
  • QueryJobInformationObject:查询job资源限制。进程可以调用它获得其所属作业的相关信息(作业句柄参数传递NULL值),使进程能看到自己被施加了哪些限制。

使用CreateProcess创建的子进程默认属于父进程所在的job,除非CreateProcess函数的dwCreationFlags参数设置了CREATE_BREAKAWAY_FROM_JOB标志。这种情况下,不能用AssignProcessToJobObject函数把子进程关联入job。

作业的所有进程都终止,则作业对象被触发(signaled)。

示例

#include <windows.h> int main() {  HANDLE hJob = CreateJobObject(0, 0);  if (hJob)  {  //JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli;  //memset(&jeli, 0, sizeof(jeli));  //jeli.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE;  //Place some restrictions on processes in the job.  JOBOBJECT_BASIC_LIMIT_INFORMATION jobli = { 0 };   jobli.PriorityClass = IDLE_PRIORITY_CLASS;//The process always runs in the idle priority class.  jobli.PerJobUserTimeLimit.QuadPart = 10000000; //The job cannot use more than 1 second of CPU time. 100-ns pricision  jobli.LimitFlags = JOB_OBJECT_LIMIT_PRIORITY_CLASS | JOB_OBJECT_LIMIT_JOB_TIME;    if (SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, &jobli, sizeof(jobli)))  {  if (AssignProcessToJobObject(hJob, GetCurrentProcess()))  {  WinExec("notepad.exe", SW_SHOW);  //I assume that there will never be more than 10 processes in this job. #define MAX_PROCESS_IDS 10  //Calculate the number of bytes needed for structure & process IDs.  DWORD Cb = sizeof(JOBOBJECT_BASIC_PROCESS_ID_LIST) +  (MAX_PROCESS_IDS - 1) * sizeof(DWORD);  //Allocate the block of memory.  PJOBOBJECT_BASIC_PROCESS_ID_LIST pjobpil = PJOBOBJECT_BASIC_PROCESS_ID_LIST)_alloca(Cb);  //Tell the function the maximum number of processes that we allocated space for.  pjobpil->NumberOfAssignedProcesses = MAX_PROCESS_IDS;  //Request the current set of process IDs.  BOOL bRes = QueryInformationJobObject(hJob, JobObjectBasicProcessIdList,  pjobpil, Cb, &Cb);  //Enumerate the process IDs.  for (int x = 0; x < pjobpil->NumberOfProcessIdsInList; x++)  {  wchar_t ExeName[1024];  DWORD len = 1024;  HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pjobpil->ProcessIdList[x]);    BOOL Res = QueryFullProcessImageName(  hProcess, //_In_ HANDLE hProcess,  NULL, //_In_ DWORD dwFlags,  ExeName, //_Out_ LPTSTR lpExeName,  &len //_Inout_ PDWORD lpdwSize  );  DWORD dwLastError =GetLastError();  }   }   }  CloseHandle(hJob);  }  return 0; } 

參見

作業, 電腦, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目需要擴充, 2014年4月12日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此模板移除, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2014年4月12日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 此條目没有列出任何参考或来源, 2014年4月12日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目需要擴充 2014年4月12日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2014年4月12日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 此條目没有列出任何参考或来源 2014年4月12日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 在計算機科學中 作業 英語 job 和工作 英語 task 又譯為任務 是在記憶體中的一組程式指令 它包括了一段虛擬定址空間分頁 與作業系統資源 提供執行緒運行的空間 有時候 它與行程被認為是同義的 但也有人認為 在即時系統 real time 中運行的行程才被稱為作業 Windows作业对象 编辑Windows 2000操作系统开始 job是一组进程的集合 用于限制其使用的资源 性能信息统计维护 自动关闭子进程等 允许将进程组合在一起并创建一个进程的 容器 来限制进程能够做什么 无法将当前进程或它的任何子进程从作业中去除 这个安全特性可以确保进程无法摆脱对它施加的限制 Win32关于作业的API CreateJobObject 创建作业内核对象 若该作业已经存在 则返回一个指向该作业的句柄 OpenJobObject 打开命名的作业内核对象 CloseHandle 关闭一个作业内核对象句柄 不会自动终止作业中的进程 IsProcessInJob 验证某一个进程是否存在于作业中 AssignProcessToJobObject 增加一个进程句柄到一个作业内核对象 TerminateJobObject 终止一个作业的所有进程 SetInformationJobObject 给job设置资源限制 作业句柄参数不能传递NULL值 以防止进程删除施加于自己身上的限制 QueryJobInformationObject 查询job资源限制 进程可以调用它获得其所属作业的相关信息 作业句柄参数传递NULL值 使进程能看到自己被施加了哪些限制 使用CreateProcess创建的子进程默认属于父进程所在的job 除非CreateProcess函数的dwCreationFlags参数设置了CREATE BREAKAWAY FROM JOB标志 这种情况下 不能用AssignProcessToJobObject函数把子进程关联入job 作业的所有进程都终止 则作业对象被触发 signaled 示例 编辑 include lt windows h gt int main HANDLE hJob CreateJobObject 0 0 if hJob JOBOBJECT EXTENDED LIMIT INFORMATION jeli memset amp jeli 0 sizeof jeli jeli BasicLimitInformation LimitFlags JOB OBJECT LIMIT KILL ON JOB CLOSE Place some restrictions on processes in the job JOBOBJECT BASIC LIMIT INFORMATION jobli 0 jobli PriorityClass IDLE PRIORITY CLASS The process always runs in the idle priority class jobli PerJobUserTimeLimit QuadPart 10000000 The job cannot use more than 1 second of CPU time 100 ns pricision jobli LimitFlags JOB OBJECT LIMIT PRIORITY CLASS JOB OBJECT LIMIT JOB TIME if SetInformationJobObject hJob JobObjectExtendedLimitInformation amp jobli sizeof jobli if AssignProcessToJobObject hJob GetCurrentProcess WinExec notepad exe SW SHOW I assume that there will never be more than 10 processes in this job define MAX PROCESS IDS 10 Calculate the number of bytes needed for structure amp process IDs DWORD Cb sizeof JOBOBJECT BASIC PROCESS ID LIST MAX PROCESS IDS 1 sizeof DWORD Allocate the block of memory PJOBOBJECT BASIC PROCESS ID LIST pjobpil PJOBOBJECT BASIC PROCESS ID LIST alloca Cb Tell the function the maximum number of processes that we allocated space for pjobpil gt NumberOfAssignedProcesses MAX PROCESS IDS Request the current set of process IDs BOOL bRes QueryInformationJobObject hJob JobObjectBasicProcessIdList pjobpil Cb amp Cb Enumerate the process IDs for int x 0 x lt pjobpil gt NumberOfProcessIdsInList x wchar t ExeName 1024 DWORD len 1024 HANDLE hProcess OpenProcess PROCESS ALL ACCESS TRUE pjobpil gt ProcessIdList x BOOL Res QueryFullProcessImageName hProcess In HANDLE hProcess NULL In DWORD dwFlags ExeName Out LPTSTR lpExeName amp len Inout PDWORD lpdwSize DWORD dwLastError GetLastError CloseHandle hJob return 0 參見 编辑行程 執行緒 多任务处理 取自 https zh wikipedia org w index php title 作業 電腦 amp oldid 69633060, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。