Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

18113
1478
166888


태그 : kernel 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9 10 다음

[리눅스커널][스케줄링] 선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개

선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개리눅스 커널에서 선점 스케줄링을 동작을 잠시 지연할 수 있는 함수를 지원합니다. preempt_disable(): 선점 지연 활성화preempt_enable():  선점 지연 비활성화preempt_disable() 함수 이름은 "선점"을 의미하는...

[리눅스커널][인터럽트후반부] IRQ 스레드 전체 실행 흐름 정리하기

6.4.3 IRQ 스레드 전체 실행 흐름 정리하기여기까지 배운 내용을 다이어그램으로 정리하겠습니다.                  [그림 6.7] "irq/92-mmc1" IRQ Thread 실행 흐름도눈끔 화살표는 함수 실행 흐름 방향입니다. 위 그림에서 실행 순...

[리눅스커널] 인터럽트 후반부 처리 기법 종류 및 소개

이번 장에서는 리눅스 커널이 Bottom Half을 처리하는 대표적인 기법인 IRQ 스레드와 Soft IRQ 기법과 태스크릿을 다룹니다. 워크큐는 워크큐를 다루는 장에서 살펴볼 예정입니다. 세 가지 기법 인터럽트 후반부 처리하는 방식이 조금씩 다릅니다. 하지만 인터럽트 핸들러에서 해야 할 일을 2 단계로 나눈다는 점은 같습니다. 4가지 기법의 ...

[리눅스커널] 인터럽트 후반부 처리: Top Half/Bottom Half 란 무엇일까?

앞서 살펴본 바와 같이 인터럽트 컨택스트에서 인터럽트 핸들링을 빠른 시간에 마무리해야 합니다. 또한 시간이 오래 걸리는 함수를 호출하면 시스템은 커널 패닉으로 시스템이 오동작 할 수 있습니다.여기서 한 가지 걱정이 생깁니다.     인터럽트가 발생한 후 인터럽트 핸들러에서 처리할 일이 많을 때는 어떻게 해야 할까?이럴 때 해...

[리눅스커널] 워크큐: 워커 쓰레드 핸들 worker_thread() 함수 분석

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

워커 스레드는 워크를 실행하는 커널 스레드입니다. 이번 절에서는 워커 스레드가 무엇이고 이를 어떤 방식으로 생성하고 실행하는지 살펴보겠습니다.

[리눅스커널] 워크큐: 워커 쓰레드는 누가 언제 생성하나?

워커와 워커 쓰레드의 개념부터 정리하고 워커 쓰레드 생성에 대해 알아봅시다. 워커 쓰레드는 커널 쓰레드의 한 종류로 워크를 실행하는 쓰레드입니다. 쓰레드 핸들 함수는 worker_thread() 입니다.처음 커널 쓰레드를 분석할 때 먼저 쓰레드 핸들 함수를 분석해야 합니다. 쓰레드를 어떤 과정으로 실행 및 제어하는지 알 수 있기 때문입니다.워커...

[리눅스커널] 워크큐: queue_work_on() 함수 분석

schedule_work() 함수를 호출하면 어떻게 워크를 워크큐에 큐잉하는지 이제부터 살펴보겠습니다. schedule_work() 함수를 호출하면 queue_work_on() 함수를 호출하니 먼저 schedule_work() 함수를 보겠습니다.[/include/linux/workqueue.h]1 static inline bool schedule_wor...

[리눅스커널] 워크큐: process_one_work() 함수 분석

우선 process_one_work() 함수 전체 코드를 보겠습니다.1 static void process_one_work(struct worker *worker, struct work_struct *work)2 __releases(&pool->lock)3 __acquires(&pool->lock)4 {5 struct pool_...

[리눅스커널] 워크큐: wake_up_worker() 함수 분석

다음은 워크큐에서 가장 중요한 워커 쓰레드를 깨우는 wake_up_worker() 함수를 살펴보겠습니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue.c]1 static void wake_up_worker(struct worker_pool *pool)2 {3 struct worke...
1 2 3 4 5 6 7 8 9 10 다음