Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

80258
1323
114582


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

1 2 3

[리눅스커널][스케줄링] 컨택스트 스위칭이란 무엇인가

컨택스트 스위칭이란 무엇인가컨택스트 스위칭 세부 동작을 알기 위해서 context_switch() 함수를 분석할 필요가 있습니다. context_switch() 함수를 분석하기 전 컨택스트 스위칭의 개념을 소개하겠습니다. 먼저 컨택스트 스위칭이란 용어에 대해서 살펴봅시다. 컨택스트 스위치란 용어는 컨택스트 + 스위치란 단어의 합성어입니다. 컨택...

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

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

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

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

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

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

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

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

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

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

[리눅스커널] 프로세스: current_thread_info() 매크로 함수 분석

이전 절에서 프로세스 스택 최상단 주소에 struct thread_info 구조체에 프로세스 실행을 저장한다고 분석했습니다.current_thread_info() 매크로 함수는 프로세스가 어떤 함수를 실행하더라도 struct thread_info 구조체가 있는 스택 최상단 주소를 전달합니다.current_thread_info() 매크로 함수 구현부를 분...

[리눅스커널] 스케줄링: 스케줄링 정책이란

스케줄링은 실행 대기 상태에 있는 프로세스 목록 중 하나를 선택해서 CPU를 실행하는 동작입니다. 여기서 한 가지 의문이 생깁니다.   | 실행 대기 상태 프로세스들 중 하나를 선택한 후 CPU 실행 상태로 어떤 방식으로 바꿔줄까?스케줄링 세부 구현을 할 때 다음 그림과 같이 Process A ~ Proces D 프로세스를 어...

[라즈베리파이] 스케줄링: 프로세스 상태 변화 관리

프로세스 상태 변화프로세스 상태 변화에 대해 알아보겠습니다. 프로세스 상태를 아는 것 보다 프로세스 상태가 변경될 때 세부 동작을 이해하는 것이 더 중요합니다. [1] 실행 대기 -> CPU실행 중프로세스가 생성된 다음 바로 TASK_RUNNING(실행 대기) 상태로 바뀌면서 자신을 런큐에 Enqueue 합니다. 스케줄러...

[라즈베리파이] 스케줄링: 프로세스 상태 관리

프로세스를 효율적으로 관리하기 위해서 커널은 프로세스에게 프로세스 상태를 부여합니다. 커널에서 정의한 프로세스 상태는 다음과 같습니다.[https://elixir.bootlin.com/linux/v4.14.70/source/tools/perf/builtin-sched.c]#define TASK_RUNNING 0#define TASK_INTER...
1 2 3