[리눅스커널][태스크릿] 태스크릿은 언제 실행할까? tasklet_action_common() 분석
By Guillermo Austin Kim | 2019년 4월 14일 |
태스크릿은 언제 실행할까? 태스크릿은 Soft IRQ 서비스 중 하나입니다. 따라서 Soft IRQ 서비스를 실행하는 __do_softirq() 함수에서 태스크릿 서비스 핸들러 함수를 호출합니다. Soft IRQ 전체 흐름도에서 태스크릿 서비스를 실행하는 그림을 보겠습니다. [태스크릿 전체 흐름도에서 태스크릿 실행 단계] [1] 단계에서 인터럽트가 발생한 후 인터럽트 핸들러에서 태스크릿 스케줄링을 실행했습니다. 이번엔 [2] 단계에서 태스크릿 서비스 핸들러가 호출하는 과정을 살펴봅니다. 전체 Soft IRQ 구조에서 __do_softirq() 함수가 호출되는 흐름은 6.8 절을 참고하세요. 태스크릿 서비스 핸들러인 tasklet_action() 함수를 실행하는 출발점은 __do_softirq()
[리눅스커널][인터럽트후반부] IRQ 스레드 생성 실습하기
By Guillermo Austin Kim | 2019년 2월 27일 |
IRQ 스레드 생성 실습하기 이번에는 IRQ 스레드를 직접 생성하는 실습을 하겠습니다. 직접 손으로 코드를 작성하고 로그로 동작을 확인하면 배운 내용을 더 오랫동안 기억할 수 있습니다. 다른 리눅스 시스템보다 라즈베리파이는 IRQ 스레드 개수가 많지 않습니다. 아래와 같이 “ps –ely” 을 입력하면 92번 mmc1 인터럽트를 처리하는 IRQ 스레드가 1개만 보입니다.root@raspberrypi:/home/pi/dev_raspberrian# ps -elyS UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMDS 0 1 0 0 80 0 6012 6750 SyS_ep ? 00:00:02 s
[리눅스커널] 워크큐: 워크큐 주요 개념 알아보기
By Guillermo Austin Kim | 2019년 7월 1일 |
![[리눅스커널] 워크큐: 워크큐 주요 개념 알아보기](https://img.zoomtrend.com/2019/07/01/a0386257_5d0a3cb02b745.png)
이번 소절에서는 워크큐를 이루는 주요 개념을 소개합니다. - 워크 - 워커스레드 - 워커풀 - 풀워크큐 먼저 워크큐의 기본 실행 단위인 워크를 배워볼까요? 워크란워크는 워크큐를 실행하는 단위입니다. 워크는 누가 실행할까요? 워크는 실행하는 주인공은 워커 스레드입니다. 인터럽트 후반부 처리나 지연해야 할 작업을 워크에서 실행하는 것입니다. 리눅스 커널에서는 워크를 work라고도 부릅니다. 이 책에서는 편의상 워크라고 명시하겠습니다. 다음 그림을 보면서 워크에 대해 배워볼까요? [그림 1] 워크 실행 흐름도 워크의 처리 흐름은 위 그림과 같이 3단계로 분류할 수 있습니다. 1단계부터 알아볼까요? 그림에서 ①으로 표시된 부분입니다. 워크를 실행하려면 먼저 워크를 워크
[리눅스커널] 메모리관리: 가상 주소 변환 과정 전체 구조 파악하기
By Guillermo Austin Kim | 2019년 7월 14일 |
이번 절에서는 가상 주소를 물리 주소로 바꾸는 전반적인 흐름과 세부 개념에 대해 상세히 알아봅니다. 가상 주소를 물리 주소로 변환하는 과정은 리눅스 커널에서 CPU 아키텍처에 의존적입니다. 다음은 라즈베리파이에서 ‘/proc/cpuinfo’ 파일로 확인한 CPU정보입니다. [https://www.raspberrypi.org/forums/viewtopic.php?t=155181]pi@raspberrypi:~ $ less /proc/cpuinfo processor : 0model name : ARMv7 Processor rev 4 (v7l)BogoMIPS : 38.40Features : half thumb fastmult vfp edsp neon vfpv3 tls