Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

41111
637
415417


[리눅스커널] 프로세스: do_exit() 함수 분석 4. 프로세스(Process) 관리

do_exit() 함수의 이름만 보더라도 '종료를 실행한다'라는 동작을 할 것이라 예상할 수 있습니다. 여기서 '종료를 실행한다'의 주체는 프로세스입니다. 

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




#프로세스

프로세스 소개 
프로세스 확인하기  
프로세스는 어떻게 생성할까?  
유저 레벨 프로세스 실행 실습  
커널 스레드  
커널 내부 프로세스의 생성 과정   
프로세스의 종료 과정 분석  
태스크 디스크립터(task_struct 구조체)  
스레드 정보: 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/10024987



핑백

덧글

  • ilye21 2021/11/18 20:34 # 삭제 답글

    안녕하세요 리눅스 디버깅 1 책을 읽으면서 do_exit()함수 예제를 보고 이해가 안되는 것이 있습니다.

    작동 원리는 알겠는데 그 void __noreturn do_exit(long code) 문장에서 __noreturn 표현을 이해하지 못하겠습니다.

    __noreturn 같은 표현은 무슨 표현입니까?
  • AustinKim 2021/11/20 06:29 #


    do_exit() 함수의 앞 부분에 '__noreturn' 키워드가 보이는데요.
    https://elixir.bootlin.com/linux/v4.19.30/source/kernel/exit.c#L773
    void __noreturn do_exit(long code)

    전처리 파일에서 do_exit() 함수를 확인하면 다음과 같습니다.

    ~/src/rpi_419v_src/out32/kernel$ vi .tmp_exit.i
    void __attribute__((noreturn)) do_exit(long code)

    __attribute__((noreturn)) 키워드가 보이는데요.

    함수 앞 부분에 __attribute__((noreturn)) 키워드를 지정하면 GCC 컴파일러에게
    "이 함수는 return하지 않는 루틴이므로 해당 코드를 기계어로 생성할 때이에 맞게 최적화해달라" 부탁한다고 볼 수 있겠네요.

    관련 자료는 아래 링크에서 확인하실 수 있습니다.

    https://www.keil.com/support/man/docs/armcc/armcc_chr1359124976881.htm

    감사합니다.
댓글 입력 영역