Was ist Paging in der Speicherverwaltung?

Ich habe gerade Operating System Principles by Silberschatz et al gelesen, als ich auf Paging in der Speicherverwaltung stieß.Ich bin etwas verwirrt darüber.
Es besagt, dass Physischer Speicher (ich nehme an, es ist RAM) in Frames und logischer Speicher unterteilt ist in Seiten. CPU generiert logische Adressen mit Seitenzahl und einem Offset. Diese Seitenzahl wird verwendet, um die Rahmennummer aus einer - Seitentabelle abzurufen, die die Basis angibt Adresse
die physikalische Adresse wird also als Basis+Offset berechnet.
Meine Frage ist:

  • wird die Seitentabelle für jeden Prozess gepflegt?
  • Ich denke logisch, dass die Antwort yes da jeder Prozess seine eigenen Seiten Frames zuordnen muss. Ich kann falsch liegen. Bitte klären Sie.

    Auch:

  • Paging und Segmentierung (wobei "Löcher" im Speicher erstellt werden) sind zwei völlig unterschiedliche Techniken, die nicht in Kombination verwendet werden. Richtig?
  • Author: sawdust, 2012-10-10

    2 answers

    Segmentierung ergibt lineare Adressen, Paging ergibt physikalische Adressen

    In Bezug auf logische und physische Adressen von Bovet & Cesati (den Linux-Kernel verstehen) habe ich Folgendes:

    wie logische Adressen physisch zugeordnet werden

    Wie Sie sehen, werden Paging und Segmentierung von separaten Einheiten der Hardware ausgeführt. Obwohl sie gleichzeitig stattfinden können, kann das Betriebssystem die Segmentierungseinheit deaktivieren (Adressen werden also effektiv nicht als logisch, sondern linear behandelt originalen).

    Allgemeines

    Du kennst dieses Zeug vielleicht schon, aber ich habe es hier sowieso der Vollständigkeit halber.

    Seiten belegen Frames: Swapping

    Was Silberschatz Kapitel 8,f betrifft, beziehen sich und auf das Layout des physischen Speichers. Das Betriebssystem teilt den Arbeitsspeicher in Bereiche gleicher und praktischer Größe (z. B. 4K). Seiten sind Daten in Rahmengröße, die grundlegende Einheit des Seitenaustausches.

    Es können mehr Seiten als verfügbare Rahmen. Einige Seiten belegen Frames, einige Seiten werden auf der Festplatte ausgetauscht.

    Wenn eine Seite von der Festplatte ausgetauscht wird, wird sie mit einem bestimmten Frame im Speicher ausgerichtet (je nachdem, was der Seitenersatzalgorithmus für richtig hielt).

    Betriebssysteme und die Hardware kooperieren

    Wie bei vielen Betriebssystemzielen funktioniert die Speicherverwaltung immer im Einklang mit der Hardware: Sowohl das Betriebssystem als auch die Hardware arbeiten zusammen, um die Arbeit zu erledigen. Wie sie es in einem realistischen Szenario tun, hängt ab on

    1. die Menge der Speicherverwaltungsgrundelemente, die die Hardware bereitstellt (Paging, Segmentierung und was zum Teufel gibt es), und
    2. welche Teilmenge davon das Betriebssystem wirklich für die jeweilige Architektur und Situation verwendet (Linux@zArchitecture unterscheidet sich von Linux@Intel unterscheidet sich von Windows@Intel unterscheidet sich von Window@Intel@Boot-up)

    Beispielsweise bieten nur wenige Architekturen eine Segmentierung, und die obige Abbildung gilt für x86. Linux portabilität Gründe, nutzt es nicht sehr viel. Wenn ich mich richtig an Tanenbaum erinnere, war OS / 2 das einzige Betriebssystem, das Intels Segmentierung in vollem Umfang ausnutzte.

    Bisher diese Antwort.

    Je nachdem, warum Sie dies wissen müssen, kann Ihnen der folgende Ansatz helfen (er hat mir geholfen).

    Ich schlage vor, dass Sie sich zuerst mit der Hardware und den einzelnen Grundelementen vertraut machen. Wenn Silberschatz in diesem Punkt vage ist, versuchen Sie Tanenbaum (Modern Operating Systeme) oder Hennessy&Patterson (Computer Architecture Ein Quantitativer Ansatz). Wenn Ihre Neugier bis dahin nicht befriedigt ist, sehen Sie, wie ein bestimmtes Betriebssystem es in verschiedenen Situationen auf einer bestimmten Plattform verwendet.

     0
    Author: wnrph,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
    2012-10-11 08:09:01

    Wird die Seitentabelle für jeden Prozess gepflegt?

    Wenn das System für jeden Prozess einen sicheren virtuellen Adressraum bereitstellen muss, dann ja.

    Paging und Segmentierung (wobei "Löcher" im Speicher erstellt werden) sind zwei völlig unterschiedliche Techniken, die nicht in Kombination verwendet werden. Richtig?

    Nein, es gibt ein virtuelles Speicherschema namens Paged Segmentation. (Ich erinnere mich an dieses Konzept, das von meinen Klassenkameraden verärgert wurde, als es von der prof. Wenn Silberschatz et al. nicht erwähnt hat, dann lehrbuch ist unvollständig.) Das ursprüngliche Ziel von Paged Virtual Memory war es, einen großen Adressraum für die Ausführung eines großen Programms auf einem Computer mit begrenztem RAM bereitzustellen. In einem einfachen virtuellen Paged-Speicher mit Multiprocessing würde es keine Einschränkung geben, wenn zwei Prozesse eine Seite gemeinsam nutzen. Ein segmentierter virtueller Speicher ist jedoch für die Mehrverarbeitung vorgesehen und würde jeden Prozess in seine eigenen Segmente isolieren.

    Während es kann das typische virtuelle Speicherschema, das in einem sicheren Betriebssystem verwendet wird, scheint redundant zu sein und verwendet sowohl Seiten als auch Segmente, wobei die Segmente die Binärbilder der Prozesse sind. Der typische HW unterstützt wahrscheinlich nur Seiten mit fester Größe. Die Segmentierung ist im Betriebssystem implementiert. Das Konzept der Segmente erleichtert die Verwaltung mehrerer Prozesse im Speicher. Das Konzept der Seiten ermöglicht einen minimalen Speicherbedarf für jeden Prozess. Eine gemeinsam genutzte Laufzeitbibliothek wäre ein Sonderfall eines schreibgeschützten, execute-only-Segment, das für Prozesse gemeinsam genutzt werden konnte.

    Beachten Sie, dass sich "Segment" in virtuellen Speicherschemata normalerweise auf einen Speicherblock beziehen, der logisch zusammenhängend ist und eine beliebige Länge hat. Diese Art von " Segment "sollte nicht mit dem Intel 8086/88 (auch bekannt als x86)" Segment "verwechselt werden, das an einer 16-Byte-Adressgrenze (dh einem" Absatz") beginnt und auf eine Größe von 64 KB beschränkt ist. X86-Segmente sind eine Variation des Speicherbankings anstelle des virtuellen Speichers.

    Speicherbankschemata sind für Systeme gedacht, die eine kleine Adressgröße (z. B. 16 Bit), aber einen größeren physischen Speicherplatz (z. B. bis zu 1 MB adressierbaren Speicher) haben. Virtueller Speicher ist (oder war dafür vorgesehen) für die entgegengesetzte Situation: Die Adressgröße ist groß (z. B. mindestens 32 Bit) und der installierte Speicher ist kleiner als der Adressraum (heutzutage nicht immer wahr). Virtueller Speicher ist normalerweise für Benutzerprogramme vollständig unsichtbar, während der Intel 8086/88-Programmierer dies wissen muss small/medium/large memory Modelle und weit versus nahe Zeigern. BTW, die Vorlesung, wo ich zuerst erfuhr, virtuellen Speicher und der "ausgelagerten Segmentierung" aufgetreten vor Intel entwickelt, die i8086.

    Als unterstützender Text erwähnt Wikipedia auch, dass Segmentierung und Paging kombiniert werden können (in Hardware).

     0
    Author: sawdust,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
    2012-10-11 01:50:27