코드로 읽는 리눅스 드라이버 3장

커널 스레드

커널 스래드를 보려면 ps -aux 하면된다.

이때 [ ] 사이에 있는 것들이 커널 스레드이다. [이름/n] 이렇게 있으면

뒤에 n인 cpu affinity가 있다는 의미이다.

daemonize()를 call 하게 되면, kthread로 변신한다

일반 커널 스래드 종류

softirq – bottom half작업을 요청하기 위해, interrupt handler가 부른다

events – work queue에 관련된 스레드

pdflush – 페이지 캐시의 내용을 강제로 쓴는 일을 담당

시그날

커널 스래드가 특정 시그날을 활성화 하고 싶으면, allow_signal()을 해야 한다.

signal_pending()은 시그날이 왔는지 확인하는 함수인데, 함수명과 다르게 바로 리턴되는듯..

Wait Queue

대기큐는 이벤트나 시스템 자원을 기다려야 하는 스레드를 담는다

DECLARE_WAIT_QUEUE_HEAD() <– 생성

DECLARE_WAITQUEUE() <– 생성

remove_wait_queue() <– 삭제

wake_up_interruptible() <– 깨우기

add_wait_queue() <– 대기큐에 넣기

Thread Status

TASK_RUNNING, TASK_INTERRUPTIBLE, TASK_UNINTERRUPTIBLE, TASK_STOPPED, EXIT_ZOMBIE

User mode helper

커널에서 user 영역의 프로그램을 호출할 수 있는 기능

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중