잡을 생성하고 나면 잡에서 수행할 프로세스들에 대한 제약사항을 설정할 수 있습니다.
설정 할 수 있는 제약사항으로는 아래와 같은 내용들이 있습니다.
- 기본 제약사항과 확장 제약사항은 잡 내 프로세스가 시스템 리소스를 독점하지 못하게 합니다.
- 기본 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 |