Linux Kernel(4.14) Hacks

rousalome.egloos.com

포토로그 Kernel Crash




태그 : 리눅스커널 요약보기전체보기목록닫기

1

[라즈베리파이] 프로세스: 컨택스트 스위칭 이란

마운드에 A란 투수가 있습니다.마운드에는 투수 한 명만 공을 던질 수 있습니다.그런데 마운드에 오르고 싶어하는 B, C란 투수가 불펜에서 몸을 풀고 있습니다.감독은 마운드에서 혼자 공을 던지고 있는 A란 투수가 불펜에 있는 B, C 투수보다 잘 던지는지 꾸준히 모니터링합니다.시간이 흘러 감독이 B란 투수틀 마운드에 올려야 겠다고 결단을 내렸습니다.감독은...

[라즈베리파이] 시스템 콜 - 소프트웨어 인터럽트 벡터(vector_swi) 코드 분석

커널 공간에서 시스템 콜 실행 출발점은 vector_swi 레이블입니다. svc 명령어를 실행하면 소프트웨어 인터럽트 벡터인 vector_swi 레이블으로 브랜치하기 때문입니다. vector_swi 레이블 어셈블리 코드 분석으로 ARM 리눅스 커널에서 시스템 콜이 어떻게 동작하는지 살펴봅시다.vector_swi 레이블 어셈블리 코드는 다음과 같습니다.1...

[라즈베리파이] 시스템 콜 - 유저 공간 시스템 콜 발생 어셈블리 코드 분석

아키텍처별로 시스템 콜을 실행하는 동작은 다릅니다. 시스템 콜을 실행하는 동작은 어셈블리 코드로 구현되어 있습니다.라즈베리파이가 탑재한 ARM(ARM32) 아키텍처에서는 시스템 콜은 다음과 같이 구현돼 있습니다.1. r0 ~ r5 레지스터에 시스템 콜로 전달할 인자 지정2. r7 레지스터에 시스템 콜 번호 저장3. "svc 0x00000000" 명령어 ...

[라즈베리파이] 시그널 - 시그널 핸들러 실행 및 커널 복귀 과정

signal은 특정 프로세스에게 어떤 메시지를 전달할 수 있는 가장 기본적인 수단입니다.signal은 다른 (user-level) 프로세스로부터 직접적으로 받거나 혹은 (주로 문제가 될 만한 동작으로인해) 커널로부터 받을 수 있습니다.이러한  signal은 kernel-mode에서 처리가 되는데 주로 시스템 콜이나 인터럽트 처리 등을 마치고 u...

[라즈베리파이][리눅스커널] IRQ Thread는 언제 생성할까?[1] #CS

IRQ Thread를 생성하기 위해서는 request_threaded_irq 을 호출하면 IRQ Thread가 생성된다고 설명해 드렸습니다. 사실 request_threaded_irq을 호출할 때 IRQ Thread가 생성되는 것은 아니고 다음 흐름에서  __kthread_create_on_node 함수가 실행할 때 생성됩니다.우리는 ...

[라즈베리파이][리눅스커널]인터럽트 컨택스트란 (1) #CS

[라즈베리파이] 인터럽트 백터 - 스택 푸쉬

#리눅스 커널: 인터럽트인터럽트 소개인터럽트 컨택스트   인터럽트 컨택스트란   in_interrupt란   인터럽트 컨택스트에서 스케줄링을 하면?인터럽트 핸들러는 누가 언제 호출할까?   인터럽트 벡터 분석   인터럽트 벡터 스택 푸시  &nbs...

[Linux][Kernel] signal - signal handler data structure

리눅스 커널 코드 리뷰를 많이 했는데요.리눅스 시스템 프로그램이 커널과 어떻게 연동되는지 한 가지 점검해볼께요.유저 공간에서 signal을 설정하는 코드를 많이 볼 수 있습니다.아래는 SIGINT란 시그널이 전달되었을 때 linux_sig()란 함수가 호출되는 간단한 코드입니다.그럼 아래 시그널 콜백 함수가 어떻게 실행이 될까요?#include <...

[Linux][Kernel] 타이머(Timer) Overview

리눅스 커널에서 아주 중요한 Subsystem 중 하나인 타이머에 대해서 간단히 짚어 볼께요.init_timer아래 함수 콜로 do_init_timer() 함수에서 struct timer_list *timer 초기화를 수행해요.__init_timer((timer), 0)init_timer_key((_timer), (_flags), #_timer, &am...

vmalloc - overview(1)

# 리눅스 커널 Memory Management1. 슬랩 Slab Memory 소개  2. 슬랩 Slab Memory 디버깅(Debugging)   3. slab - kmem_cache 소개 및 slab object(슬랩 오브젝트) Overview   4. 슬랩 페이지(slab page)가 ...
1