Heim System-Tutorial LINUX Ein genauerer Blick auf Linux-Kernel-Timer: Interrupt-basierte asynchrone Mechanismen und Nicht-Prozess-Kontextprinzipien

Ein genauerer Blick auf Linux-Kernel-Timer: Interrupt-basierte asynchrone Mechanismen und Nicht-Prozess-Kontextprinzipien

Jul 18, 2024 am 11:13 AM

深入了解 Linux 内核定时器:基于中断的异步机制与非进程上下文原则

1. Kernel-Timer 1. Grundkonzepte

In bestimmten Szenarien müssen wir bestimmte Aktionen nach einer bestimmten Zeit ausführen und möchten keine CPU durch Warten verschwenden. Zu diesem Zeitpunkt ist der Timer ein sehr geeigneter Mechanismus. Ein Timer wird verwendet, um eine Funktion zu einem bestimmten Zeitpunkt in der Zukunft auszuführen, um eine bestimmte Aufgabe abzuschließen.

Kernel-Timer weisen den Kernel an, zu einem bestimmten Zeitpunkt eine bestimmte Funktion mit bestimmten Parametern aufzurufen. Der Timer läuft asynchron auf seinem Registranten. Wenn der Timer läuft, befindet sich die Aufgabe, die den Timer registriert hat, möglicherweise im Ruhezustand oder läuft auf anderen Prozessoren oder wurde sogar schon vor langer Zeit beendet.

Der Kernel-Timer in Linux wird basierend auf (Soft-)Interrupts Linux-Anwendungs-Timer implementiert, das heißt, er befindet sich im Interrupt-Kontext und nicht im Prozesskontext. Im Nicht-Prozess-Kontext sind einige Grundsätze zu befolgen:

Der Zugriff auf den Benutzerbereich ist nicht gestattet

Strom ist bedeutungslos und daher nicht verfügbar

Kann weder schlafen noch planen. Schedule oder eine Art wait_event können nicht aufgerufen werden, noch kann eine Funktion aufgerufen werden, die Schlaf verursachen könnte. Semaphore sind ebenfalls nicht verfügbar, da Semaphore zu einem Ruhezustand führen können.

应用定时器2_linux 应用定时器_应用定时器2安卓版下载

Der Kernel-Code kann feststellen, ob er sich derzeit im Interrupt-Kontext befindet, indem er die Funktion in_interrupt() aufruft. Solange er nicht 0 zurückgibt, bedeutet dies, dass er sich im Interrupt-Kontext befindet. Der Kernel kann durch Aufruf von in_atomic() ermitteln, ob die Planung derzeit zulässig ist. Zu den Situationen, in denen die Planung nicht zulässig ist, gehören: Sie befinden sich in einem Interrupt-Kontext und einem Kontext, der über eine Trägersperre verfügt.

Da der Timer asynchron ausgeführt wird, muss die Timer-Verarbeitungsfunktion auf den gegenseitigen Ausschlussschutz achten.

2.Vom Linux-Kernel unterstützte Timer

Der Linux-Kernel unterstützt zwei Arten von Timern:

Klassischer Timer: ein Timer, dessen Genauigkeit von der Häufigkeit der Unterbrechungen der Computeruhr abhängt. Die Timergenauigkeit ist mit einer Genauigkeit von 1000/HZms normalerweise relativ gering. Dieser Timer wird mit einer festen Frequenz generiert, also alle 1000/HZms. Wenn die Funktion „Dynamische Uhr“ nicht aktiviert ist, kann es beim Ablauf des Timers nicht zu echten Timing-Störungen kommen. Beispielsweise werden nur die folgenden Timer zum System hinzugefügt: 11-ms-, 52-ms- und 78-ms-Ablauftimer, und die Timer laufen genau ab Der Timer läuft nach einem Vielfachen von 4 ms (4, 8, 12 ...) ab, daher muss zum Zeitpunkt des Timerablaufs nicht unbedingt eine Zeitstörung vorliegen.

Timer mit hoher Bildrate: Die Präzision des klassischen Timers ist relativ gering. In einigen Situationen ist ein Timer mit höherer Präzision erforderlich, z. B. bei Multimedia-Anwendungen im chinesischen Linux-Betriebssystem. Daher wird dieser Timer-Typ in das System eingeführt. Dieser Timer kann grundsätzlich jederzeit auftreten.

应用定时器2_linux 应用定时器_应用定时器2安卓版下载

