[라즈베리파이][리눅스커널] 워크큐(Workqueue) - worker_thread() 함수 분석(1)
By Guillermo Austin Kim | 2018년 9월 12일 |
워크는 워커 쓰레드가 실행합니다. 워커 쓰레드를 관리하는 자료구조는 struct worker 구조체이며 이를 워커라고 부릅니다. 이전까지 자료구조 중심으로 워크를 분석했는데 이번에는 워커 쓰레드가 쓰레드 관점으로 어떻게 실행하는지 알아봅니다. 다음은 워커 자료구조인 struct worker 구조체 선언부입니다.[https://elixir.bootlin.com/linux/v4.14.43/source/kernel/workqueue_internal.h#L24]1 struct worker {2 union {3 struct list_head entry; 4 struct hlist_node hentry; 5 };6 struct work_struct *current_work; 7 work_func_t curre
[ESXi 6.5] Photon OS 설치하여 Docker Host로 운영하기
By 지훈현서 | 2018년 11월 22일 |
거의 지난 주말부터 ESXi 서버에 대해서 살펴보고 있습니다. ESXi 서버는 그 안에 필요한 VM을 하나 하나 설치하는 것이니,쉽게 말해 나만의 IaaS 를 구축한다고 할 수 있겠습니다.(ESXi 서버가 https 포트만 포트포워딩 시켜 놓으면 외부에서도 작업을 거의 다 할 수 있는 것이 환상입니다) 그런데 CaaS 처럼 구축하기 위해서는 역시나 ESXi 서버에 Docker Host 기능을하는 Linux를 설치하여야 합니다. 여기에서도 잠깐, 아주 오래전 (약 10년전) 우분투 설치를 하다보면"최소 가상머신 설치" 라는 것이 있었습니다.JeOS (쥬~스 라고 발음했던 기억이) 라고 Just Enough OS 라고 불려최소로 설치하는 것을 의미했습니다. 마치 Docker에서 image 를 최소화 하
[Linux][Kernel] 타이머(Timer) Overview
By Guillermo Austin Kim | 2017년 12월 9일 |
리눅스 커널에서 아주 중요한 Subsystem 중 하나인 타이머에 대해서 간단히 짚어 볼께요. init_timer아래 함수 콜로 do_init_timer() 함수에서 struct timer_list *timer 초기화를 수행해요.__init_timer((timer), 0)init_timer_key((_timer), (_flags), #_timer, &__key);do_init_timer(timer, flags, name, key); MIPS 아키텍쳐에서 아래와 같이 타이머를 세팅하는 코드가 있네요.static inline void ip32_power_button(void){// .. 생략.. blink_timer.data = POWERDOWN_FREQ; blink_timeout(POWERDOWN_
[리눅스커널] 스케줄링: __schedule() 함수와 'bool preempt' 인자
By Guillermo Austin Kim | 2020년 1월 15일 |
다음과 같이 __schedule() 함수의 구현부를 보면 'bool preempt' 인자를 전달한다. void __sched notrace __schedule(bool preempt){ struct task_struct *prev, *next; unsigned long *switch_count; struct rq_flags rf; 이번 시간에는 이 함수에 'bool preempt' 인자가 추가된 이력을 확인해보자. __schedule() 함수에 'bool preempt' 인자가 추가된 패치 출처는 다음과 같다.https://lkml.org/lkml/2015/9/30/100 패치 코드의 내용은 다음과 같다. From fc13aebab7d8f0d19d557c721a0f25cdf7ae9