Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

229224
1178
109351


[리눅스] tgid와 pid에 대해서... 4. Process Management

예전 커널부터 리눅스는 태스크 마다, tgid 와 pid 멤버가 있었습니다.

tgid 는 thread group id 을 나타내고, (posix.1 에서 정의하는 프로세스)
pid 는 thread id 를 나타냅니다,

예전에 모든 스레드는, tgid 와 pid 가 같았습니다.

새로운 커널에서는 leader thread 인 경우만, tgid 와 pid 가 같고, child thread 인 경우는 tgid 와 pid 는 다릅니다.

getpid 를 호출하면 tgid 를 돌려주므로, 같은 thread group 인 경우 다 같습니다.
pid 를 알고 싶으면, sys_gettid() 커널 함수를 호출하면 되고, child thread 에 signal 을 보내고 싶으면, sys_tkill() 커널 함수를 호출하면 됩니다.

아직까지는 유저모드에서 사용할 수 있는 gettid, tkill 은 없는 것 같습니다.

그리고, /proc 은 /proc/tgid 에 대해서만 생성해주기 때문에, /proc 을 통해서는 child thread 에 대해서
알기 어려울 것 같습니다.

Reference(프로세스 관리)
4.9 프로세스 컨택스트 정보는 어떻게 저장할까?
 4.9.1 컨택스트 소개
 4.9.2 인터럽트 컨택스트 정보 확인하기
 4.9.3 Soft IRQ 컨택스트 정보 확인하기
 4.9.4 선점 스케줄링 여부 정보 저장
4.10 프로세스 디스크립터 접근 매크로 함수
 4.10.1 current_thread_info()
 4.10.2 current 매크로란
4.11 프로세스 디버깅
 4.11.1 glibc fork 함수 gdb 디버깅
 4.11.2 유저 프로그램 실행 추적 

덧글

댓글 입력 영역