[리눅스커널] 커널 디버깅과 코드 학습: 디버깅과 코드 학습 능력
By Guillermo Austin Kim | 2020년 2월 23일 |
디버깅과 코드 학습 능력 디버깅하면서 리눅스 커널 코드를 함께 분석하면 다음과 같은 정보를 더 얻을 수 있습니다. 분석 대상 코드가 동작하는 콜스택 함수가 실행될 때 변경되는 자료구조 함수가 실행되는 빈도와 실행 시각 분석 대상 코드를 실행하는 프로세스 대부분 리눅스 커널을 공부할 때는 커널 소스코드를 열어 봅니다. 코드를 이해하는 능력은 리눅스 개발자의 기본 소양이므로 소스를 이해하는 능력은 중요합니다. 하지만 소스코드를 분석하면 실행 흐름을 보는 시야가 좁아집니다. 그래서 코드 분석과 함께 함수 실행 흐름과 실행 빈도를 알 필요가 있습니다. 커널 소스코드만 분석한 분이 있다고 가정해 봅시다. 또 다른 분은 커널 디버깅과 함께 커널 코드를 함께 분석했습니다. 둘 중에서 누가 더 빨리 커널
[리눅스커널] 인터럽트 후반부 기법을 적용하는 이유
By Guillermo Austin Kim | 2019년 2월 10일 |
인터럽트 후반부 기법을 적용하는 이유 인터러트 후반부 기법을 쓰는 이유에 대해 알아보기 전에 커널이 인터럽트를 어떤 방식으로 처리하는지 살펴볼 필요가 있습니다. 5장에서 배운 내용을 정리해보겠습니다. 1. 인터럽트가 발생하면 커널은 실행 중인 프로세스를 멈추고 인터럽트 벡터를 실행해서 인터럽트 핸들러를 실행합니다. 2. 인터럽트 핸들러는 짧고 빨리 실행해야 합니다. 3. 인터럽트를 처리하는 구간이 인터럽트 컨택스트인데 이를 in_interrupt() 함수가 알려줍니다. 인터럽트 후반부 기법을 적용해야 하는 이유는 인터럽트 컨택스트에서 빨리 실행을 끝내야 하기 때문입니다. 인터럽트는 실행 중인 코드를 멈추고 인터럽트를 핸들링하기 때문입니다. 자연스럽게 임베디드 리눅스 개발자뿐만 아니라 임베디드
[리눅스커널][가상파일시스템] 프로세스는 파일객체 자료구조를 어떻게 관리할까?
By Guillermo Austin Kim | 2019년 4월 8일 |
![[리눅스커널][가상파일시스템] 프로세스는 파일객체 자료구조를 어떻게 관리할까?](https://img.zoomtrend.com/2019/04/08/c0246238_5c936507e5dc2.png)
프로세스는 파일객체 자료구조를 어떻게 관리할까? 이전 절에서 파일을 오픈하면 프로세스가 파일 디스크립터와 파일 객체를 관리한다고 언급했습니다. 이번 소절에서는 프로세스 입장에서 파일 디스크립터와 파일 객체를 어떻게 관리하는지 살펴보겠습니다 패치 코드 소개이해를 돕기 위해 다음 어플리케이션 코드를 소개합니다.1 #include <stdio.h>2 #include <stdlib.h>3 #include <unistd.h>4 #include <sys/types.h>5 #include <signal.h>6 #include <string.h>7 #include <fcntl.h>89 #define FILENAME_NAME "/home/pi/s
[리눅스 커널] 운영체제란 무엇인가
By Guillermo Austin Kim | 2019년 7월 28일 |
리눅스는 삼척동자도 아는 가장 유명한 운영체제 중 하나입니다. 이번 절에서는 운영체제의 특징을 소개하고 리눅스 운영체제의 점유율을 확인하면서 리눅스의 전망을 알아보겠습니다. 운영체제란 무엇인가 운영체제는 알게 모르게 우리 일생 생활의 일부가 된지 오래됐습니다.대학생들은 수강 신청을 컴퓨터에서 하고 과제도 이메일로 제출합니다. 직장에서는 대부분 컴퓨터로 일을 합니다. 소프트웨어 개발자는 물론이고 다른 사무직에 몸담은 분들도 데스크탑에서 업무를 처리합니다. 또한 대부분 휴대폰을 하나씩 가지고 다닙니다. 그런데 데스크탑 PC와 휴대폰을 모두 운영체제가 탑재돼 있습니다. 그러면 컴퓨터와 휴대폰으로 무엇을 할까요? 다들 프로그램을 사용합니다. 컴퓨터나 휴대폰으로 게임을 하거나 사무용으로 메일을 읽고