Verstehen Sie das Innenleben eines Computersystems: Wie arbeiten Speicher, E/A-Geräte, Busse und externer Speicher zusammen?

  • Der Speicher ist ein Speicherplatz, auf den der Prozessor direkt zugreifen kann. Um den Speicherzugriff zu beschleunigen, bieten Computersysteme in der Regel einen Cache, der in der Regel von der Hardware verwaltet wird.
  • E/A-Geräte bestehen aus E/A-Controllern und physischen Geräten, wobei der Prozessor die physischen Geräte über die E/A-Controller verwaltet. Die E/A-Controller bestehen hauptsächlich aus Steuer- und Statusregistern (CSRs) und Datenregistern. Der Prozessor liest CSRs, um den Gerätestatus zu erhalten, schreibt CSRs, um Geräteaktionen zu steuern, und liest und schreibt Datenregister, um Daten auszutauschen. Der Kernel abstrahiert E/A-Geräte normalerweise in einen Satz von Registern und gibt einem Register eine E/A-Adresse. Der Prozessor greift auf die E/A-Register über die E/A-Adresse zu.
  • Viele Geräteregister in modernen Computersystemen können in den physischen Adressraum abgebildet werden. An diesem Punkt hat jedes Geräteregister eine physische Speicheradresse. Diese Art von E/A wird als Memory-mapped E/A bezeichnet. Sie ist einfach zu verwenden, verbraucht aber physische Speicheradressen.
  • Der externe Speicher wird in der Regel als ein Array von Datenblöcken abstrahiert, die jeweils eine Seriennummer haben. Der Prozessor kann jeden beliebigen Datenblock im externen Speicher lesen oder schreiben, indem er die Seriennummer verwendet. Die Operationen auf dem externen Speicher werden in der Regel in Blöcken durchgeführt, weshalb er auch als Blockgerät bezeichnet wird. Dementsprechend werden andere E/A-Geräte als Zeichengeräte bezeichnet. Kurz gesagt: Blockgeräte lesen und schreiben Daten in Blöcken, wie Festplatten, Flash-Speicher usw., während Zeichengeräte Daten in Zeichen lesen und schreiben, wie Tastaturen, Mäuse, Drucker usw.
  • Busse sind für die Verbindung von Prozessoren, Speicher und E/A-Controllern zuständig. Häufig verwendete Busse sind ISA, PCI, PCI-E, AGP, ATA, SCSI und so weiter. Der Bus ist auch für die Erkennung und Aufzählung der angeschlossenen Geräte zuständig.