[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS
By Guillermo Austin Kim | 2018년 6월 19일 |
![[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS](https://img.zoomtrend.com/2018/06/19/c0246238_5b21141c51694.png)
# 인터럽트 후반부 처리1 IRQ Thread(threaded IRQ) 란 2. 인터럽트 후반부 처리(Bottom Half) 소개3.IRQ Thread는 언제 생성할까?[1] IRQ Thread를 생성하기 위해서는 request_threaded_irq 을 호출하면 IRQ Thread가 생성된다고 설명해 드렸습니다. 사실 request_threaded_irq을 호출할 때 IRQ Thread가 생성되는 것은 아니고 다음 흐름에서 __kthread_create_on_node 함수가 실행할 때 생성됩니다. 우리는 커널 쓰레드를 생성할 때 kthread_create 함수를 호출한다고 배웠죠. IRQ Thread도 이 kthread_create 함수를 호출해서 생성합니다. 이로 I
[라즈베리파이] 동기화 - 커널 동기화 기법 소개
By Guillermo Austin Kim | 2018년 12월 20일 |
이전 시간에 Race가 발생하는 3가지 대표적인 상황을 확인했습니다. 이어서 이번에 커널 동기화 기법을 소개하고 그 특징을 알아봅니다. 이전에 소개했던 그림을 다시 보겠습니다. 임계 영역에 A와 B 프로세스가 접근하는 상황입니다. 두 커널 동기화 기법인 스핀락과 뮤텍스의 차이점을 비교하면서 동기화 기법에 대해 살펴보겠습니다. 스핀락과 뮤텍스의 가장 큰 차이점은 위 그림 [6] 번호 밑 박스에 표시돼 있습니다. 이미 락(Lock)을 다른 프로세스가 획득하고 있을 때 기다리는 방법입니다. 스핀락은 다른 일(스케줄링)을 안 하고 화장실 밖에서 계속 기다립니다. 이를 Busy-Wait라고 설명합니다. 뮤텍스는 자신을 대기열에 등록하고 자신을 UNINTERRUPTIBLE 상태로 바꾼 다음 휴면에
우분투 계열 리눅스에서 시냅틱 패키지 관리자의 패키지 다운로드 위치
By 반달가면 | 2018년 10월 9일 |
간혹 필요할 때가 있어 정리해 두기로. 리눅스 민트 등 우분투 계열 리눅스에서 시냅틱 패키지 관리자(Synaptic Package Manager)를 사용할 때, 선택한 패키지를 설치하지 않고 다운로드만 할 수도 있다. 설치 직전에 "download package files only" 항목을 체크하면 된다. 문제는 대체 이 패키지(.deb) 파일이 어디에 들어 있느냐는 것인데, /var/cache/apt/archives/ 디렉토리에 다운로드된다. 물론 "download package files only" 항목을 체크하지 않아도 이 위치로 다운로드된 후에 설치가 진행된다. 다운로드해 둔 패키지를 나중에 수동으로 설치하려면 아래와 같이 작업한다. # 패키지 다운로드 디렉토리 이동 cd /v
[리눅스] 커널 크래시: abort@test_and_set_bit
By Guillermo Austin Kim | 2019년 1월 9일 |
우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.)-000|do_DataAbort(addr = 3244789312, fsr = 3245415784, regs = 0xC1678E40)-001|__dabt_svc(asm) -->|exception-002|test_and_set_bit(asm) // <<**** kernel panic-003|bit_spin_lock(inline)-003|hlist_bl_lock(inline)-003|mb_cache_shrink_scan(?, ?)-0