LINUX
Posts
487 posts[라즈베리파이] 프로세스: do_exit() 함수 분석
do_exit() 함수로 커널이 프로세스를 종료 시키는 세부 동작 못지 않게 프로세스가 종료되는 흐름을 파악하는 것이 중요합니다. 그 이유는 무엇일까요? 유저 어플리케이션 프로세스나 커널 프로세스가 예외 상황에서 의도하지 않게 종료해서 문제가 발생하는 경우가 있습니다. 이런 문제를 만났을 때 커널 어느 함수부터 분석을 해야할 지 결정할 수 있습니다. 이번에는 do_exit() 함수가 어떻게 실행되는지 알아봅시다. - exit() 시스템 콜 실행유저 어플리케이션 프로세스가 자신을 종료하려면 리눅스 저수준 함수로 exit() 함수를 호출합니다. 이 때 시스템 콜을 발생시킨 다음 sys_group_exit() 시스템콜 핸들러를 실행합니다. - 다른 프로세스가 프로세스 종료 시그널을 전달했을 경우프로세스
우분투 14.04 기반 클라이언트에서 우분투 18.04 기반 NFS 서버에 접속하는 문제
정확히 말하자면, 우분투 14.04LTS 기반인 리눅스 민트 17에서 우분투 18.04LTS 기반인 리눅스 민트 19의 NFS 공유 디렉토리에 접속하는 문제다. 리눅스 민트 19 서버에서 정상적으로 NFS를 다 설정하고(NFS 서버 설정은 이전 게시물을 참고하자. 여기로) 방화벽에서도 NFS 접속을 허용하도록 해 두었는데, 클라이언트에서 접속을 하면 접근 불가 오류 메시지가 계속 나왔다. # 클라이언트에서 NFS 서버로 접속 시도 sudo mount -t nfs server.net:/nfs_export_dir/ ~/nfs_dir mount.nfs: access denied by server while mounting server.net:/nfs_export_dir/ 아무리 이리 저리 찾아
[라즈베리파이] 프로세스 생성: _do_fork() copy_process() 함수 분석
이전 시간까지 유저 프로세스와 커널 프로세스가 어떤 흐름으로 생성되는지 살펴봤습니다.둘 다 _do_fork() 함수를 호출한다는 사실을 알 수 있습니다. 프로세스 생성 시 공통으로 실행하는 _do_fork() 함수 코드를 분석하면서 커널이 어떻게 프로세스를 생성하는지 살펴봅니다. _do_fork() 함수_do_fork() 함수을 분석하기 앞서 이 함수 동작을 분류해봅시다. 1단계: 프로세스 생성copy_process() 함수를 호출해서 프로세스를 생성합니다. 프로세스를 생성하는 세부 동작을 파악하려면 copy_process() 함수를 분석할 필요가 있습니다. 2단계: 생성한 프로세스 실행 요청copy_process() 함수를 호출해서 프로세스 생성을 마쳤으면 wake_up_new_task() 함수를
[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?
이번에는 커널 스레드 생성 요청과 커널 스레드를 생성하는 코드 흐름을 살펴봅시다. 커널 스레드를 생성하려면 다음과 같이 kthread_create() 함수를 호출해야 합니다.1 #define kthread_create(threadfn, data, namefmt, arg...) \2 kthread_create_on_node(threadfn, data, NUMA_NO_NODE, namefmt, ##arg)34 struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),5 void *data, int node,6 const char namefmt[],7 ...) 먼저 이 함수에 전달하는 인자부터 살펴봅시다.

