Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

41107
469
422673


[리눅스커널] 프로세스: 태스크 디스크립터(task_struct 구조체) - 프로세스 연결 리스트 4. 프로세스(Process) 관리

task_struct 구조체의 tasks 필드는 list_head 구조체로서 연결 리스트 타입입니다. 커널에서 구동 중인 모든 프로세스는 tasks 연결 리스트에 등록돼 있습니다. 그렇다면 프로세스의 태스크 디스크립터 tasks 연결 리스트 필드는 언제 init 프로세스의 태스크 디스크립터 tasks 연결 리스트에 등록될까요?

프로세스는 처음 생성될 때 init_task 전역변수 필드인 tasks 연결 리스트에 등록됩니다. 프로세스를 생성할 때 호출되는 copy_process() 함수를 보면서 처리 과정을 살펴보겠습니다. 

* 유튜브 강의 동영상도 있으니 같이 들으시면 좋습니다. 




#프로세스

프로세스 소개 
프로세스 확인하기  
프로세스는 어떻게 생성할까?  
유저 레벨 프로세스 실행 실습  
커널 스레드  
커널 내부 프로세스의 생성 과정   
프로세스의 종료 과정 분석  
   * 프로세스 종료 흐름 파악    
   * do_exit() 함수 분석   
   * do_task_dead() 함수 분석   
   * do_task_dead() 함수를 호출하고 난 후의 동작    
태스크 디스크립터(task_struct 구조체)  
   * 프로세스를 식별하는 필드   
   * 프로세스 상태 저장   
   * 프로세스 간의 관계   
   * 프로세스 연결 리스트   
   * 프로세스 실행 시각 정보   
스레드 정보: thread_info 구조체  
   * thread_info 구조체란?   
   * thread_info 구조체 분석    
   * thread_info 구조체의 주소 위치는 어디일까?  
   * 컨텍스트 정보 상세 분석    
      ** 인터럽트 컨텍스트 실행 정보 저장  
      ** Soft IRQ 컨텍스트 실행 정보 저장  
      ** 선점 스케줄링 여부 확인    
   * cpu 필드에 대한 상세 분석   
   * thread_info 구조체 초기화 코드 분석   
프로세스의 태스크 디스크립터에 접근하는 매크로 함수  
   * current 매크로란?   
   * current_thread_info() 매크로 함수 분석   
프로세스 디버깅  
   * glibc의 fork() 함수를 gdb로 디버깅하기  
   * 리눅스 유틸리티 프로그램을 이용한 실행 추적   


"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)


# Reference: For more information on 'Linux Kernel';

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 1

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 2


 
repository:
http://rousalome.egloos.com/10024994




핑백

덧글

댓글 입력 영역