[라즈베리파이] 커널 타이머 -동적 타이머는 누가 언제 호출하나? (3)
By Guillermo Austin Kim | 2018년 8월 29일 |
커널 시스템 타이머 전체 흐름에서 4단계를 분석할 차례입니다. [그림 ] 커널 타이머 전체 흐름도 4단계마지막 4단계인 커널 시스템 타이머가 동적 타이머를 종료하고 동적 타이머 핸들러 함수를 호출하는 동작을 살펴보겠습니다. 주석문을 지우고 본 run_timer_softirq() 함수 구현부는 다음과 같습니다. 1 static __latent_entropy void run_timer_softirq(struct softirq_action *h)2 {3struct timer_base *base = this_cpu_ptr(&timer_bases[BASE_STD]);4base->must_forward_clk = false;56__run_timers(base);7if (IS_ENABLED(
[bash: sed] 슬래시(/)가 포함된 문자열 대체하기
By 반달가면 | 2019년 6월 5일 |
우선 sed를 이용한 문자열 대체의 기본적인 예시는 이전 게시물을 참고하자. 여기로. # abc를 ABCD로 대체 echo "abc" | sed "s/abc/ABCD/" ABCD 그런데 만약 대체하고자 하는 문자열 자체에 슬래시(/)가 포함되면 어떻게 할 것인가? 의외로 방법은 간단하다. sed에서 통상 슬래시를 구분자로 사용하지만, 사실은 s 옵션 바로 다음에 나오는 문자가 구분자로 지정된다. 그리고 이 구분자가 반드시 슬래시일 필요는 없다. 아래의 예시를 보자. # ab/c를 ABC/D로 대체, 구분자는 "%" echo "ab/c" | sed "s%ab/c%ABC/D%" ABC/D "s/문자열/문자열/" 형태 대신 "s%문자열%문자열%" 형태로, 구분자를 퍼센트(%) 기
[리눅스커널] 스케줄링: 스케줄링 정책이란
By Guillermo Austin Kim | 2019년 2월 7일 |
스케줄링은 실행 대기 상태에 있는 프로세스 목록 중 하나를 선택해서 CPU를 실행하는 동작입니다. 여기서 한 가지 의문이 생깁니다. | 실행 대기 상태 프로세스들 중 하나를 선택한 후 CPU 실행 상태로 어떤 방식으로 바꿔줄까? 스케줄링 세부 구현을 할 때 다음 그림과 같이 Process A ~ Proces D 프로세스를 어떤 방식으로 선택해서 CPU에 실행할지 결정을 해야 하는 문제가 있는 것입니다. 스케줄링 동작을 구현할 때 어떤 프로세스를 어떤 방식으로 선택하느냐 중요한 설계 요소입니다. 이를 스케줄링 정책이라고 이야기를 합니다. 스케줄링 정책은 크게 다음과 같이 분류 할 수 있습니다. + 우선 순위가 높은 프로세스가 계속 CPU를 점유하면서 실행합니다.+ 실행 대기 상태에 있는 프로세스들
[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나?[1]
By Guillermo Austin Kim | 2018년 7월 11일 |
![[라즈베리파이] Soft IRQ 서비스는 누가 언제 처리하나?[1]](https://img.zoomtrend.com/2018/07/11/c0246238_5b2f2147d745f.png)
이제 Soft IRQ 기법의 하이라이트인 Soft IRQ 서비스를 처리하는 흐름을 살펴볼 차례입니다. Soft IRQ 서비스는 언제 처리할까요? 아래 Soft IRQ 전체 흐름도와 같이 인터럽트 핸들러를 처리하는 인터럽트 서비스 루틴이 끝나는 시점에 Soft IRQ 서비스 처리를 시작합니다. 그래서 Soft IRQ 서비스 처리를 시작하는 코드를 점검하려면 인터럽트 서비스 루틴이 끝나는 코드부터 확인해야 합니다. 이번 절에서는 Soft IRQ 전체 흐름도에서 볼드체로 된 부분을 점검할 예정이니 눈여겨보세요. 인터럽트 서비스 루틴이 끝나는 코드가 __handle_domain_irq 함수에서 실행하니 우선 이 함수부터 분석해야 합니다. 같이 볼 코드는 다음과 같습니다. 1 int __handle_domai