Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

29137
1186
128674


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

1

[리눅스커널][스케줄링] 유저 프로세스가 시스템 콜 처리를 마무리한 후 선점 스케줄링

유저 프로세스는 시스템 콜로 커널과 통신을 합니다. 유저 프로세스는 시스템 콜을 발생해서 시스템 콜 핸들러 함수를 호출합니다. 이후 시스템 콜 핸들러 하부 함수 실행을 마친 후 유저 공간으로 복귀하기 직전에 선점 스케줄링 실행 조건을 점검합니다.다음 다이어그램을 보면서 세부 동작에 대해 살펴보겠습니다. 위 블록 다이어그램은 유저 프로세스가 시스...

[리눅스커널][스케줄링] 커널 모드 중 인터럽트 발생으로 선점 스케줄링 실행

유저 프로세스 실행 도중 인터럽트가 발생하면 __irq_usr 이란 레이블에서 선점 스케줄링 조건을 점검합니다. 마찬가지로 커널 모드에서 어떤 코드가 실행 도중 인터럽트가 발생할 때 선점 스케줄링(Preemptive Scheduling)을 시도합니다.이번 소절에서 커널 모드에서 인터럽트가 발생했을때 선점 스케줄링 세부 동작을 살펴봅니다.다음 블록 다이어...

[리눅스커널][스케줄링] 유저 프로세스 실행 중 인터럽트 발생으로 선점 스케줄링

선점 스케줄링 실행 진입점 중 하나가 인터럽트를 핸들링 후 입니다. 이번 소절에서 유저 프로세스가 실행하던 도중 인터럽트가 발생했을 때 어떤 방식으로 선점 스케줄링(Preemption)이 시작하는지 살펴보겠습니다.다음 블록 다이어그램을 같이 봅시다. 위 블록 다이어그램은 유저 레벨 프로세스가 실행 도중 선점 스케줄링되는 흐름도입니다.유...

[리눅스커널] 스케줄링: 선점 스케줄링 발생 시점을 아는 것은 왜 중요할까?

리눅스 시스템 개발자로 문제 해결 능력을 키우기 위해선 선점 스케줄링 발생 시점을 아는 것이 중요합니다.리눅스 디바이스를 개발하다 보면 다양한 버그를 만납니다. 수 많은 버그 중 선점 스케줄링으로 시스템이 오동작하는 상황을 겪을 수 있습니다. 예를 들어 커널 패닉 발생하는 가장 큰 원인 중 하나가 선점 스케줄링 때문입니다.리눅스 커널 커뮤니티에서 배포하...

[리눅스커널][스케줄링] 선점 스케줄링 진입점은 어디인가?

여기서 중요한 질문을 던질 수 있습니다. 과연 "선점은 언제 일어날까?"란 의문입니다.선점 스케줄링은 언제든 발생할 수 있습니다.소스 코드를 보면서 선점 스케줄링이 언제 발생할 수 있는지 생각해 봅시다.[https://elixir.bootlin.com/linux/v4.14.70/source/fs/configfs/file.c]1 static ssize_t...

[리눅스커널][스케줄링] 선점 스케줄링(Preemptive Scheduling)이란 무엇일까?

선점 스케줄링이란 CPU에서 실행 중인 프로세스를 비우고 새로운 프로세스를 CPU에서 실행시키는 방식입니다.선점 스케줄링에 대한 이해를 돕기 위해 야구에서 투수 교체를 하는 과정을 예를 들겠습니다.마운드에 A란 투수가 있다고 가정합시다. A란 투수는 열심히 공을 던지고 있습니다. 감독은 투수가 마운드에서 제대로 공을 던지고 있는지 계속 관찰합니다. 제구...

[라즈베리파이] 프로세스 - 스케줄링(Preemption): 커널 모드 인터럽트 발생

이번에는 커널 모드에서 인터럽트가 발생했을때 스케줄링(Preemption)하는 동작을 살펴봅니다.커널 모드에서 커널 프로세스가 실행 중 인터럽트가 발생하면 __irq_svc 이란 인터럽트 벡터로 PC를 바꿉니다.__irq_svc 코드를 봅시다.[https://elixir.bootlin.com/linux/v4.14.49/source/arch/arm/ker...

[라즈베리파이] 프로세스 - 스케줄링(Preemption): 유저 공간 실행 중 인터럽트 발생

이번에는 인터럽트가 발생했을때 스케줄링(Preemption)하는 동작을 살펴봅니다.우리는 그 동안 schedule() 함수를 호출했을때만 스케줄링이 실행하는지 알고 있습니다. 그것은 맞는 말입니다.그런데, 인터럽트가 발생했을때 스케줄링이 실행된다는 사실은 잘 모릅니다.이 사실을 알면 많은 레이스 컨디션 발생 원인을 알 수 있습니다.이제부터 __irq_u...

ARM32 - 프로세스(Process) preempt_disable(), preemption 스케줄(Schedule) 조건 분석

저번 시간에 preempt_disable() 함수 호출로 커널 패닉이 일어나는 문제가 있었는데요.이 매크로 함수와 preemption의 관계에 대해서 좀 더 알아보고자 해요.preemption은 리눅스 커널 핵심 개념 중의 핵심이죠.preempt_disable() 함수를 호출하면 스택 주소를 꺼내와서, current_thread_info에 있는 pree...
1