tstats_lookup_lock 스핀록을 초기화한 후 다음 단계는 타이머_register_cpu_notifier 함수의 호출입니다. 이 기능은 Linux 커널의 핫플러그 프로세서를 지원할 수 있는 CONFIG_HOTPLUG_CPU 커널 구성 옵션에 따라 달라집니다. 환경은 리눅스이며, 또한 나는 작업 C 예제와 어떤 링크를 주셔서 감사합니다 유의하시기 바랍니다. 이것은 리눅스 커널에서 타이머 및 시간 관리 관련 물건을 설명하는 장의 네 번째 부분이며, 이전 부분에서 우리는 리눅스 커널의 진드기 방송 프레임 워크와 NO_HZ 모드에 대해 알고 있었다. 타이머 – 우리는이 부분에서 리눅스 커널의 시간 관리 관련 물건에 다이빙을 계속하고 리눅스 커널의 또 다른 개념에 익숙해질 것입니다. 우리는 리눅스 커널에서 타이머를 볼 수 있습니다 전에, 우리는이 개념에 대한 몇 가지 이론을 배워야한다. 이 부분에서는 소프트웨어 타이머를 고려합니다. 타이머는 포크(2)의 자식에 의해 상속되지 않으며, 집행부(2) 동안 무장 해제및 삭제됩니다. 이 경우 지연된 함수는 아치/x86/커널/irq.c 소스 코드 파일에 정의된 do_IRQ 함수의 하드웨어 인터럽트 후에 호출되는 run_timer_softirq 함수입니다.

이 함수의 요점은 소프트웨어 동적 타이머를 처리하는 것입니다. Linux 커널은 시간이 많이 걸리는 작업이므로 하드웨어 타이머 인터럽트 처리 중에 이 작업을 수행하지 않습니다. 이 장에서는 Linux 커널 소스 코드의 핫플러그 관련 이벤트를 설명하지 는 않지만 이러한 측면에서 흥미로운 경우 커널/time/timer.c 소스 코드 파일에서 migrate_timers 함수의 구현을 찾을 수 있습니다. 그게 전부에요. 리눅스 커널은이 순간부터 동적 타이머를위한 인프라를 가지고 있습니다. 우리는이 흥미로운 주제로 다이빙하지 않습니다. 내가 이미 타이머를 쓴 것은 리눅스 커널과 도 한 부분에서 널리 사용되는 개념이며, 두 부분도 구현 방법과 작동 방식의 이러한 것들에 대한 이해를 다루지 않습니다. 그러나 이제 우리는이 개념에 대해 알고, 왜 리눅스 커널그것에 필요 하고 그 주위에 몇 가지 데이터 구조. 타이머는 .timer의 접미사가 있는 시스템 단위 파일입니다.

타이머는 다른 단위 구성 파일과 같으며 동일한 경로에서 로드되지만 타이머가 활성화되는 시기와 방법을 정의하는 [타이머] 섹션을 포함합니다. 타이머는 두 가지 유형 중 하나로 정의됩니다: Linux 커널은 향후 시점에 커널 함수를 호출할 수 있는 소프트웨어 타이머 개념을 제공합니다. 타이머는 리눅스 커널에서 널리 사용됩니다. 예를 들어 net/netfilter/ipset/ip_set_list_set.c 소스 코드 파일을 살펴봅니다. 이 소스 코드 파일은 IP 주소 그룹을 관리하기 위한 프레임워크의 구현을 제공합니다. 시스템 호출은 Linux 커널에서 구현됩니다. 프로그램이 시스템 호출을 하면 인수가 패키징되어 커널로 전달되며, 이 인수는 호출이 완료될 때까지 프로그램 실행을 대신합니다. 시스템 호출은 일반적인 함수 호출이 아니며 커널로 제어를 전송하려면 특별한 절차가 필요합니다. 그러나 GNU C 라이브러리(GNU/Linux 시스템과 함께 제공되는 표준 C 라이브러리의 구현)는 Linux 시스템 호출을 함수로 래핑하여 쉽게 호출할 수 있습니다.