Heim > häufiges Problem > Hauptteil

Hochfrequenztestpunkte für Betriebssysteminterviews

Freigeben: 2023-07-31 16:23:07
nach vorne
1262 Leute haben es durchsucht
Hochfrequenztestpunkte für Betriebssysteminterviews

1. Der Unterschied zwischen Prozess und Thread

  • Ein Prozess ist die kleinste Einheit der Ressourcenzuweisung, und ein Thread ist die Grundeinheit der CPU-Planung.
  • Der Prozess verfügt über einen unabhängigen Adressraum, und der Thread verfügt nicht über einen unabhängigen Adressraum, sondern über einen unabhängigen Stapel und lokale Variablen.
  • Bei Multiprozessen und Multithreads ist Multiprozess robuster als Multithread. Da der Prozess über einen unabhängigen Adressraum verfügt, hat ein abnormales Ende eines Prozesses keine Auswirkungen auf andere Threads. Wenn ein Thread abnormal endet, kann dies Auswirkungen auf andere Threads haben.
  • Die Kosten für die Erstellung eines Prozesses sind höher als die Kosten für die Erstellung eines Threads; die Kosten für den Prozesskontextwechsel sind höher als die Kosten für den Threadkontextwechsel.

2. Welche Methoden gibt es für die Kommunikation zwischen Prozessen?

  • Pipeline: (1) Unbenannte Pipe: Wird für die Kommunikation zwischen Prozessen mit Affinität verwendet. (2) Berühmte Pipes: Es durchbricht die Grenzen romantischer Beziehungen und ermöglicht die Kommunikation zweier unabhängiger Prozesse über Pipes in Form von Byteströmen.
  • Nachrichtenwarteschlange: Daten werden in Blöcken übertragen, aber das Kopieren von Daten vom Benutzerbereich in den Kernelbereich ist teuer.Geteilter Speicher Kommunikation
    : Umsetzung Zwei Computerräume Kommunikation.
  • 3. Algorithmus: Priorisieren Sie den Prozess mit der kürzesten Laufzeit. Planungsalgorithmus mit hoher Antwortverhältnispriorität run
  • Zeitscheibe Round-Robin-Planungsalgorithmus
  • ; Die Zeit, die jeder Prozess ausführen kann, ist gleich, und die Prozesse werden der Reihe nach entsprechend der Zeitscheibe ausgeführt
  • Planungsalgorithmus mit der höchsten Priorität
  • ; mit der höchsten Priorität
  • Mehrstufiger Feedback-Warteschlangenplanungsalgorithmus
  • ; Richten Sie eine mehrstufige Warteschlange ein, mit der Warteschlangenpriorität von hoch nach niedrig und der Zeitscheibe von klein nach groß

