태그>linuxkernel(총 50개의 글)
'linuxkernel' 관련 최근글
-
- [리눅스커널] 슬럽 메모리: set_track() 함수에 전달되는 addr인자의..
-
ARM Linux Kernel Hacks by AustinKim|2020/12/10 16:23
리눅스 커널의 슬럽 관련 디버깅 피쳐를 켜 놓으면, struct track 구조체로 슬럽 오브젝트를 할당하거나 해제할 때의 콜 스택 정보를 저장합니다. 이를 처리하는 핵심 함수는 set_track() 함수인데, 이 함수에 마지막으로 전달되는 인자는 addr입니다. 다음은 set_track()..
리눅스커널, 슬럽, linuxkernel, slub
- [리눅스커널] 슬럽 메모리: set_track() 함수에 전달되는 addr인자의..
-
- [리눅스커널] 프로세스 스케줄링: struct task_struct의 어느 필드가 ..
-
Linux Kernel(4.19) Hacks by AustinKim|2020/06/05 19:44
블로그 방문자께서 댓글로 다음과 같은 질문을 주셨습니다. * 한 프로세스가 context switching(cpu burst)이 일어난 횟수는 task_struct 구조체에서 어떤 변수로 확인할 수 있나요? 이 질문에 답을 드리면; * task_struct 구조체의 nivcsw 필드가 컨텍스트 스위칭을 한 횟..
- [리눅스커널] 프로세스 스케줄링: struct task_struct의 어느 필드가 ..
-
- [리눅스커널] 프로세스 별로 파일 디스크립터(파일 객체)는 어떻게 관..
-
Linux Kernel(4.19) Hacks by AustinKim|2020/02/18 13:26
아래 포스팅을 읽은 방문자님께서 댓글로 남겨 주신 질문에 대답하려고 합니다. [리눅스커널][가상파일시스템] 파일 객체: write 연산 세부 동작 분석 질문 서로 다른 프로세스에서 f1파일을 열었으니 fd가 가르키는 시스템 파일 테이블의 파일이 다를텐데어떻게 내용이 삭제되거..
- [리눅스커널] 프로세스 별로 파일 디스크립터(파일 객체)는 어떻게 관..
-
- [리눅스커널] GCC 지시어
-
Linux Kernel(4.19) Hacks by AustinKim|2019/12/21 19:14
[부록-A] GCC 지시어 리눅스 커널 코드를 읽다 보면 낯선 구문을 만날 가능성이 높습니다. 이 중 하나가 GCC 컴파일러 지시어입니다. 이번 시간에는 리눅스 커널에서 자주 쓰는 GCC 지시어를 소개합니다. 1. _init과 _section() _init 키워드가 함수 선언부에 있으면 해당 ..
리눅스커널, linuxkernel, gcc, __init, init
- [리눅스커널] GCC 지시어
-
- [리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기
-
Linux Kernel(4.19) Hacks by AustinKim|2019/12/08 09:46
이번에는 조금 더 재미있는 패치 코드를 같이 볼까요? 다음은 패치 코드의 내용입니다. diff -git a/kernel/workqueue.c b/kernel/workqueue.cindex cd8b61b.128c998 100644- a/kernel/workqueue.c+ b/kernel/workqueue.c@@ -49,7 +49,7 @@ #include #inc..
리눅스커널, linuxkernel, 디버깅, kernel, 커널타이머
- [리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기
-
- [LinuxKernel] What is critical section and..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/10/21 22:37
Kernel synchronization is a technique for designing or maintaining code that behaves as follows: 1. Only one process is accessed when executing a function or a specific ..
- [LinuxKernel] What is critical section and..
-
- [Crash-Utility] Radix Tree 디버깅: 'tree -t radix -N (struct radix..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/30 18:35
이번 시간에는 크래시 유틸리티로 라덱스 트리를 디버깅하는 방법을 소개합니다. 라딕스 트리(Radix Tree)를 보기 위한 명령어 크래시 유틸리티로 라덱스 트리 노드를 보기 위한 명령어 포멧은 다음과 같습니다. tree -t radix -N (struct radix_tree_node *) 구조체 주소..
tree, Crash-Utility, Radix, 리눅스커널, 리눅스
- [Crash-Utility] Radix Tree 디버깅: 'tree -t radix -N (struct radix..
-
- [리눅스커널] 가상파일시스템/파일객체: 파일 객체 함수 오퍼레이션
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/03 21:02
가상 파일시스템에서 파일 시스템 별로 파일을 열고 쓰고 읽는 함수 포인터 테이블을 지원합니다. 이 정보를 파일 함수 오퍼레이션이라고 하며 다음 해더 파일에 정의돼 있습니다. file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); s..
- [리눅스커널] 가상파일시스템/파일객체: 파일 객체 함수 오퍼레이션
-
- [리눅스커널] 가상파일시스템/소개: 함수 오퍼레..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/03 20:58
이번 절에서 소개했듯이, 각각 파일 시스템에 액세스를 하기 위해서 먼저 가상 파일시스템에 접근합니다. 이 때 가상 파일 시스템에서 지원하는 4가지 객체에서 지정한 함수 포인터를 통해 파일 시스템 세부 함수에 접근합니..
- [리눅스커널] 가상파일시스템/소개: 함수 오퍼레..
-
- [리눅스커널] 메모리관리/디버깅: kmalloc() 함수로 메모리 할당 후 슬..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/03 20:48
이번 소절에서는 가상주소를 물리주소로 변환하는 과정을 실습으로 알아봅시다. 3장 3.6 절에 소개한 rpi_debugfs.c 소스를 활용해 실습을 진행합니다. 먼저 rpi_debugfs.c 소스를 입력하고 커널 빌드를 하시기 바랍니다. 패치 코드 입력 방법 알아보기 먼저 입력할 패치 코..
리눅스커널, 리눅스, linux, kernel, linuxkernel
- [리눅스커널] 메모리관리/디버깅: kmalloc() 함수로 메모리 할당 후 슬..
-
- [리눅스커널] 메모리관리/디버깅: 가상주소를 물리주소로 변환 확인 실습
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/03 06:33
이번 소절에서는 가상주소를 물리주소로 변환하는 과정을 실습으로 알아봅시다. 3장 3.6 절에 소개한 rpi_debugfs.c 소스를 활용해 실습을 진행합니다. 먼저 rpi_debugfs.c 소스를 입력하고 커널 빌드를 하시기 바랍니다. 패치 코드 입력 방법 알아보기 먼저 입력할 패치 코..
리눅스, 리눅스커널, linux, linuxkernel, 라즈베리파이
- [리눅스커널] 메모리관리/디버깅: 가상주소를 물리주소로 변환 확인 실습
-
- [리눅스커널] 메모리관리/디버깅: ftrace로 메모..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/01 18:52
ftrace에서 지원하는 kmalloc와 kfree 이벤트를 사용하면 kmalloc()와 kfree() 함수를 호출할 때 세부 정보를 알 수 있습니다. kmalloc 이벤트: kmalloc() 함수로 메모리 할당을 요청했을때 동작 ..
리눅스, 리눅스커널, linux, linuxkernel, kernel
- [리눅스커널] 메모리관리/디버깅: ftrace로 메모..
-
- [리눅스커널] 메모리 관리: 슬럽 오브젝트 해제하는 kfree() 함수 분석하기
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/01 18:42
kmalloc() 함수로 동적 메모리를 할당하고 난 후 사용하지 않으면 메모리를 반환해야 합니다. 이 때 kfree() 함수를 사용하면 됩니다. 이번 시간에는 kfree() 함수를 분석하면서 커널 내부에서 반환하는 동적 메모리를 어떻게 처리하는지 살펴보겠습니다.[https://github..
리눅스, linux, 리눅스커널, linuxkernel, 슬랩
- [리눅스커널] 메모리 관리: 슬럽 오브젝트 해제하는 kfree() 함수 분석하기
-
- [리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 ..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/09/01 17:46
우리는 'kmalloc() 함수를 호출하면 동적 메모리를 할당할 수 있다.'란 사실을 알고 있습니다. 하지만 kmalloc() 함수에서 호출하는 커널 내부 함수는 거의 분석하지는 않는 듯 합니다. 이번 시간에는 kmal..
linux, linuxkernel, slab, 슬랩, 리눅스커널
- [리눅스커널] 메모리 관리: kmalloc 캐시 슬럽 ..
-
- [리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock..
-
Linux Kernel(4.19) Hacks by AustinKim|2019/08/22 08:18
리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 코드를 많이 볼 수 있습니다. 이렇게 커널은 스핀락 기능을 확장한 플러그인 형태 스핀락 함수들을 제공합니다. 이번 소절에서는 spin_lock() 함수..
- [리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock..