[Linux][Kernel] fd(file descriptor: 파일 디스크립터) 디버깅 CrashTool
By Guillermo Austin Kim | 2017년 12월 20일 |
"echo c > /proc/sysrq-trigger" 명령어로 강제 커널 패닉을 유발시킨 다음 코어 덤프를 받아 보았어요.crash> bt -I C01003AC -S C59C3E20 0xD110E040PID: 4944 TASK: d110e040 CPU: 0 COMMAND: "sh" #0 [<c01003ac>] (do_DataAbort) from [<c0fde6a0>] pc : [<c0524b88>] lr : [<c0fdde2c>] psr: 60010013 sp : c59c3f10 ip : c1920700 fp : bee5765c r10: 00000000 r9 : acf2a284 r8 : 00000000
[Linux][Kernel] 슬랩 Slab Memory 소개
By Guillermo Austin Kim | 2017년 12월 11일 |
리눅스 커널 Memory Management의 꽃 슬랩(Slab)을 소개할께요. 슬랩이 소개 되기 전 리눅스 커널 메모리는 모두 동적 할당을 했어요. 한참 그렇게 메모리를 썼었죠. 그러다가 메모리 성능을 높이기 위한 과제를 리눅스 커널 전문가들이 진행했어요. 여러가지 메모리 성능을 키우는 코드 작업을 진행하다가, 한 가지 조사를 했어요. 뭐나면, 어떤 타입의 메모리를 커널 코드에서 할당하는지에 대해서였어요. 그런데 재미있게도 메모리를 할당하는 패턴이 정해져 있다는 걸 확인했어요. 평범한 서민들이 먹는 식단을 몇 가지가 될까요? 아마 전 먹는 메뉴가 20여 가지로 정해져 있거든요. 비빔밥, 짜장면, 고구마(저녁으로 먹죠), 스타벅스, 삽겹살, 순대… 저 같은 경우는 20가지도 안되는 것 같네요. 그래서
[리눅스커널] 가상파일시스템/파일객체: 파일 객체 함수 오퍼레이션
By Guillermo Austin Kim | 2019년 9월 3일 |
가상 파일시스템에서 파일 시스템 별로 파일을 열고 쓰고 읽는 함수 포인터 테이블을 지원합니다. 이 정보를 파일 함수 오퍼레이션이라고 하며 다음 해더 파일에 정의돼 있습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/include/linux/fs.h]struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *)
[bash: while, read, <] 텍스트 파일을 한줄씩 읽어서 작업하기
By 반달가면 | 2016년 12월 14일 |
텍스트 파일을 한줄씩 읽어서 순차적으로 작업을 해야 할 경우, while과 read 명령을 조합하고 I/O 리다이렉션(redirection)으로 파일을 열어 주면 된다. 예시를 보면 금방 감을 잡을 수 있을 것이다. 예를 들어 my_data.txt 파일을 한줄씩 읽어서 행번호와 함께 출력하는 경우를 생각해 보자. 아래와 같은 형태가 될 것이다. # 행번호 초기값 설정 line_num=1 # 파일에 대한 작업 while read -r rline do # 행번호와 read 명령으로 읽은 행 출력 echo "$line_num : $rline" # 행번호 1 증가 ((line_num++)) done < my_data.txt 행번호는 변수 line_num에, 파일로