태그 : linux 요약보기전체보기목록닫기
- [리눅스커널] 인터럽트 후반부 처리 기법 종류 및 소개 (0)2019.02.10
- [리눅스커널] 인터럽트 후반부 처리: Top Half/Bottom Half 란 무엇일까? (0)2019.02.10
- [리눅스커널] 워크큐: 워커 쓰레드 핸들 worker_thread() 함수 분석(0)2019.02.10
- [리눅스커널] 워크큐: 워커 스레드란 (0)2019.02.09
- [리눅스커널] 워크큐: 워커 쓰레드는 누가 언제 생성하나? (0)2019.02.09
- [리눅스커널] 워크큐: queue_work_on() 함수 분석 (0)2019.02.09
- [리눅스커널] 워크큐: process_one_work() 함수 분석 (0)2019.02.09
- [리눅스커널] 워크큐: wake_up_worker() 함수 분석(0)2019.02.09
- [리눅스커널] 워크큐: find_worker_executing_work() 함수 분석(0)2019.02.09
- [리눅스커널] 워크큐: set_work_pwq() 함수 분석 (0)2019.02.09
- 6. 인터럽트 후반부 처리
- 2019/02/10 12:47
이번 장에서는 리눅스 커널이 Bottom Half을 처리하는 대표적인 기법인 IRQ 스레드와 Soft IRQ 기법과 태스크릿을 다룹니다. 워크큐는 워크큐를 다루는 장에서 살펴볼 예정입니다. 세 가지 기법 인터럽트 후반부 처리하는 방식이 조금씩 다릅니다. 하지만 인터럽트 핸들러에서 해야 할 일을 2 단계로 나눈다는 점은 같습니다. 4가지 기법의 ...
- 6. 인터럽트 후반부 처리
- 2019/02/10 10:06
앞서 살펴본 바와 같이 인터럽트 컨택스트에서 인터럽트 핸들링을 빠른 시간에 마무리해야 합니다. 또한 시간이 오래 걸리는 함수를 호출하면 시스템은 커널 패닉으로 시스템이 오동작 할 수 있습니다.여기서 한 가지 걱정이 생깁니다. 인터럽트가 발생한 후 인터럽트 핸들러에서 처리할 일이 많을 때는 어떻게 해야 할까?이럴 때 해...
- 7. 워크큐(Workqueue)
- 2019/02/10 00:00
- 7. 워크큐(Workqueue)
- 2019/02/09 23:52
워커 스레드는 워크를 실행하는 커널 스레드입니다. 이번 절에서는 워커 스레드가 무엇이고 이를 어떤 방식으로 생성하고 실행하는지 살펴보겠습니다.
- 7. 워크큐(Workqueue)
- 2019/02/09 23:52
워커와 워커 쓰레드의 개념부터 정리하고 워커 쓰레드 생성에 대해 알아봅시다. 워커 쓰레드는 커널 쓰레드의 한 종류로 워크를 실행하는 쓰레드입니다. 쓰레드 핸들 함수는 worker_thread() 입니다.처음 커널 쓰레드를 분석할 때 먼저 쓰레드 핸들 함수를 분석해야 합니다. 쓰레드를 어떤 과정으로 실행 및 제어하는지 알 수 있기 때문입니다.워커...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:48
schedule_work() 함수를 호출하면 어떻게 워크를 워크큐에 큐잉하는지 이제부터 살펴보겠습니다. schedule_work() 함수를 호출하면 queue_work_on() 함수를 호출하니 먼저 schedule_work() 함수를 보겠습니다.[/include/linux/workqueue.h]1 static inline bool schedule_wor...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:40
우선 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_...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:38
다음은 워크큐에서 가장 중요한 워커 쓰레드를 깨우는 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...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:29
이번에는 find_worker_executing_work() 함수를 분석하겠습니다.1 static struct worker *find_worker_executing_work(struct worker_pool *pool,2 struct work_struct *work)3 {4 struct worker *worker;56 hash_for...
- 7. 워크큐(Workqueue)
- 2019/02/09 20:28
struct work_struct.entry를 워커 풀에 등록하기 직전 struct work_struct.data 멤버를 WORK_STRUCT_PWQ 로 저장합니다.static void set_work_pwq(struct work_struct *work, struct pool_workqueue *pwq, unsigned long extra...
최근 덧글