태그 : linuxkernel 요약보기전체보기목록닫기
- [커널크래시] 인터럽트 컨텍스트에서 wake_up_interruptible 대신 wake_up_locked 사용! (0)2022.01.05
- [리눅스커널][Arm64] 유저 공간(EL0)에서 시스템 콜 번호는 어떻게 지정할까?(0)2021.08.21
- [리눅스커널] 메모리: kcalloc() 함수와 kmalloc_array() 함수의 차이점 (0)2021.06.09
- [리눅스커널] 슬럽 메모리: set_track() 함수에 전달되는 addr인자의 정체(0)2020.12.10
- [리눅스커널] 프로세스 스케줄링: struct task_struct의 어느 필드가 컨텍스트 스위칭 횟수를 저장할까?(0)2020.06.05
- [리눅스커널] 프로세스 별로 파일 디스크립터(파일 객체)는 어떻게 관리하나?(0)2020.02.18
- [리눅스커널] GCC 지시어(0)2019.12.21
- [리눅스커널] 커널 동적 타이머를 사용해 실행 시각을 측정해보기!(0)2019.12.08
- [LinuxKernel] What is critical section and race condition? (0)2019.10.21
- [Crash-Utility] Radix Tree 디버깅: 'tree -t radix -N (struct radix_tree_node *) 구조체 주소'!(0)2019.09.30
- [Kernel]Crash: Troubleshooting
- 2022/01/05 16:15
인터럽트 컨텍스트에서 슬립을 지원하는 커널 함수를 호출하면 어떻게 동작할까요? 커널 패닉이 유발됩니다.이번에는 인터럽트 컨텍스트에서 발생한 커널 패닉 이슈를 소개합니다.먼저 커널 로그를 소개합니다. [1.538173] BUG: sleeping function called from invalid context at kernel/locking/rt...
- 11. 시스템 콜
- 2021/08/21 09:43
이번에는 64비트 기반 리눅스 커널에서 구동되는 라즈비안에서 시스템 콜 번호를 확인해 보겠습니다.이를 위해 바이너리 유틸리티를 활용해 libc 라이브러리를 어셈블리 명령어로 분석할 필요가 있습니다.root@raspberrypi:/usr# find . -name libc.a./lib/aarch64-linux-gnu/libc.aroot@raspberrypi...
- 14. 메모리 관리
- 2021/06/09 10:27
kcalloc() 함수는 어떤 역할을 수행할까요? 구현부를 보겠습니다.https://elixir.bootlin.com/linux/v5.12/source/include/linux/slab.hstatic inline void *kcalloc(size_t n, size_t size, gfp_t flags){ return kmalloc_array(n, size...
- 14. 메모리 관리
- 2020/12/10 16:23
리눅스 커널의 슬럽 관련 디버깅 피쳐를 켜 놓으면, struct track 구조체로 슬럽 오브젝트를 할당하거나 해제할 때의 콜 스택 정보를 저장합니다. 이를 처리하는 핵심 함수는 set_track() 함수인데, 이 함수에 마지막으로 전달되는 인자는 addr입니다.다음은 set_track() 함수의 구현부인데, 볼드체로 표기된 부분을 봅시다.https:/...
블로그 방문자께서 댓글로 다음과 같은 질문을 주셨습니다. * 한 프로세스가 context switching(cpu burst)이 일어난 횟수는 task_struct 구조체에서 어떤 변수로 확인할 수 있나요?이 질문에 답을 드리면; * task_struct 구조체의 nivcsw 필드가 컨텍스트 스위칭을 한 횟...
- 13. 가상 파일 시스템
- 2020/02/18 13:26
아래 포스팅을 읽은 방문자님께서 댓글로 남겨 주신 질문에 대답하려고 합니다.http://rousalome.egloos.com/9993265 [리눅스커널][가상파일시스템] 파일 객체: write 연산 세부 동작 분석질문서로 다른 프로세스에서 f1파일을 열었으니 fd가 가르키는 시스템 파일 테이블의 파일이 다를텐데어떻게 내용이 삭제되거나 섞이지도...
- 미분류
- 2019/12/21 19:14
[부록-A] GCC 지시어리눅스 커널 코드를 읽다 보면 낯선 구문을 만날 가능성이 높습니다. 이 중 하나가 GCC 컴파일러 지시어입니다. 이번 시간에는 리눅스 커널에서 자주 쓰는 GCC 지시어를 소개합니다.1. __init과 __section()__init 키워드가 함수 선언부에 있으면 해당 함수는 init.text 섹션에 위치합니다. 이해를 돕기 위해...
- [Debugging] Tips
- 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 @@ ...
- 9. 커널 동기화(spinlock/mutex)
- 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 code segment.2. Run the code i...
- [Debugging] Tips
- 2019/09/30 18:35
이번 시간에는 크래시 유틸리티로 라덱스 트리를 디버깅하는 방법을 소개합니다.라딕스 트리(Radix Tree)를 보기 위한 명령어크래시 유틸리티로 라덱스 트리 노드를 보기 위한 명령어 포멧은 다음과 같습니다.tree -t radix -N (struct radix_tree_node *) 구조체 주소예제 명령어 및 결과 ( struct radix_tree_n...
최근 덧글