_do_fork 3

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 12 - 4_4_user_process생성과 종료 과정 분석

안녕하세요.  이전 글에서 4_4_user_process라는 사용자 프로그램을 만들어 ftrace 메시지까지 만들어 봤습니다. 책에서는 raspbian_proc로 만들어 테스트한 내용입니다. 내용은 거의 동일합니다.   ftrace 메시지를 바탕으로 프로세스가 어떻게 생성되고 종료하는지 과정을 분석하는 내용입니다.  1. ftrace_log.c 분석 준비  분석할 내용은 get_ftrace.sh를 실행 디렉터리에 ftrace_log.c 파일로 되어 있을 것입니다.파일을 열어 확인합니다.  이전에 봤던 메시지 형태입니다. 그런데 얼마 실행하지 않은 것 같은데 많은 양의 메시지가 저장되어 있습니다. 전체 다 보는 것은 아니고 실행했던 파일 부분을 찾아서 보겠습니다.  rpi_kernel_src $ vim f..

IT/Linux Kernel 2025.03.23

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 11 - _do_fork() 흐름 파악과 ftrace 메시지 추출

안녕하세요.    _do_fork() 함수를 알아보기 위한 사전 정보가 조금 필요에 _do_fork() 마무리하지 못해서 추가 부분을 정리해 봅니다.  1. 유저 레벨 프로세스 생성 시 _do_fork() 함수처리 흐름  유저 레벨 프로세서 생성할 때 흐름은 아래와 같이 fork() 함수 호출하면 glibc 통해 시스템콜을 발생하고 이에 대응하는 sys_clone() 함수 호출합니다. 이후 호출을 따라가면 _do_fork() 함수를 호출합니다.  1) sys_clone 함수  sys_clone() 함수 내부를 보면 return 값(PID)을 받기 위해 _do_fork() 함수를 호출합니다.  SYSCALL_DEFINE5 매크로와 함께 커널 소스 빌드하는 과정에서 sys_ 접두사가 붙여 sys_clone으..

IT/Linux Kernel 2025.03.20

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1, 도서 공부하기 10 - 프로세스 생성

안녕하세요.   프로세스와 스레드에 대해 보았고, 이번에 생성하는 과정을 확인을 알아보겠습니다.  진행하기 앞서서 유저 모드와 커널 모드 부분을 먼저 알고 시작해야 할 것 같아서 앞쪽 내용에 추가해 보았습니다. 알고 있는 내용이면 이 부분은 넘어가고 아래쪽 2. 프로세스 생성부터 보면 됩니다.  1. 유저 모드와 커널 모드 그리고 영역  유저 모드와 커널 모드가 나오면, 권한에 관한 것이라고 알 수 있는데, 공간에 대한 개념이 같이 나오기 때문에 혼돈이 있을 것 같아서 나눠서 생각해 보면 좋을 것 같아서 추가해 보았습니다. 1) 유저 모드와 커널 모드 (1) 유저 모드(User Mode)  - 권한 수준: 제한된 권한을 가진 모드입니다. 응용 프로그램(예: 웹 브라우저, 문서 편집기)이 주로 유저 모드에..

IT/Linux Kernel 2025.03.17