프로세스

포스트: 54
Tags

Posts

54 posts

[라즈베리파이] 프로세스: do_exit() 함수 분석

Guillermo Austin Kim|2019년 1월 18일

do_exit() 함수로 커널이 프로세스를 종료 시키는 세부 동작 못지 않게 프로세스가 종료되는 흐름을 파악하는 것이 중요합니다. 그 이유는 무엇일까요? 유저 어플리케이션 프로세스나 커널 프로세스가 예외 상황에서 의도하지 않게 종료해서 문제가 발생하는 경우가 있습니다. 이런 문제를 만났을 때 커널 어느 함수부터 분석을 해야할 지 결정할 수 있습니다. 이번에는 do_exit() 함수가 어떻게 실행되는지 알아봅시다. - exit() 시스템 콜 실행유저 어플리케이션 프로세스가 자신을 종료하려면 리눅스 저수준 함수로 exit() 함수를 호출합니다. 이 때 시스템 콜을 발생시킨 다음 sys_group_exit() 시스템콜 핸들러를 실행합니다. - 다른 프로세스가 프로세스 종료 시그널을 전달했을 경우프로세스

[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?

Guillermo Austin Kim|2019년 1월 13일

이번에는 커널 스레드 생성 요청과 커널 스레드를 생성하는 코드 흐름을 살펴봅시다. 커널 스레드를 생성하려면 다음과 같이 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 ...) 먼저 이 함수에 전달하는 인자부터 살펴봅시다.

[라즈베리파이] 프로세스: 컨택스트 스위칭 이란

Guillermo Austin Kim|2019년 1월 9일

마운드에 A란 투수가 있습니다.마운드에는 투수 한 명만 공을 던질 수 있습니다. 그런데 마운드에 오르고 싶어하는 B, C란 투수가 불펜에서 몸을 풀고 있습니다. 감독은 마운드에서 혼자 공을 던지고 있는 A란 투수가 불펜에 있는 B, C 투수보다 잘 던지는지 꾸준히 모니터링합니다. 시간이 흘러 감독이 B란 투수틀 마운드에 올려야 겠다고 결단을 내렸습니다. 감독은 마운드에 있는 A 투수를 마운드에서 내리고 B 투수를 마운드에 올립니다. 컨택스트 스위칭에 대한 이해를 돕기 위해 잠깐 야구에서 투수 교체에 대해 설명을 했습니다. 그럼 다시 컨택스트 스위칭에 대한 설명으로 되돌아 가겠습니다. 사용자 입장에서 컴퓨터나 휴대폰에서 여러 프로그램을 동시에 실행할 수 있습니다.프로그램을 구성 중인 프로세스도 동

[라즈베리파이] 프로세스 - 커널 스레드 종류

Guillermo Austin Kim|2018년 10월 29일

리눅스 커널에서 구동중인 대표적인 커널 스레드를 알아보기 위해 라즈베리파이에서 다음 명령어를 입력합시다.root@raspberrypi:/home/pi# ps -ejH1 PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND2 0 2 0 0 ? -1 S 0 0:00 [kthreadd]3 2 4 0 0 ? -1 I< 0 0:00 \_ [kworker/0:0H]4 2 7 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]5 2 10