Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

8179
1390
307630


[리눅스커널] thread_info 구조체의 preempt_count - 인터럽트 컨텍스트 실행 저장 4. 프로세스(Process) 관리

리눅스 시스템에서 인터럽트는 언제든지 발생할 수 있습니다. 인터럽트가 발생하면 프로세스 실행을 멈추고 인터럽트에 해당하는 인터럽트 핸들러를 실행합니다. 커널에서는 인터럽트가 발생해서 인터럽트 서비스 루틴을 실행하는 동작을 인터럽트 컨텍스트라고 부릅니다.  

thread_info 구조체의 preempt_count 필드에 인터럽트가 실행 중인 상태를 나타내는 비트를 설정합니다. 이 비트를 읽어 인터럽트 컨텍스트 유무를 식별합니다. 리눅스 커널에서는 현재 실행 중인 코드가 인터럽트 컨텍스트 내에 있는지 알려주는 in_interrupt() 함수를 제공합니다. 

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




#프로세스

프로세스 소개 
프로세스 확인하기  
프로세스는 어떻게 생성할까?  
유저 레벨 프로세스 실행 실습  
커널 스레드  
커널 내부 프로세스의 생성 과정   
프로세스의 종료 과정 분석  
   * 프로세스 종료 흐름 파악    
   * 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/10025053




핑백

덧글

댓글 입력 영역