[리눅스커널] 워크큐: 워커 쓰레드 핸들 worker_thread() 함수 분석
By Guillermo Austin Kim | 2019년 2월 9일 |
워크는 워커 쓰레드가 실행합니다. 워커 쓰레드를 관리하는 자료구조는 struct worker 구조체이며 이를 워커라고 부릅니다. 이전 절까지는 자료구조 중심으로 워크를 분석했는데 이번에는 워커 쓰레드가 쓰레드 관점으로 어떻게 실행하는지 알아봅니다. 다음은 워커 자료구조인 struct worker 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue_internal.h#L24]1 struct worker {2union {3struct list_headentry; 4struct hlist_nodehentry; 5};6struct work_struct*current_work;7work_func_tcu
[리눅스] 문자열 찾기 : grep 문자열<파일명>
By 별일없는 범고래님의 이글루입니다 | 2018년 1월 15일 |
정규 표현식 문자 의미 ^ (캐럿) 라인의 시작 $ 라인의 끝 [] [ ] 안의 한 문자 * (애스터리스크) (걍 별표…) 앞 글자가 0번이상 반복되는 것 . 임의의 한 문자 예를 들어,ls -l | grep ^- -> -로 시작하는 리스트만 보여줘~ -> 일반 파일만 보여줘~ ps -e | grep httpd ->웹서버 프로세스 httpd가 동작중이니~?
[안드로이드][리눅스커널] 시그널 - 유저 공간 abort(SIGABRT) 시 동작 시 흐름
By Guillermo Austin Kim | 2018년 11월 7일 |
유저 공간에서 zygote가 강제 종료되면서 부팅을 못하는 상황입니다. 커널 로그로 아래 메시지를 볼 수 있습니다.아래 로그는 init 프로세스가 zygote에 SIGABRT(6) 시그널을 전달해서 zygote를 종료시키고 있습니다.[ 46.116831 / 01-02 01:20:24.859][0] init: Service 'zygote' (pid 1777) killed by signal 6[ 46.124107 / 01-02 01:20:24.869][1] init: Service 'zygote' (pid 1777) killing any children in process group 그럼 이 동작을 할 때 커널 관점으로 어떤 코드가 수행되는지 살펴보겠습니다. zygote는 커널 공간에서 "main"
[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?
By Guillermo Austin Kim | 2018년 7월 8일 |
![[라즈베리파이] Soft IRQ 서비스는 언제 요청하나?](https://img.zoomtrend.com/2018/07/08/c0246238_5b2f1e236798a.png)
이번 시간에는 Soft IRQ 서비스를 어떻게 요청하는지 배워 보겠습니다. 우리는 이전에 Soft IRQ를 등록하는 과정을 배웠습니다. 다음 코드와 같이 open_softirq 함수를 써서 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록했습니다.1 void __init init_timers(void)2 {3init_timer_cpus();4open_softirq(TIMER_SOFTIRQ, run_timer_softirq);5 } 그럼 TIMER_SOFTIRQ 타입의 Soft IRQ 서비스를 등록만 하면 핸들러 함수인 run_timer_softirq() 함수가 호출될까요? 그렇지 않습니다. 따로 Soft IRQ 서비스를 요청해야 합니다. 인터럽트 핸들러를 등록하는 과정보다 약간 복잡합니다.