Guillermo Austin Kim

Sources

Posts

998 posts

[SW] 소프트웨어 개발 능력을 혼자 *아무리 노력해도* 키울 수 없는 현실

Guillermo Austin Kim|2019년 1월 28일

이번 시간에는 소프트웨어 개발 능력을 혼자 키울 수 없는 안타까운 한국 현실(소프트웨어 인프라)에 대해 포스팅을 해보겠다. +자기 개발서자기 개발서 서적을 보면 다음과 같은 내용을 볼 수 있다.+ 책 3천권을 읽었더니 난 다른 사람이 되었다. 무궁무진한 아이디어가 샘솟는 것을 느꼈다.+ 3천 권을 책을 읽었더니 엄청난 아이디어가 떠오르고 지적 능력이 업그레이드됐다.+ 결국 능력있는 학생 혹은 직장인이 됐다.+ 책을 많이 읽자. 책은 우리 인생을 바꿔주는 지침이다. 여기서 중요한 문구는;+ 3천 권을 책을 읽었더니 엄청난 아이디어가 떠오르고 지적 능력이 업그레이드됐다. 란 것이다. 그런데 이런 소리를 하는 분들은 전업 작가들이 대부분이다. 전업 작가 분들이 알려주는 중요한 교훈을 다음 문장으로 바꾸면 어

[라즈베리파이] 프로세스: 태스크 디스크립터(프로세스 식별/프로세스 상태)

Guillermo Austin Kim|2019년 1월 27일

프로세스를 식별하는 멤버들을 살펴 보겠습니다. char comm[TASK_COMM_LEN]; comm은 TASK_COMM_LEN 크기 배열이며 프로세스 이름을 저장합니다. "ps -ely"란 명령어를 입력하면 다음과 같이 systemd, kthreadd 그리고 kworker/0:0H가 보입니다.root@raspberrypi:/home/pi # ps -ely1 S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD2 S 0 1 0 0 80 0 5964 7007 SyS_ep ? 00:00:02 systemd3 S 0 2 0 0 80 0 0 0 kt

[리눅스커널] Crash: 비트 플립 @profile_tick()

Guillermo Austin Kim|2019년 1월 26일

이번에는 비트 플립으로 발생한 커널 패닉 코어 덤프 분석 과정을 소개합니다. 다음은 T32로 커널 패닉이 발생했을 때 잡은 콜스택입니다.01 -000|machine_restart(?)02 -001|arch_local_irq_enable(inline)03 -001|panic(fmt = 0xC0EF195A)04 -002|oops_end(inline)05 -002|die(str = 0xC017409E, ?, err = -590234666)06 -003|do_undefinstr(regs = 0xDCD1BCA8)07 -004|__und_svc_fault(asm)08 -->|exception09 -005|profile_tick(type = -590234136)10 -006|tick_sched_timer(tim

[라즈베리파이] 프로세스: 태스크 디스크립터(struct task_struct) 소개

Guillermo Austin Kim|2019년 1월 26일

태스크 디스크립터(struct task_struct)프로세스 속성 정보를 표현하는 가장 중요한 자료구조는 무엇일까요? 정답은 태스크 디스크립터이며 자료구조는 struct task_struct입니다. 리눅스 커널에서 가장 중요한 자료구조이며 리눅스 디바이스 드라이버와 커널 코드를 보는 분들은 모두 잘 알아야 할 내용입니다. TCB(Task Control Block)란 용어 들어본 적 있나요? 임베디드 시스템에서 태스크 혹은 프로세스 정보를 표현하는 자료구조입니다. 리눅스 커널에서 프로세스 정보를 표현하는 자료 구조는 뭘까요? 여기서 임베디드 시스템에서 말하는 태스크와 리눅스 커널의 프로세스는 같은 개념으로 봐야 합니다. 프로세스마다 자신의 속성을 저장하는 태스크 디스크립터가 있는 것입니다.정답은 stru

[리눅스][커널] 커널 커맨드 라인 파싱 확인 @parse_one() 함수 분석

Guillermo Austin Kim|2019년 1월 26일

부트로더는 커널을 RAM에 로딩하고 실행을 시키는 역할 뿐 아니라 커널에게 어떤 아규먼트를 전달할 수 있습니다. 이를 커맨드 라인이라고 하며 proc 파일 시스템에서 커맨드 라인을 출력할 수 있는 인터페이스를 지원합니다. 커널 커맨드 라인은 왜 쓸까?리눅스 커널을 지원하는 부트로더의 예로 uboot, LK(Little Kernel) EDK를 들 수 있습니다.혹은 SoC(퀄컴, 인텔, 엔비디아)에서 구현한 자체 부트로더를 써서 커널을 램에 로딩할 수 있습니다. 이렇게 리눅스 커널을 RAM에 로딩하는 부트로더 종류는 언급한 이유는 어떤 부트로더를 적용해도 반드시 커널 커맨드 라인을 지원해야 한다는 사실을 말하고 싶어서입니다. 그러면 커널 커맨드 라인을 쓰는 이유는 무엇일까요?다시 반복하지만 커널 커맨드 라