리눅스커널

포스트: 154|조회수: 0|TERM
Items

Posts

154 posts

[리눅스커널] 스핀락 플러그인 함수: spin_lock_irq()/spin_unlock_irq()

Guillermo Austin Kim|2019년 8월 21일

리눅스 커널 코드를 조금만 분석하면 spin_lock() 함수뿐만 아니라 spin_lock_irq() 함수를 써서 임계 영역을 보호하는 코드를 많이 볼 수 있습니다. 이렇게 커널은 스핀락 기능을 확장한 플러그인 형태 스핀락 함수들을 제공합니다. 이번 소절에서는 spin_lock() 함수 기능을 확장한 스핀락 플러그인 함수를 소개합니다. spin_lock_irq()/spin_unlock_irq() 먼저 spin_lock_irq()/spin_unlock_irq() 함수를 리눅스 커널에서 지원하는 이유를 알아보고 세부 코드를 분석하겠습니다. spin_lock_irq()/spin_unlock_irq() 함수가 생겨난 이유는 무엇일까? spin_lock_irq()/spin_unlock_irq() 함수 코드

[리눅스커널] 시간관리: 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)'을 설명하겠습니다. 구내 식당에 온 사람들은 먼저 무엇을 먹을지 선택합니다. 일일이 메뉴를 지정해 알려주면 식당은 이에 맞게 음식을 준비했습니다. 그런데 문제가 생겼습니다. 점심 시간에 손님이 많이 몰려오면 음식을 준비하는 시간이 오래 걸렸기 때문입니다. 그래서 식당 관리자들이 다음과 같은 주제로 궁