- 2018/10/09 22:45
- rousalome.egloos.com/9984180
- 덧글수 : 3
핑백
Linux Kernel(4.19) Hacks : [리눅스커널] 커널동기화: 임계영역(Critical Section)과 레이스 컨디션이란 2019-09-14 17:45:16 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 커널동기화: 레이스 컨디션은 왜 발생할까? 2019-09-14 17:45:31 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 커널동기화: 레이스 컨디션 커널 패치 소개 2019-09-14 17:45:48 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화 - 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 2019-09-14 17:46:35 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 인터럽트 발생으로 레이스 컨디션 발생 2019-09-14 17:47:51 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 커널 동기화 기법 소개 2019-09-14 17:48:23 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 스핀락과 뮤텍스 기법 차이점 알아보기 2019-09-14 17:48:36 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 스핀락(spinlock) 소개 2019-09-14 17:49:11 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 스핀락 자료구조 알아보기 2019-09-14 17:49:25 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 스핀락(spinlock)을 쓰는 예제 코드 살펴보기 2019-09-14 17:49:39 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 스핀락(spinlock) 처리 흐름도 알아보기 2019-09-14 17:50:03 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock() 함수 분석 2019-09-14 17:50:31 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 스핀락(spinlock): spin_lock() 어셈블리 코드 분석 2019-09-14 17:51:29 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [라즈베리파이] 동기화 - 스핀락(spinlock): spin_unlock() 함수 분석 2019-09-14 17:51:50 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq() 2019-09-14 17:52:09 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 스핀락(spinlock) 플러그인 함수: spin_lock_irqsave()/spin_unlock_irqrestore 2019-09-14 17:52:29 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 뮤텍스의 기본 개념 소개하기 2019-09-14 17:52:46 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 뮤텍스 fastpath 동작 2019-09-14 17:53:03 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 뮤텍스 slowpath: mutex_lock() 함수 분석 2019-09-14 17:53:30 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화: 뮤텍스 slowpath: mutex_unlock() 함수 분석 2019-09-14 17:53:44 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화/디버깅: 스핀락(spinlock) 2019-09-14 17:54:03 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : [리눅스커널] 동기화/디버깅: 뮤텍스(Mutex) owner 확인해보기 2019-09-14 17:54:20 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : mutex lock vs spinlock ( 재현 상황 ) 2019-09-14 20:59:19 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : Spinlock(스핀락) - 소개 2019-09-14 20:59:26 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
Linux Kernel(4.19) Hacks : Spinlock(스핀락) - spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석 2019-09-14 21:01:06 #
... bsp;레이스 발생 동작 확인 유저 프로세스 시스템 콜 호출 시 레이스 컨디션 커널 프로세스 레이스 컨디션 인터럽트 발생으로 레이스 컨디션 발생 커널 동기화 기법 소개 ... more
덧글
-
최재국 2020/07/23 18:14 # 삭제 답글
뭔가 이해가 잘안되는것 같아서 질문드립니다.
1 static int worker_thread(void *__worker)
2 {
3struct worker *worker = __worker;
4struct worker_pool *pool = worker->pool;
5
6worker->task->flags |= PF_WQ_WORKER;
7 woke_up:
8spin_lock_irq(&pool->lock);
9
10/* am I supposed to die? */
11if (unlikely(worker->flags & WORKER_DIE)) {
12spin_unlock_irq(&pool->lock);
13WARN_ON_ONCE(!list_empty(&worker->entry));
14worker->task->flags &= ~PF_WQ_WORKER;
15
16set_task_comm(worker->task, "kworker/dying");
17ida_simple_remove(&pool->worker_ida, worker->id);
18worker_detach_from_pool(worker, pool);
19kfree(worker);
20return 0;
21}
22
23worker_leave_idle(worker);
A스레드가 먼저 위 코드를 실행하여 3번 라인을 실행하고 4번 라인이 실행되기전에 스케줄링되어 B 스레드가 3번라인을 실행하면
woker 포인터 변수는 덮어 씌어지잖아요?? 그럼 결국 두 스레드가 실행될 함수는 같아지는데
그걸 방지하기 위해서 11~23줄에서 woker포인터 변수로 워커 스레드를 종료한다는 말인가요?? -
AustinKim 2020/07/23 22:24 #
A스레드가 먼저 위 코드를 실행하여 3번 라인을 실행하고 4번 라인이 실행되기전에 스케줄링이 된다는 것은 선점이 된다는 이야기인데요.
3번 라인을 수행하면,
3 struct worker *worker = __worker;
__worker 포인터를 *worker 변수가 레지스터나 혹은 스택 공간에 저장을 할 것입니다.
만약 3번 라인을 수행하고 4번 라인을 수행하기 직전에 선점이 되면 *worker 변수에 대응하는 레지스터 정보는 해당 프로세스의 thread_info에 저장되거나, 프로세스의 스택 공간에 푸시된 데이터는 그대로 유지되므로 데이터를 덮어 쓰는 일은 발생하지 않습니다. -
비공개 덧글입니다.
2020/07/23 22:24 # 답글



최근 덧글