Hier braucht es auch zwei Ausnahmekonzepte:

Dynamische Uhr: Der periodische Taktgeber Linux-Anwendungstimer wird nur aktiviert, wenn eine Aufgabe tatsächlich ausgeführt werden muss, andernfalls ist die periodische Takttechnologie deaktiviert. Der Ansatz besteht darin, die periodische Uhr zu deaktivieren, wenn Sie die Ausführung im Leerlauf planen müssen; dann aktivieren Sie die periodische Uhr, bis der nächste Timer abläuft oder ein Interrupt auftritt. Eine einmalige Uhr ist eine Voraussetzung für die Realisierung einer dynamischen Uhr, da das Hauptmerkmal der dynamischen Uhr darin besteht, dass die Uhr je nach Bedarf gestoppt oder neu gestartet werden kann und eine reine periodische Uhr für diese Szenarien nicht geeignet ist.

Periodische Uhr: Eine Uhr, die die Uhrzeit periodisch bestimmt.

In Bezug auf die Anwendung haben Timer zwei Hauptverwendungszwecke:

Timeout: Zeigt eine Störung an, die nach einer bestimmten Zeitspanne auftritt. Tatsächlich wird bei Verwendung von Timeout in den meisten Fällen nicht damit gerechnet, dass das Timeout auftritt, und der Timer wird häufig vor dem Timeout abgebrochen. Darüber hinaus ist der Timeout-Vorfall oft kein genauer Vorfall, auch wenn er nicht abgebrochen wird. Beispielsweise drücken die verschiedenen im Netzwerk verwendeten Timeout-Timer häufig aus, dass dies der Fall sein kann, wenn vor diesem Zeitpunkt kein Vorfall vorliegt berücksichtigt werden ..., der Wert dieser Zeit ist oft ein Erfahrungswert oder ein berechneter Wert und stellt keinen genauen Zeitbedarf dar. In diesen Situationen reicht der klassische Timer aus.

Timer: Wird zum Implementieren des Timings verwendet. Wenn Daten zu einem bestimmten Zeitpunkt nicht an die Soundkarte gesendet werden, gelten in diesen Situationen strenge Anforderungen Mit der Zeit kommt es zu Klangverzerrungen. Zu diesem Zeitpunkt muss ein hochpräziser Timer verwendet werden.

应用定时器2安卓版下载_linux 应用定时器_应用定时器2

Linux kann durch Konfiguration dazu veranlasst werden, im folgenden Modus zu arbeiten:

Dynamischer Takt mit hoher Bildrate

Periodentakt mit hoher Bildrate

Dynamischer Takt mit niedriger Bitrate

Periodenuhr mit niedriger Coderate

3. Kernel-Timer mit niedriger Bitrate

linux 应用定时器_应用定时器2安卓版下载_应用定时器2

Der Low-Bitrate-Timer ist der gebräuchlichste Kernel-Timer. Der Kernel verwendet den Takt-Interrupt des Prozessors oder eine andere geeignete periodische Taktquelle als Zeitbasis des Timers. Taktunterbrechungen treten periodisch auf, HZ-mal pro Sekunde. Die diesem Interrupt entsprechende Timer-Verarbeitungsfunktion ist normalerweise timer_interrupt. Bei der Verarbeitung dieser Funktion wird sie schließlich an do_timer und update_process_timers angepasst. Unter anderem ist do_timer für systemweite und globale Aufgaben verantwortlich: Aktualisierung von Sekundenschnelle und Verarbeitung von Prozessstatistiken, und die letztere Funktion führt Prozessstatistiken durch, um TIMER_SOFTIRQ zu bilden, um dem Planer Zeitbewusstsein zu bieten.

Wenn der Timer abläuft, wird der Timer aus dem Aktivierungsarray entfernt, bevor die Timer-Verarbeitungsfunktion aufgerufen wird. Wenn Sie daher nach einer bestimmten Zeitspanne nach dieser Ausführung erneut ausführen möchten, müssen Sie den Timer erneut hinzufügen. Gerät. Im SMP-System wird die Timer-Funktion von der CPU ausgeführt, bei der sie registriert ist.

Die Implementierung des Kernel-Timers muss die folgenden Anforderungen und Annahmen erfüllen:

Die Timerverwaltung muss so einfach wie möglich sein.

Das Design muss eine gute Skalierbarkeit aufweisen, wenn der Aktivitätstimer stark reduziert ist

