Linux Kernel(4.14) Hacks

rousalome.egloos.com

포토로그 Kernel Crash




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

1 2 3 4 5 6 7 8 9 10 다음

[라즈베리파이] 프로세스: do_exit() 함수 분석

do_exit() 함수로 커널이 프로세스를 종료 시키는 세부 동작 못지 않게 프로세스가 종료되는 흐름을 파악하는 것이 중요합니다. 그 이유는 무엇일까요? 유저 어플리케이션 프로세스나 커널 프로세스가 예외 상황에서 의도하지 않게 종료해서 문제가 발생하는 경우가 있습니다. 이런 문제를 만났을 때 커널 어느 함수부터 분석을 해야할 지 결정할 수 있습...

[SW] 리눅스 커널은 왜 알아야 할까? 코드 몽키가 되어야 하나?

많은 사람들이 리눅스 커널, 리눅스 커널하는데 왜 리눅스 커널을 잘 알아야 할까?이번에는 리눅스 커널을 왜 공부해야 하는지 알아보자.문제 해결 능력리눅스 커널을 알아야 하는 이유는 정말 간단하다. 디바이스 드라이버 담당자로써 문제 해결 능력을 키울 수 있기 때문이다.처음 임베디드 임베디드 리눅스 개발자로 일을 시작하면 보통 어떤 개발 업무를 맡을까?대부...

[라즈베리파이] 프로세스 생성: _do_fork() copy_process() 함수 분석

이전 시간까지 유저 프로세스와 커널 프로세스가 어떤 흐름으로 생성되는지 살펴봤습니다.둘 다 _do_fork() 함수를 호출한다는 사실을 알 수 있습니다.프로세스 생성 시 공통으로 실행하는 _do_fork() 함수 코드를 분석하면서 커널이 어떻게 프로세스를 생성하는지 살펴봅니다._do_fork() 함수_do_fork() 함수을 분석하기 앞서 이 함수 동작...

[라즈베리파이] 프로세스: 커널 스레드는 어떻게 생성하나?

[리눅스] 리눅스 시스템에서 메모리가 부족할 때

[리눅스] 커널 크래시: abort@test_and_set_bit

우선 콜스택부터 점검을 해보면, "kswapd0" 프로세스에서 slab cache를 scanning 하는 도중 커널 크래시가 발생하였음을 알 수 있습니다. 메모리가 부족한 상태로 보입니다. ("kswapd0" 프로세스는 page memory가 부족할 때 실행됩니다.)-000|do_DataAbort(addr = 3244789312, fsr = 3...

[리눅스커널] 프로세스 상태: 언제 TASK_RUNNING 변경할까?

이번 시간에 프로세스를 RUNNING 상태로 누가 언제 변경하는지 알아봅시다.wake_up_new_task()[set_filter 가능 함수]wake_up_new_task() 함수는 _do_fork() 함수에서 프로세스를 생성하는 과정에서 호출됩니다.코드를 봅시다.[https://elixir.bootlin.com/linux/v4.14.70/source/...

[라즈베리파이] 동기화 - 스핀락(spinlock) Deadlock으로 생기는 문제

스핀락 코드를 잠깐 살펴봤는데 뮤텍스와 다르게 상당히 코드 복잡도가 낮습니다. tickets.next과 tickets.owner 두 값으로 스핀락을 획득하는 순서를 콘트롤하죠. spin_lock 함수가 처음 실행되는 시점에 tickets.owner 값을 로컬 변수에 저장하고 전역 tickets.next 값이 업데이트 될 때까지 Busy-wait합니다. ...

[라즈베리파이] 가상 파일시스템 동작 분석(유저 프로세스 입장)

이번에 유저 어플리케이션 입장에서 가상 파일시스템 동작을 살펴보겠습니다.먼저 유저 공간에서 실행하는 다음 코드를 같이 작성해 봅시다.1 #include <stdio.h>2 #include <stdlib.h>3 #include <unistd.h>4 #include <sys/types.h>5 #include <...

[Linux][Kernel] preempt_disable()/preempt_enable() 주의 사항

preempt_disable() 함수를 쓸 때 주의해야 할 점이 있습니다.preempt_disable() 함수는 preempt_enable() 함수와 반드시 Pair로 써야 합니다.preempt_disable() 함수를 호출한 다음 스케줄링 동작을 수행하는 함수를 쓰면 리눅스 시스템은 오동작합니다.예를 들어 다음과 같은 드라이버를 초기화하는 코드를 예를...
1 2 3 4 5 6 7 8 9 10 다음