Guillermo Austin Kim

Sources

Posts

998 posts

[리눅스커널] 프로세스: 태스크 디스크립터(task_struct 구조체) - 프로세스 연결 리스트

Guillermo Austin Kim|2020년 2월 29일

task_struct 구조체의 tasks 필드는 list_head 구조체로서 연결 리스트 타입입니다. 커널에서 구동 중인 모든 프로세스는 tasks 연결 리스트에 등록돼 있습니다. 그렇다면 프로세스의 태스크 디스크립터 tasks 연결 리스트 필드는 언제 init 프로세스의 태스크 디스크립터 tasks 연결 리스트에 등록될까요? 프로세스는 처음 생성될 때 init_task 전역변수 필드인 tasks 연결 리스트에 등록됩니다. 프로세스를 생성할 때 호출되는 copy_process() 함수를 보면서 처리 과정을 살펴보겠습니다. https://elixir.bootlin.com/linux/v4.19.30/source/kernel/fork.c1 static __latent_entropy struct task_stru

[리눅스커널] 프로세스: 커널 스레드는 어떻게 생성할까?

Guillermo Austin Kim|2020년 2월 29일

이어서 커널 스레드를 생성하는 과정에서 호출되는 함수를 소개하고 세부 코드를 분석하겠습니다. 커널 스레드가 생성되는 과정은 크게 2단계로 나눌 수 있습니다. 1) 1단계: kthreadd 프로세스에게 커널 스레드 생성을 요청  kthread_create() kthread_create_on_node() 2) 2단계: kthreadd 프로세스가 커널 스레드를 생성  kthreadd()  create_kthread() 각 단계별로 실행되는 함수를 살펴보겠습니다. 1단계: kthreadd 프로세스에게 커널 스레드 생성 요청 유저 프로세스를 생성하려면 fork() 함수를 호출해야 하듯이, 커널 스레드를 생성하려면 kthread_create() 커널 함수를 호출해야 합니다. 먼저 kthreadd 프

[리눅스커널] 인터럽트: 'Unbalanced enable for IRQ' 메시지에 대해서

Guillermo Austin Kim|2020년 2월 28일

프로젝트를 개발하다 보면 다음과 같은 WARN() 메시지를 커널 로그로 볼 수 있다. Unbalanced enable for IRQ 23------------[ cut here ]------------WARNING: at kernel/irq/manage.c:437:NIP [c00000000016de8c] .__enable_irq+0x11c/0x140LR [c00000000016de88] .__enable_irq+0x118/0x140Call Trace:[c000003ea1f23880] [c00000000016de88] .__enable_irq+0x118/0x140 (unreliable)[c000003ea1f23910] [c00000000016df08] .enable_irq+0x58/0xa0[c000003ea

[리눅스커널] 딜레이 워크: 패치 코드 내용과 작성 방법 알아보기

Guillermo Austin Kim|2020년 2월 27일

이번 절에서는 딜레이 워크를 만들어보는 실습을 진행합니다. 실습할 패치 코드 시나리오는 다음과 같습니다.  인터럽트 핸들러에서 워크를 큐잉 워크 핸들러 실행  워크 핸들러에서 딜레이 워크를 실행 이번 장에서 배운 내용을 총복습하는 실습입니다. 먼저 패치 코드를 작성해 봅시다. 패치 코드의 내용과 작성 방법 먼저 패치 코드를 소개하겠습니다. diff --git a/drivers/mailbox/bcm2835-mailbox.c b/drivers/mailbox/bcm2835-mailbox.c--- a/drivers/mailbox/bcm2835-mailbox.c+++ b/drivers/mailbox/bcm2835-mailbox.c@@ -33,11 +33,23 @@1 #include

[SW 진실과 오해] SW 개발자에게 낮은 연봉을 주는 이유

Guillermo Austin Kim|2020년 2월 24일

"회사가 연봉을 낮게 준다고요?" "연봉을 낮게 주는데는 그럴 만한 이유가 있어요" 이번 포스팅에서 회사에서 SW 개발자에게 연봉을 낮게 주는 이유에 대해서 이야기를 하려고 합니다.이 포스팅에는 공개적으로 이야기하기 좀 꺼리는 내용이 포함돼 있어 조금 거북해질 수 있는데요. 거북하지만 글의 내용은 모두 SW 개발자의 입장에서 작성됐고 SW 개발자에게 도움을 줄 수 있는 내용입니다.SW 개발자들이 왜 낮은 연봉을 받는지 이제부터 이야기를 해볼까요? SW를 하드웨어를 돌리는 부품으로 간주 SW 개발자에게 연봉을 낮게 주는 가장 이유는 업체에서 SW 개발을 부품 혹은 비용으로 간주하기 때문입니다.특히 제조업 기반의 업체에서 SW를 "하드웨어를 돌리는 하나의 부품"으로 바라보는 경우가 많습니다. "갑자기