잡을 생성하고 나면 잡에서 수행할 프로세스들에 대한 제약사항을 설정할 수 있습니다.

설정 할 수 있는 제약사항으로는 아래와 같은 내용들이 있습니다.

- 기본 제약사항과 확장 제약사항은 잡 내 프로세스가 시스템 리소스를 독점하지 못하게 합니다.

- 기본 UI 제약사항은 잡 내의 프로세스가 사용자 인터페이스를 사용하지 못하도록 합니다.

- 보안 제약사항은 잡 내의 프로세스가 보안 자원(파일, 레지스트리 등)에 접근하지 못하도록 한다.


잡에 대한 내용은 아래 포스팅 참고

- 잡 (Job) : http://wonjayk.tistory.com/287


이러한 제약사항들은 아래 함수로 설정할 수 있습니다.



- hJob : CreeateJobObject로 생성한 잡의 핸들로 제약사항을 설정할 잡의 핸들을 설정하면 됩니다.

- JobObjectInfoClass : 어떤 제약사항을 전달할 것인지 설정

- lpJobObjectInfo : 제약사항을 전달할 구조체의 주소

- cbJobObjectInfoLength : 제약사항 전달 구조체의 크기




제약사항의 형태는 아래 구조체 처럼 10가지로 구성되어있습니다.



앞으로의 포스팅에서는 총 4가지의 제약사항에 대해서 알아보도록 하겠습니다.

- 기본 제약사항 : JobObjectBasicLimitInformation = 2

- 확장 제약사항 : JobObjectExtendedLimitInformation = 9

- 기본 UI 제약사항 : JobObjectBasicUIRestrictions = 4

- 보안 제약사항 : JobObjectSecurityLimitInformation = 5


이번 포스팅에서는 기본 제약사항인 JobObjectBasicLimitInformation에 대해서 알아보도록 하겠습니다.

- 확장, 기본 UI, 보안 제약사항은 다음 포스팅에서 설명하도록 하겠습니다.


나머지 제약사항에 대한 상세한 내용은 아래 링크를 참고하시기 바랍니다.

https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms686216(v=vs.85).aspx



JobObjectBasicLimitInformation 

https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms684147(v=vs.85).aspx


 멤버

기능 

 PerProcessUserTimeLimit 

 각 프로세스 별 사용 가능한 최대 유저모드 시간 지정 (100ns 단위) 

 - LimitFlag : JOB_OBJECT_LIMIT_PROCESS_TIME

 PerJobUserTimeLimit

 잡 내의 프로세스가 얼마나 많은 유저모드 시간을 사용할 수 있는지 지정 (100ns 단위) 

 - LimitFlag : JOB_OBJECT_LIMIT_JOB_TIME

 LimitFlags

 잡에 어떤 제약사항을 설정할 지 나타낼 비트 플래그

 이 플래그를 설정해 주어야 멤버들을 사용할 수 있다.

 MinimumWorkingSetSize

 프로세스 별 최소 워킹셋 크기를 지정 

 - LimitFlag : JOB_OBJECT_LIMIT_WORKINGSET

 MaximumWorkingSetSize

 프로세스 별 최대 워킹셋 크기를 지정
 - LimitFlag : JOB_OBJECT_LIMIT_WORKINGSET

 ActiveProcessLimit

 잡 내에서 동시에 수행할 수 있는 프로세스의 최대 수
 - LimitFlag : JOB_OBJECT_LIMIT_ACTIVE_PROCESS

 Affinity

 잡 내의 프로세스들을 수행할 수 있는 CPU의 부분집합 설정
 - LimitFlag : JOB_OBJECT_LIMIT_AFFINITY

 PriorityClass

 잡 내의 모든 프로세스들에 대한 우선순위 지정

 - LimitFlag : JOB_OBJECT_PRIORITY_CLASS

 SchedulingClass

 잡 내의 스레드들에게 다른 스레드에 비해 상대적으로 다른 퀀텀 시간을 할당

 - LimitFlag : JOB_OBJECT_LIMIT_SCHEDULING_CLASS

 - 0 ~ 9까지, 기본값은 5


이러한 제약사항을 잘 설정해두지 않으면 잡 내의 프로세스가 오류를 일으켜 종료되었다고 가정하면,

프로세스가 종료되지 않아 시스템 리소스를 계속 낭비하게 될 수도 있습니다.


때문에, 잡을 사용할 때에는 이런 기본 제약사항을 잘 설정해주어야 합니다.

'Windows > Windows Programming' 카테고리의 다른 글

잡 (Job) - 프로세스 제약사항 설정 2  (1) 2016.05.28
잡 (Job)  (0) 2016.05.07
프로세스 권한 상승 - ShellExecuteEx()  (0) 2016.04.16
자식 프로세스  (0) 2016.04.09
프로세스의 종료  (0) 2016.04.02
Posted by 긍정왕오킹