Die meisten Timer laufen innerhalb weniger Sekunden oder höchstens ein paar Minuten ab, und Timer mit langen Verzögerungen sind ziemlich selten.

Ein Timer sollte auf derselben CPU laufen, auf der er registriert wurde.

Die Implementierung des Kernel-Timers mit niedriger Bitrate ist sehr clever. Es basiert auf einer Datenstruktur pro CPU. Das Basisarray von timer_list enthält Zeiger, die auf diese Struktur zeigen. Wenn base NULL ist, wurde dieser Timer nicht zur Ausführung aufgerufen. Andernfalls gibt dieser Zeiger an, welche Datenstruktur (d. h. welche CPU) ihn ausführt.

Immer wenn der Kernel-Code einen Timer registriert (über add_timer oder mod_timer), wird die Operation letztendlich von internal_add_timer (in kernel/timer.c) ausgeführt, der den neuen Timer zur „Kaskadentabelle“ hinzufügt, die der aktuellen CPU „im Timer“ zugeordnet ist Einweg-Array.

So funktionieren kaskadierende Tabellen:

Wenn der Timer innerhalb der nächsten 0 bis 255 Augenblicke abläuft, wird er mithilfe von „expires“ zu einem der 256 Arrays hinzugefügt, die speziell für Kurzzeit-Timer vorgesehen sind (d. h., zu welchem ​​Array hinzugefügt wird, wird durch die Ablaufzeitbits bestimmt). Die unteren 8 Bits des ermittelten Bits bestimmen, zu welchem ​​Array

hinzugefügt werden soll

Wenn es in der Zukunft abläuft (aber vor 16384 Sekunden), wird es zu einem der 64 Arrays hinzugefügt. Diese 64 Arrays beziehen sich auf die 8-13 Bits des Ablaufs. Die 6 Bits bestimmen, welches Array verwendet wird .

Ähnliche Techniken werden auf die Ablaufbits 14–19, 20–25 und 26–31 angewendet.

Wenn der Timer zu einem späteren Zeitpunkt abläuft

Das obige ist der detaillierte Inhalt vonEin genauerer Blick auf Linux-Kernel-Timer: Interrupt-basierte asynchrone Mechanismen und Nicht-Prozess-Kontextprinzipien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1666
14
PHP-Tutorial
1273
29
C#-Tutorial
1253
24
Läuft das Internet unter Linux? Läuft das Internet unter Linux? Apr 14, 2025 am 12:03 AM

Das Internet stützt sich nicht auf ein einzelnes Betriebssystem, aber Linux spielt eine wichtige Rolle dabei. Linux wird häufig auf Servern und Netzwerkgeräten verwendet und ist für seine Stabilität, Sicherheit und Skalierbarkeit beliebt.

Was sind Linux -Operationen? Was sind Linux -Operationen? Apr 13, 2025 am 12:20 AM

Der Kern des Linux -Betriebssystems ist die Befehlszeilenschnittstelle, die verschiedene Operationen über die Befehlszeile ausführen kann. 1. Datei- und Verzeichnisoperationen verwenden LS, CD, MKDIR, RM und andere Befehle, um Dateien und Verzeichnisse zu verwalten. 2. Benutzer- und Berechtigungsverwaltung sorgt für die Systemsicherheit und die Ressourcenzuweisung über UserAdd, PASSWD, CHMOD und andere Befehle. 3. Process Management verwendet PS, Kill und andere Befehle, um Systemprozesse zu überwachen und zu steuern. 4. Netzwerkoperationen umfassen Ping, IFConfig, SSH und andere Befehle zum Konfigurieren und Verwalten von Netzwerkverbindungen. 5. Systemüberwachung und Wartung Verwenden Sie Befehle wie Top, DF, DU, um den Betriebsstatus und die Ressourcennutzung des Systems zu verstehen.

Was ist das Gehalt des Linux -Administrators? Was ist das Gehalt des Linux -Administrators? Apr 17, 2025 am 12:24 AM

Das durchschnittliche Jahresgehalt der Linux -Administratoren beträgt in den USA 75.000 bis 95.000 USD und 40.000 bis 60.000 € in Europa. Um das Gehalt zu erhöhen, können Sie: 1. kontinuierlich neue Technologien wie Cloud Computing und Containertechnologie lernen; 2. Projekterfahrung sammeln und Portfolio einrichten; 3. Geben Sie ein professionelles Netzwerk ein und erweitern Sie Ihr Netzwerk.

