리눅스커널
Posts
154 posts[리눅스커널] 워크큐: 워커와 워커 스레드란
커널에서 워크큐 관련 함수를 호출하고 워크큐 자료 구조를 관리합니다. 이를 위해 생성된 프로세스가 워커 스레드이며 워커란 자료구조로 세부 동작을 관리합니다. 이번 시간에서는 워커와 워커 스레드가 무엇인지 먼저 알아보겠습니다. 라즈베리파이에서 워커 스레드 확인하기 워커 스레드는 모든 리눅스 시스템에서 배경으로 실행하는 프로세스입니다. 물론 라즈베리파이도 워커 스레드를 볼 수 있습니다. 그러면 라즈베리파이에서 터미널을 열고 'ps -ely | grep kworker' 명령어로 워커 스레드를 확인해볼까요? root@raspberrypi:/# ps -ely | grep kworker1 S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME C
임베디드 리눅스 개발자 양극화를 극복하는 방법: 리눅스 커널 메일링 리스트 활용
제가 올린 포스팅 중 생각지도 않게 조회수가 높은 글이 종종 있습니다. 그 중 하나는 다음 포스팅입니다.임베디드 개발자 양극화는 얼마나 심각할까? 댓글을 보면 알 수 있듯 많은 분들이 공감해주셨습니다. * 맞다! 임베디드 개발의 양극화는 정말 심하다! 이글을 올린 후 리눅스 세미나에서 다음과 같은 질문을 받았습니다. * 임베디드 개발의 양극화가 심하다는 것은 알겠다. * 그런데 그 해결책은 무엇이냐? 이 질문을 받고 바로 전 다음과 같이 대답을 했습니다. * 출간될 제 책을 사보세요. * 제 책이 임베디드 양극화의 Gap을 줄여 줄 수 있을 것이라 생각합니다. 농담 반, 진담 반으로 드렸던 대답이었습니다. 다시 생각을 해보니 정말 *헛소리*를 했단 생각이 듭니다.그래
[리눅스커널] 워크큐(workqueue): __queue_work() 함수 분석하기
워크를 워크큐에 큐잉하는 핵심 동작은 __queue_work() 함수에서 수행합니다. 코드 분석을 통해 워크를 워크큐에 어떤 방식으로 큐잉하는지 살펴보겠습니다. 코드 분석에 앞서 __queue_work() 함수 선언부와 인자를 점검합시다.static void __queue_work(int cpu, struct workqueue_struct *wq, struct work_struct *work); queue_work() 함수에서 첫 번째 인자로 WORK_CPU_UNBOUND, 두 번째 인자로 system_wq 를 전달했으니 cpu는 WORK_CPU_UNBOUND, wq는 system_wq 시스템 워크큐 전역 변수 주소입니다. 함수 인자 목록을 정리하면 다음과 같습니다. int cpu: WORK_CP
[리눅스커널] 워크큐(workqueue): 워크를 워크큐에 큐잉하는 인터페이스 함수 분석하기
커널은 디바이스 드라이버 레벨에서 워크큐를 큐잉할 수 있는 여러 가지 함수를 지원합니다.이번 시간에는 워크를 워크큐에 큐잉할 때 사용하는 함수를 소개하고 코드를 분석합니다. schedule_work() queue_work() queue_work_on() 먼저 schedule_work() 함수를 분석해볼까요? schedule_work() 함수 분석하기 schedule_work() 함수 구현부 코드는 다음과 같습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/include/linux/workqueue.h]1 static inline bool schedule_work(struct work_struct *work)2 {3 return queue_wo
![[일상] Eave 65와 목새 택타일 | 토프레 무접점 느낌 | 타건 영상 있음](https://img.zoomtrend.com/2026/06/07/1780838085-SE-77297eb3-90bf-43a7-9629-75fd8530e370.jpg)