4. Was ist ein verwaister Prozess? (1) Der übergeordnete Prozess endet vor dem untergeordneten Prozess. Zu diesem Zeitpunkt wird der untergeordnete Prozess zu einem verwaisten Prozess.

    (2) Linux-Systemvorschriften: Alle verwaisten Prozesse werden zu untergeordneten Prozessen eines speziellen Prozesses (Prozess 1, der der Init-Prozess ist).

    5. Was sind die Multi-Thread-Synchronisationsmechanismen?

    Stapelbereich

    : Speichert lokale Variablen, Funktionsparameterwerte usw., dieser Bereich wird vom Betriebssystem gesteuert
    • Dynamischer Bibliotheks-/Shared-Memory-Mapping-Bereich
    • : Die dynamische Bibliothek, von der das ausführbare Programm abhängt in diesem Bereich geladen; der von mmap zugeordnete gemeinsame Speicher befindet sich ebenfalls in diesem Bereich
      lesbarer und beschreibbarer Datenbereich
    • :

    (1).bss section: Speichert nicht initialisierte globale Variablen und statische Variablen, die auf 0 initialisiert sind. .bss段:存储未初始化的、初始化为0的全局变量和静态变量。

    (2).data

    (2).data section: Speichern Sie globale Variablen, statische Variablen und konstante Konstanten, die nicht auf 0 initialisiert sind.
    • Schreibgeschützter Datenbereich
      : Speichern Sie Binärcode, einige durch Konstanten geänderte Variablen, Zeichenfolgenkonstanten usw.

    7. Speicherfragmentierung

    • So erzeugen Sie Speicherfragmentierung

    Programmierer verwenden malloc im Programm, um dynamisch Speicher aus dem Heap-Speicher des virtuellen Speichers zu beantragen, und verwenden free, um den Speicher freizugeben. Wenn das Programm eine große Anzahl von malloc/freien Vorgängen hat und über einen längeren Zeitraum ausgeführt wird, ist der Heap-Speicherplatz des virtuellen Speichers anfällig für Speicherfragmentierung, kann aber die Zuweisungsanforderung von malloc nicht erfüllen. Die Speicherfragmentierung wird in externe Fragmentierung und interne Fragmentierung unterteilt. Die folgende Abbildung beschreibt die Speicherzuweisung eines Teils des Heap-Speichers. Der Heap-Speicher ist in viele Zuweisungsblöcke in Einheiten von 4 Bytes unterteilt. Die weißen Blöcke stellen den freien Speicher dar, und die hellblauen und dunkelblauen Blöcke stellen den zugewiesenen Speicher dar. Gehen Sie davon aus, dass die kleinste Einheit der Speicherzuweisung ein Zuweisungsblock (4 Bytes) ist.
    1. Externe Fragmentierung: Da im Heap-Bereich kein freier Speicher (weißer Block) mit 4 aufeinanderfolgenden Zuordnungsblockgrößen vorhanden ist, gibt es viele diskrete freie Speicher, die kleiner als 4 Zuordnungsblockgrößen sind. Wenn also malloc(16) für 16 Bytes gilt, schlägt die Zuweisung fehl. Der Grund dafür ist, dass für 4 aufeinanderfolgende Zuweisungsblöcke kein freier Speicher vorhanden ist, aber für weniger als 4 Zuweisungsblöcke freier Speicher vorhanden ist
    2. interne Fragmentierung: Da die kleinste Einheit des zugewiesenen Speichers ein Zuordnungsblock (4 Bytes) ist, werden dem Heap-Speicher bei Anwendung von malloc(5) für 5 Bytes zwei freie Blöcke mit insgesamt 8 Bytes zugewiesen, jedoch nur dem Programm benötigt 5 Bytes, die restlichen 3 Bytes (dunkelblau) werden nicht genutzt, diese 3 Bytes Speicher nennt man interne Fragmentierung
    Hochfrequenztestpunkte für Betriebssysteminterviews

    8. Was ist der Unterschied zwischen Heap und Stack?

    • Verschiedene Zuordnungsmethoden
    Stack: Automatisch vom System zugewiesen

    Heap: Manuell vom Programmierer angewendet

    • Die Anwendungsgröße ist unterschiedlich
    Stack: Die Speichergröße Der Stapelbereich ist fest. Solange der angeforderte Speicher kleiner ist als der verbleibende Speicher im Stapelbereich, kann die Zuweisung erfolgreich sein, andernfalls läuft der Stapel über.

    Heap: Die Speichergröße des Heap-Bereichs wird durch den virtuellen Speicher des Computers bestimmt,

    9. Der Unterschied zwischen Mutex-Sperren und Semaphoren

    (1) Semaphoren werden für die Thread-Synchronisation und Mutex-Sperren für den gegenseitigen Thread-Ausschluss verwendet.

    (2) Das Semaphor kann eine nicht negative Ganzzahl sein, die die Multithread-Synchronisation mehrerer ähnlicher Ressourcen realisieren kann; der Mutex kann nur 0/1 sein, was nur für den gegenseitigen ausschließlichen Zugriff auf eine Ressource verwendet werden kann.

    (3) Das Semaphor kann von einem Thread freigegeben und von einem anderen Thread erhalten werden. Das Sperren und Entsperren des Mutex muss jeweils von demselben Thread verwendet werden, und mehrere Threads müssen bei Verwendung mehrerer Mutexe auf die einheitliche Reihenfolge achten. Andernfalls kann es zu einem Deadlock kommen.

    10. Der Unterschied zwischen Synchronisation und Asynchronisation

    • Synchronisation: A ruft B auf und muss warten, bis B nach Abschluss der Verarbeitung zurückkehrt, bevor A mit der Ausführung fortfahren kann : A ruft B an, Sie müssen nicht warten, bis B die Verarbeitung abgeschlossen hat. A kann mit der Ausführung fortfahren. Nachdem B die Verarbeitung abgeschlossen hat, benachrichtigen Sie A per Rückruf usw Was ist Deadlock? Was verursacht einen Deadlock?
    • (1) Deadlock bezieht sich auf einen Deadlock (aufeinander warten), der dadurch verursacht wird, dass mehrere Prozesse um Ressourcen konkurrieren. Ohne äußere Kraft können diese Prozesse nicht vorankommen.
    • (2) Grund: ①Unzureichende Systemressourcen. ② Unsachgemäße Ressourcenzuweisung. ③Die Reihenfolge des Prozessfortschritts ist unangemessen.

      Was sind die vier notwendigen Bedingungen für einen Deadlock?

      (1)Bedingung zum gegenseitigen Ausschluss: Eine Ressource kann jeweils nur von einem Prozess verwendet werden, und andere Prozesse können nur warten.

      (2)Anforderungs- und Haltebedingungen: Der Prozess hat mindestens eine Ressource erhalten, hat aber eine neue Ressourcenanforderung gestellt und die Ressource ist bereits von anderen Prozessen belegt Die erhaltene Ressource ist immer noch „Halten“.

      (3)Unentbehrlicher Zustand: Die von einem Prozess erhaltenen Ressourcen können nicht von anderen Prozessen entzogen werden und können nur von ihm selbst freigegeben werden.

      (4) Zyklische Wartebedingung: Mehrere Prozesse bilden eine Beziehung des zyklischen Wartens auf Ressourcen von Ende zu Ende.

      Hinweis: Die oben genannten vier Bedingungen sind unabdingbar.

      Wie gehe ich mit Deadlocks um?

      (1) Deadlock verhindern: Durch das Festlegen einiger Einschränkungen werden die notwendigen Bedingungen für einen Deadlock zerstört.

      (2) Deadlock vermeiden: Verwenden Sie während des Ressourcenzuweisungsprozesses eine Methode, um zu verhindern, dass das System in einen unsicheren Zustand eintritt, und vermeiden Sie so einen Deadlock.

      (3) Deadlock erkennen und entfernen: Lassen Sie das Auftreten eines Deadlocks zu, ergreifen Sie jedoch nach bestandener Systemerkennung einige Maßnahmen, um den Deadlock zu beseitigen.

      Wie verhindert man einen Deadlock?

      (1)Fehlerhafte „Anforderungs- und Haltebedingungen“:

      ①Statische Zuweisung, das heißt, jeder Prozess beansprucht alle Ressourcen, die er benötigt, wenn er mit der Ausführung beginnt:

      ②Dynamische Zuteilung, das heißt, jeder Prozess belegt keine Systemressourcen, wenn er die Ressourcen beantragt, die er benötigt.

      (2)Zerstören Sie den „unveräußerlichen Zustand“: Während der Blockierungs- und Wartezeit eines Prozesses werden die von ihm belegten Ressourcen implizit freigegeben und dann von anderen Prozessen verwendet, und die blockierten und wartenden Ressourcen können erst neu gestartet werden, nachdem alle erforderlichen Ressourcen erhalten wurden Ressourcen.

      (3)Zerstören Sie die „zyklische Wartebedingung“: Verwenden Sie die geordnete Zuweisung von Ressourcen und nummerieren Sie alle Ressourcen mit einer größeren Anzahl. Ein Prozess kann nur dann eine größere Anzahl erhalten, wenn er eine Ressource mit einer kleineren Anzahl erhält Nummer. Nummerierte Ressourcen

    Das obige ist der detaillierte Inhalt vonHochfrequenztestpunkte für Betriebssysteminterviews. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:嵌入式Linux充电站
    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
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage