리눅스

포스트: 556|아이템:리눅스(554)
Tags

Posts

556 posts

[리눅스커널] 워크큐: 워커 스레드는 누가 언제 만들까

Guillermo Austin Kim|2019년 9월 25일

이번 챕터 앞 부분에서 워크큐에 대해 다음과 같이 소개했습니다.  워크를 처리하는 워커 스레드를 미리 생성해 놓고 워크 실행 요청이 오면 해당 워커 스레드가 이를 처리한다. 이번 시간에는 워커 스레드의 핸들인 워커를 언제 생성하는지 알아보겠습니다. 그렇다면 워커는 어느 함수를 실행할 때 생성할까요?  워커는 create_worker() 함수를 호출할 때 생성합니다. 워커를 생성하는 create_worker() 함수를 분석하기 전 이 함수를 호출하는 경로를 알아보겠습니다.  maybe_create_worker()  get_unbound_pool()  workqueue_prepare_cpu() 커널 내부에서 워크를 사용해 후반부 처리를 하므로 커널은 워커 스레드를 미리

상관 관계 자료를 2차원 연관 배열(associatve array)에 할당

반달가면|2019년 9월 23일

댓글로 질문을 받았던 문제인데, 답변이 길어서 별도의 게시물로 작성. 문제는 대략 아래와 같다. 간단한 예시로 설명한다. my_data.txt 파일에 3개의 항목(a, b, c)들 사이의 상관 관계가 기록되어 있는데, 형식은 아래와 같다. # my_data.txt 내용 cat my_data.txt a b#, c: b a# c a, b: 각 행의 첫번째 항목(field)은 항목 명칭이다. 각 행의 두번째 항목 이후는 첫번째 항목에 대한 상관 관계 자료다. 연관성 종류에 따라 "#" 또는 ":" 기호가 추가될 수 있다. 이 자료를 2차원 테이블로 표현하는 것이 목표다. 위의 예시를 표현하면 아래와 같이 만드는 것이 결과물이다. a b c ------

[리눅스커널] 워크큐: 워커와 워커 스레드란

Guillermo Austin Kim|2019년 9월 22일

커널에서 워크큐 관련 함수를 호출하고 워크큐 자료 구조를 관리합니다. 이를 위해 생성된 프로세스가 워커 스레드이며 워커란 자료구조로 세부 동작을 관리합니다. 이번 시간에서는 워커와 워커 스레드가 무엇인지 먼저 알아보겠습니다. 라즈베리파이에서 워커 스레드 확인하기 워커 스레드는 모든 리눅스 시스템에서 배경으로 실행하는 프로세스입니다. 물론 라즈베리파이도 워커 스레드를 볼 수 있습니다. 그러면 라즈베리파이에서 터미널을 열고 'ps -ely | grep kworker' 명령어로 워커 스레드를 확인해볼까요? root@raspberrypi:/# ps -ely | grep kworker1 S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME C

임베디드 리눅스 개발자 양극화를 극복하는 방법: 리눅스 커널 메일링 리스트 활용

Guillermo Austin Kim|2019년 9월 21일

제가 올린 포스팅 중 생각지도 않게 조회수가 높은 글이 종종 있습니다. 그 중 하나는 다음 포스팅입니다.임베디드 개발자 양극화는 얼마나 심각할까? 댓글을 보면 알 수 있듯 많은 분들이 공감해주셨습니다. * 맞다! 임베디드 개발의 양극화는 정말 심하다! 이글을 올린 후 리눅스 세미나에서 다음과 같은 질문을 받았습니다. * 임베디드 개발의 양극화가 심하다는 것은 알겠다. * 그런데 그 해결책은 무엇이냐? 이 질문을 받고 바로 전 다음과 같이 대답을 했습니다. * 출간될 제 책을 사보세요. * 제 책이 임베디드 양극화의 Gap을 줄여 줄 수 있을 것이라 생각합니다. 농담 반, 진담 반으로 드렸던 대답이었습니다. 다시 생각을 해보니 정말 *헛소리*를 했단 생각이 듭니다.그래