Was sind die Hauptaufgaben eines Linux -Systemadministrators? Was sind die Hauptaufgaben eines Linux -Systemadministrators? Apr 19, 2025 am 12:23 AM

Zu den Hauptaufgaben von Linux -Systemadministratoren gehören Systemüberwachung und Leistungsstimmen, Benutzerverwaltung, Softwarepaketverwaltung, Sicherheitsmanagement und Sicherungssicherung, Fehlerbehebung und Lösung, Leistungsoptimierung und Best Practices. 1. Verwenden Sie Top-, HTOP- und andere Tools, um die Systemleistung zu überwachen und sie einzustellen. 2. Verwalten Sie Benutzerkonten und Berechtigungen über UserAdd -Befehle und andere Befehle. 3. Verwenden Sie APT und YUM, um Softwarepakete zu verwalten, um Systemaktualisierungen und Sicherheit zu gewährleisten. 4. Konfigurieren Sie eine Firewall, überwachen Sie Protokolle und führen Sie die Datensicherung durch, um die Systemsicherheit zu gewährleisten. 5. Fehlerbehebung und Behebung durch Protokollanalyse und Werkzeuggebrauch. 6. Optimieren Sie die Kernelparameter und die Anwendungskonfiguration und befolgen Sie die Best Practices, um die Systemleistung und -stabilität zu verbessern.

Was ist der Hauptzweck von Linux? Was ist der Hauptzweck von Linux? Apr 16, 2025 am 12:19 AM

Zu den Hauptanwendungen von Linux gehören: 1. Server -Betriebssystem, 2. Eingebettes System, 3. Desktop -Betriebssystem, 4. Entwicklungs- und Testumgebung. Linux zeichnet sich in diesen Bereichen aus und bietet Stabilität, Sicherheits- und effiziente Entwicklungstools.

Was sind die Unterschiede in der Virtualisierungsunterstützung zwischen Linux und Windows? Was sind die Unterschiede in der Virtualisierungsunterstützung zwischen Linux und Windows? Apr 22, 2025 pm 06:09 PM

Die Hauptunterschiede zwischen Linux und Windows in der Virtualisierungsunterstützung sind: 1) Linux liefert KVM und Xen mit hervorragender Leistung und Flexibilität, die für Umgebungen mit hoher Anpassung geeignet sind. 2) Windows unterstützt die Virtualisierung über Hyper-V mit einer freundlichen Schnittstelle und ist eng in das Microsoft-Ökosystem integriert, das für Unternehmen geeignet ist, die auf Microsoft-Software angewiesen sind.

Ist es schwer, Linux zu lernen? Ist es schwer, Linux zu lernen? Apr 18, 2025 am 12:23 AM

Linux zu lernen ist nicht schwierig. 1.Linux ist ein Open -Source -Betriebssystem, das auf UNIX basiert und in Servern, eingebetteten Systemen und PCs häufig verwendet wird. 2. Das Verstehen von Dateisystemen und Berechtigungsverwaltung ist der Schlüssel. Das Dateisystem ist hierarchisch, und die Berechtigungen umfassen Lesen, Schreiben und Ausführung. 3.. Paketverwaltungssysteme wie APT und DNF machen das Softwaremanagement bequem. 4. Die Prozessverwaltung wird über PS- und Top -Befehle implementiert. 5. Beginnen Sie mit grundlegenden Befehlen wie Mkdir, CD, Touch und Nano und versuchen Sie dann erweiterte Verwendung wie Shell -Skripte und Textverarbeitung. 6. Häufige Fehler wie Erlaubnisprobleme können durch sudo und chmod gelöst werden. 7. Vorschläge zur Leistungsoptimierung umfassen die Verwendung von HTOP zur Überwachung von Ressourcen, die Reinigung unnötiger Dateien und die Verwendung von SY

Die Zukunft der Linux -Software: Wird Flatpak und Snap native Desktop -Apps ersetzen? Die Zukunft der Linux -Software: Wird Flatpak und Snap native Desktop -Apps ersetzen? Apr 25, 2025 am 09:10 AM

Seit Jahren stützte sich die Linux -Softwareverteilung auf native Formate wie DEB und RPM, die im Ökosystem jeder Verteilung tief verwurzelt sind. Flatpak und SNAP sind jedoch entstanden und versprachen einen universellen Ansatz für die Anwendungsverpackung. Dieser Artikelprüfung

See all articles