Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

230224
1178
109352


[리눅스커널] 프로세스: 프로세스는 어떻게 생성하나? 4. Process Management

이번 절에서는 프로세스가 생성하는 과정에 대해 설명을 드리겠습니다.

     "프로세스 생성 과정을 왜 알아야 할까?"

리눅스 커널에서 프로세스를 생성하는 함수를 분석하면 자연히 다음 내용을 알게 됩니다.
  - 프로세스가 부모 프로세스로부터 어떻게 복제되는가 
  - 생성된 프로세스가 실행을 시작하는가
  - 프로세스 자료구조는 어떻게 처리하는가

그런데 리눅스에서 구동되는 프로세스는 크게 유저 레벨에서 생성된 프로세스와 커널 레벨에서 생성된 프로세스로 분류할 수 있습니다. 각 프로세스 타입 별로 프로세스 생성 과정이 다릅니다.
  - 유저 프로세스: 유저 공간에서 프로세스를 생성하는 라이브러리(glibc) 도움을 받아 커널에게 프로세스 생성 요청을 한다.
  - 커널 프로세스: 커널 내부 kthread_create() 함수를 호출해서 커널 프로세스를 생성한다.

프로세스 종류에 따라 프로세스를 생성하는 흐름은 다르나 한 가지 공통점이 있습니다.

     "프로세스를 생성할 때 _do_fork() 함수를 호출한다."

이번 절에서는 _do_fork() 함수를 중심으로 프로세스 생성 과정을 살펴보겠습니다.


Reference(프로세스 관리)
4.9 프로세스 컨택스트 정보는 어떻게 저장할까?
 4.9.1 컨택스트 소개
 4.9.2 인터럽트 컨택스트 정보 확인하기
 4.9.3 Soft IRQ 컨택스트 정보 확인하기
 4.9.4 선점 스케줄링 여부 정보 저장
4.10 프로세스 디스크립터 접근 매크로 함수
 4.10.1 current_thread_info()
 4.10.2 current 매크로란
4.11 프로세스 디버깅
 4.11.1 glibc fork 함수 gdb 디버깅
 4.11.2 유저 프로그램 실행 추적 

핑백

덧글

댓글 입력 영역