Guillermo Austin Kim

Sources

Posts

998 posts

[리눅스커널] 워크큐: 워크큐로 인터럽트 후반부 코드를 설계하는 과정 알아보기

Guillermo Austin Kim|2019년 8월 7일

인터럽트 후반부 기법이 생긴 이유는 다음과 같은 사실 때문입니다.  인터럽트 컨택스트에서는 짧고 간결하게 코드를 실행해야 한다. 그러면 인터럽트가 발생한 후에 SW적으로 실행해야 할 루틴이 4개가 있다고 가정하겠습니다.① 인터럽트를 발생한 하드웨어에 인터럽트를 잘 받았다고 알린다. ② 인터럽트를 처리했다는 플래그 정보를 업데이트한다. ③ 유저 공간에 인터럽트로 하드웨어가 변경된 사실을 알린다. ④ 인터럽트를 처리했다는 사실을 디버깅 자료구조에 남긴다. 임베디드 개발자는 4가지 루틴을 보면서 고민을 할 것입니다.  어느 루틴을 인터럽트 핸들러에서 처리할까? 고민 끝에 ①과 ②루틴을 인터럽트 컨택스트에서 처리하기로 결정했

[리눅스커널] 시간관리: jiffies와 jiffies_64 변수란

[리눅스커널] 시간관리: jiffies와 jiffies_64 변수란

Guillermo Austin Kim|2019년 8월 5일

jiffies와 jiffies_64 변수란지금까지 커널에서 jiffies 개념에 대해 알아봤습니다. 그렇다면 커널 코드에서 어떤 변수가 jiffies일까요? jiffies와 jiffies_64 변수이다. 뭔가 이상합니다. 어떻게 2개의 변수를 jiffies라고 말할 수 있을까요? 이해를 돕기 위해 한 가지 예를 들겠습니다.[https://github.com/raspberrypi/linux/blob/rpi-4.19.y/drivers/base/power/wakeup.c]1 void pm_wakeup_ws_event(struct wakeup_source *ws, unsigned int msec, bool hard)2 {3unsigned long flags;4unsigned long expires

[리눅스커널] 시간관리: jiffies란 무엇인가

Guillermo Austin Kim|2019년 8월 1일

jiffies란 많은 리눅스 커널 세부 함수에서 jiffies를 써서 실행 시간 기준으로 알고리즘을 제어합니다. 이번 시간에 jiffies의 개념을 소개하고 리눅스 커널에서 jiffies로 시간의 흐름을 제어하는 코드를 소개합니다. jiffies 소개jiffies는 커널 타이머를 실행하는 시간 단위입니다. 공학 용어로 Resolution와 비슷한 개념입니다. jiffies를 지피스라고도 부르기도 합니다. 하지만 이번 챕터에서 리눅스 커널에서 쓰는 jiffies란 용어를 그대로 쓰겠습니다. HZ란 무엇일까 jiffies 개념을 이해하려면 HZ가 무엇인지 알아야 합니다. HZ는 무엇일까요? HZ는 진동수라고 부르며 1초에 지피스(jiffies)가 업데이트되는 횟수이다. 만약 HZ가 300이면 지피

[리눅스커널] 메모리관리: 슬랩(Slab) 메모리 할당자를 이루는 주요 개념

Guillermo Austin Kim|2019년 7월 30일

리눅스 커널 메모리 서브 시스템 개발자들은 다음과 같은 목표로 메모리 성능 개선을 해왔습니다.- 메모리 할당 속도- 메모리가 파편화 최소화 물론 메모리을 빨리 할당하고 되도록 잔여 메모리를 많이 남기려는 목적입니다. 슬랩(Slab)이란 필자가 언급했듯이 커널 메모리 관리의 핵심 중 하나인 '슬랩(Slab)의 개념'은 매우 어렵습니다. 그래서 이해를 돕기 위해 구내 식당을 예를 들면서 '슬랩(Slab)'을 설명하겠습니다. 구내 식당에 온 사람들은 먼저 무엇을 먹을지 선택합니다. 일일이 메뉴를 지정해 알려주면 식당은 이에 맞게 음식을 준비했습니다. 그런데 문제가 생겼습니다. 점심 시간에 손님이 많이 몰려오면 음식을 준비하는 시간이 오래 걸렸기 때문입니다. 그래서 식당 관리자들이 다음과 같은 주제로 궁

[리눅스커널] 임베디드 리눅스 개발 단체

Guillermo Austin Kim|2019년 7월 30일

우리가 개발하는 임베디드 리눅스는 여러 단체가 협업한 결과물입니다. 각 단체별 역할을 알아보겠습니다. 리눅스 커뮤니티 우리가 보는 대부분 리눅스 커널 코드 출처는 리눅스 커널 커뮤니티입니다 리눅스 커널 커뮤니티는 리눅스 커널 개발의 심장입니다. 리눅스 커널 자체 알고리즘과 논리적 오류와 문제점을 개선하는 패치를 논의하고 관리합니다. - 버그 수정 패치 - 코드 리팩토링 - 신규 알고리즘 - Document 보통 2주 간격으로 Greg Kroah-Hartman 개발자가 다음과 같은 메일로 전 세계 개발자들에게 패치 반영 사실을 통지합니다. [그림] 리눅스 커널 패치를 배포할 때 메일(메일링 리스트) 위 그림은 필자의 메일 계정으로 온 리눅스 커널 패치 통보 메일입니다. 리눅스 커널 버전과