ARM Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

200239
1625
172597


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

1

[리눅스커널] thread_info 구조체의 preempt_count - 선점 스케줄링 여부 확인

리눅스 커널의 핵심 동작은 스케줄링입니다. 프로세스는 schedule() 함수를 호출해서 명시적으로 스케줄링할 수도 있지만 인터럽트 처리 후 선점 스케줄링될 수 있습니다. 커널은 스케줄링 동작 중에 thread_info 구조체의 preempt_count 필드에 저장된 값을 보고 선점 스케줄링 실행 여부를 판단합니다.그런데 여기서 한 가지 의문이 생깁니다...

[리눅스커널] 스케줄링/디버깅: ftrace: 스케줄링 실행 시 콜스택 파악하기 - p

sched_switch와 sched_wakeup 이벤트는 각각 프로세스 스케줄링과 프로세스를 깨우는 동작을 트레이싱합니다. 이번에는 스케줄링이 실행할 때 콜스택을 점검해 보겠습니다.커널에선 2가지 타입 스케줄링을 지원합니다.  [그림 10.48] 2가지 스케줄링 종류과 동작 방식스케줄링 종류 별로 어떤 콜스택인지 점검합시다. 먼저 ftrace...

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

선점 스케줄링은 다음과 같이 정의내릴 수 있습니다.      CPU에서 실행 중인 프로세스를 비우고 새로운 프로세스를 CPU에서 실행시킴 선점 스케줄링에 대한 이해를 돕기 위해 야구에서 투수 교체를 하는 과정을 예를 들겠습니다.마운드에 A란 투수가 있다고 가정합시다. A란 투수는 열심히 공을 던지고 있습니다...

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

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

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

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

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

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

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

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