LINUXKERNEL
Posts
40 posts[리눅스커널][디버깅] 커널 디버깅이란 무엇인가?
디버깅은 '디버그'와 'ing' 합성어로 버그를 잡는 과정을 뜻합니다. 누군가 '디버깅을 하고 있다.' 라고 말하면 '버그를 수정하고 있다.'고 볼 수 있습니다. 이번 절에서 디버깅 방법을 소개하기 전 디버깅이 중요한 이유를 다음 관점으로 알아보겠습니다. 문제 해결 능력 커널 코드 학습 능력 필자는 디버깅을 단지 버그를 잡는 과정으로만 보지 않습니다. 리눅스 커널과 드라이버가 정상 동작할 때 자료구조와 함수 호출까지 파악하는 과정을 디버깅이라고 생각합니다. 그 이유를 더 알아볼까요? 디버깅은 문제 해결을 키우는 지름길 신입 개발자들은 실전 리눅스 개발에서 어떤 업무를 하는지 궁금해합니다. 임베디드 리눅스는 ‘클라우드 서버’, ‘휴대폰’, ‘자동차’ 까지 다양한 분야에서 쓰고 있습니다. 따라서 실전
[리눅스커널][스케줄링] 크래시 유틸리티로 컨택스트 스위칭 디버깅하기
크래시 유틸리티로 컨택스트 스위칭 디버깅하기 이번에는 크래시 유틸리티를 활용해 컨택스트 정보를 확인하겠습니다. 다음 정보는 ARM 코어에서 실행 중인 프로세스의 레지스터 세트입니다.pc : [<80f65224>] lr : [<80f65bcc>] psr: 0x80f655acsp : 0x9b7dfce8 ip : 0x9b7dfd74 fp : 0x9b7dfd64r10: 0x0 r9 : 0x9f89ea00 r8 : 0x9db8b200r7 : 0x81709294 r6 : 0x9eb07000 r5 : 0x828ea000 r4 : 0xa6b46780r3 : 0x00000000 r2 : 0x036db918 r1 : 0x00000089 r0 : 0x7
[리눅스커널][스케줄링] ftrace로 컨택스트 스위칭 동작 확인
ftrace로 컨택스트 스위칭 동작 확인 이전 절에 봤던 ftrace 로그를 살펴보면서 스케줄링 동작을 살펴봅시다.lxpanel-718 [002] d... 7831.739824: sched_switch: prev_comm=lxpanel prev_pid=718 prev_prio=120 prev_state=D ==> next_comm=Xorg next_pid=552 next_prio=120 먼저 메시지 가장 왼쪽 부분을 보겠습니다. CPU2에서 lxpanel(pid-718) 프로세스가 실행 중입니다. 휴면에 진입할 프로세스는 lxpanel(pid=718) 이고 다음에 실행될 프로세스는 Xorg(pid=552)입니다. - struct task_struct *prev: prev_comm=lxpane
[리눅스커널][스케줄링] 컨택스트 스위칭: context_switch() 세부 코드 분석
컨택스트 스위칭 세부 코드 분석이전 소절에서 다룬 컨택스트 스위칭이란 다음과 같은 문장으로 정리할 수 있습니다.CPU에서 실행 중인 프로세스 정보로 채워진 CPU 레지스터 세트를 프로세스 스택 공간에 저장하고 다음에 실행할 프로세스의 레지스터 세트를 스택 공간에서 로딩해 CPU 레지스터 세트에 채우는 동작입니다. 이번에는 context_switch() 함수 분석으로 컨택스트 스위칭 코드 동작을 알아보겠습니다. 먼저 context_switch() 함수에 전달하는 인자를 확인합시다.[https://elixir.bootlin.com/linux/v4.14.70/source/kernel/sched/core.c]static __always_inline struct rq *context_switch(struct rq

