[라즈베리파이] 인터럽트 백터 - 스택 푸쉬
By Guillermo Austin Kim | 2018년 2월 19일 |
인터럽트가 발생했을 때 구동중인 프로세스의 레지스터가 스택 메모리 공간에 푸쉬된다고 설명했는데요. 실제 Trace32 프로그램으로 스택 메모리 덤프를 확인해 보겠습니다. 아래 콜스택은 리눅스 커널에서자주 볼 수 함수로 구성되어 있는데 ext4 파일 시스템에서 특정 파일을 동기화(Synch)하는 동작 중에 인터럽트가 발생했습니다..-000|account_group_exec_runtime(inline)-000|update_curr()-001|check_spread(inline)-001|put_prev_entity()-002|put_prev_task_fair()-003|pick_next_task_rt(inline)-003|pick_next_task_rt()-004|pick_next_task(inline)-004|
[Linux-Kernel] LKML: qla2xxx: fix a potential NULL pointer dereference
By Guillermo Austin Kim | 2019년 9월 29일 |
출처https://patchwork.kernel.org/patch/11150763/https://lkml.org/lkml/2019/9/18/796 //// 흥미로운 패치다.// diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.cindex 98e60a3..31714c9 100644--- a/drivers/scsi/qla2xxx/qla_os.c+++ b/drivers/scsi/qla2xxx/qla_os.c@@ -3232,6 +3232,10 @@ static void qla2x00_iocb_work_fn(struct work_struct *work) req->req_q_in, req->req_q_out, r
[리눅스커널] 익명 페이지 메모리 누수(Memory Leak) 디버깅 - TRACE32
By Guillermo Austin Kim | 2019년 12월 16일 |
많은 리눅스 시스템 개발자들은 자신이 개발하고 있는 리눅스 커널의 버전이 주류였으면 하는 바램이 있다. 하지만 현실은 다르다. 현재 리눅스 커널의 최신 버전인 4.19(LTS 기준)으로 개발하고 있어도 이전 리눅스 커널 버전에서 다뤘던 자료 구조에 대해 알고 있어야 한다. 이번에는 커널 3.10 버전에서 struct anon_vma 구조체와 struct address_space 구조체의 관계에 대해 알아보겠다. 먼저 다음 TRACE32 명령어를 입력해 3번째 프레임의 페이지 디스크립터를 확인하자. $(TRACE32 명령어) v.v %d %t %h %i (struct page[0x7FFF])*mem_map (static struct page [32767]) (struct page[0x7FFF])*me
[리눅스커널] 메모리관리: 페이지 테이블에 대해 알아보기
By Guillermo Austin Kim | 2019년 7월 17일 |
페이지 테이블로 가상 주소를 물리 주소로 변환하는 흐름을 살펴봤습니다. 이 과정에서 알아야 하는 주요 개념을 소개합니다. - 페이지 테이블 엔트리 - 페이지 테이블 엔트리 주소 페이지 테이블 엔트리페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)는 페이지 테이블의 정보이며 레코드라고도 부릅니다. 페이지 테이블 엔트리 주소말 그대로 페이지 테이블 엔트리가 있는 주소를 의미합니다. 이해를 돕기 위해 다음 주소 테이블을 보겠습니다. 주소 | 값 1 NSD:80004000 | 0x02 NSD:80004004 | 0x03 NSD:80004008 | 0x04 NSD:8000400C | 0x0...5 NSD:80006018 | 0x0061941E6 NSD:8000