Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

51107
469
422683


[리눅스커널] thread_info 구조체의 preempt_count - 선점 스케줄링 여부 확인 4. 프로세스(Process) 관리

리눅스 커널의 핵심 동작은 스케줄링입니다. 프로세스는 schedule() 함수를 호출해서 명시적으로 스케줄링할 수도 있지만 인터럽트 처리 후 선점 스케줄링될 수 있습니다. 커널은 스케줄링 동작 중에 thread_info 구조체의 preempt_count 필드에 저장된 값을 보고 선점 스케줄링 실행 여부를 판단합니다.

그런데 여기서 한 가지 의문이 생깁니다. preempt_count 필드가 어떤 값일 때 선점 스케줄링을 시작할까요? preempt_count 필드가 0이면 프로세스가 선점될 수 있는 조건이라고 판단합니다. 

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




#프로세스

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


핑백

덧글

댓글 입력 영역