Posts
556 posts[리눅스커널] 워크큐(workqueue): Trace32로 워크큐 자료 구조 디버깅하기
이번 시간에는 임베디드 디버깅 프로그램인 Trace32를 써서 워크큐 자료구조를 점검합니다. 리눅스 커널 시스템에서 커널 크래시가 나면 생성되는 vmcore를 올려 확인한 내용입니다. 참고로, vmcore는 라즈베리파이가 아니라 다른 ARM64비트 아키텍처를 적용한 시스템에서 받았습니다. 먼저 시스템 워크큐 전역 변수를 확인합니다.var.view %type %string system_wq1 (static struct workqueue_struct *) system_wq = 0xFFFFFFC632C15080 -> (2 (struct list_head) pwqs = ((struct list_head *) next = 0xFFFFFFC63A3B2870 3 (struct list_head)
[리눅스커널] 워크큐: 딜레이 워크는 누가 언제 호출할까?
이전 소절에서는 schedule_delayed_work() 함수를 호출하면 동적 타이머를 실행해서 지정한 지연 시각 후에 동적 타이머 핸들러인 delayed_work_timer_fn() 함수가 실행되도록 한다고 했습니다. 이번 소절에서는 delayed_work_timer_fn() 함수가 어떻게 호출되는지 살펴봅니다. delayed_work_timer_fn() 함수는 언제 실행할까요? 동적 타이머 만료 시각에 도달하면 Soft IRQ 컨택스트에서 delayed_work_timer_fn() 함수를 호출합니다. Soft IRQ 전체 구조와 흐름은 8장(커널 타이머)에서 상세히 다룹니다. Soft IRQ 개념이 익숙하지 않은 분은 8장을 먼저 읽고 오시면 됩니다. 먼저 delayed_work_ti

MX 리눅스(MX Linux) 18.1 - 한글 입력 기능 추가
얼마전에 우연히 MX 리눅스(MX Linux)라는 배포판을 발견했다. 데비안(Debian) 리눅스를 기반으로 XFCE 데스크탑 환경을 채용하고 있으며 꽤 괜찮다는 평이 있길래 버추얼박스(VirtualBox)에서 가상머신으로 시험해 보았다. MX 리눅스 공식 홈페이지는 아래의 링크로 가면 된다. MX 리눅스 18.1 "컨티뉴엄(Continuum)" 64비트 버전으로 버추얼박스 5.2.18에서 설치를 했다. 라이브 모드로 부팅한 후 바탕화면에서 설치 아이콘을 클릭하면 다른 데비안/우분투 계열과 유사한 형태로 진행된다. 영어판으로 설치하고 한글 입력기를 추가하는 방식을 선호하는 관계로, 영어판으로 설치. 구동해 보니, 나름 깔끔하고 가벼운 느낌이다. 디스크 용량은 약 5GB 정도를 차지한다.
[리눅스커널][스케줄링] 선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개
선점 스케줄링 지연 함수 preempt_enable()/preempt_disable() 소개 리눅스 커널에서 선점 스케줄링을 동작을 잠시 지연할 수 있는 함수를 지원합니다. preempt_disable(): 선점 지연 활성화preempt_enable(): 선점 지연 비활성화 preempt_disable() 함수 이름은 "선점"을 의미하는 "preempt" 단어에 "불능"란 단어인 "disable"의 조합입니다.즉, preempt_disable() 함수를 실행하면 선점 스케줄을 지연할 수 있습니다. 마찬가지로 preempt_enable() 함수를 실행하면 선점 스케줄링을 활성화합니다. preempt_disable() 함수와 preempt_enable() 함수의 기본 원리를 알아보기 앞서 커널

