/proc/kcore?

3 Antworten

Heißt das, dass in KCore der gesamte (genutzte) RAM drin steht?

Kann man so sagen, ja.

Sind dann 7,1 GB in KCore hinterlegt?

Nein, dann sind 8 GB + 4 zusätzliche Bytes und ggf. dem Swap-Speicher drin. Wenn du mit ls die Grösse versuchst herauszufinden, wirst du zwar auf ein anderes Ergebnis kommen, nämlich rund 127 TB, das ist die derzeit maximale Anzahl RAM, die möglich wäre.

Wenn ja, was ist mit den anderen Dateien in /Proc? Die sind ja dann quasi nicht in KCore

Jein. Irgendwie halt schon. /proc ist ein virtuelles Dateisystem, vielleicht hast du ja schonmal davon gehört, dass auf Linux alles eine Datei ist. Es existiert also nicht auf einem Datenträger, sondern eben nur virtuell im Arbeitsspeicher. Da KCore den Arbeitsspeicher widerspiegelt, wo /proc eben enthalten ist, wirst du diese Daten auch irgendwo da drin finden. /proc ist halt einfach eine logische virtuelle Ordnung des Arbeitsspeichers und der Prozesse.

/sys ist übrigens ebenfalls ein solches virtuelles Dateisystem.

Woher ich das weiß:eigene Erfahrung – Nutze Linux täglich, sowohl auf Server als auch Desktop
Was ist Kcore-Datei in proc?
2.13. /proc/kcore. Diese Datei repräsentiert den physischen Speicher des Systems und wird im Core-Dateiformat gespeichert. Im Gegensatz zu den meisten /proc/-Dateien zeigt kcore eine Größe an. Dieser Wert wird in Bytes angegeben und entspricht der Größe des verwendeten physikalischen Speichers (RAM) plus 4 KB.
.
.
.
Warum ist proc so groß?
Wie alle anderen Dateien unterhalb von /proc ist die kcore-Datei nur eine virtuelle Datei. Es enthält den RAM, den der Kernel zuweisen kann. … Diese Datei belegt keinen tatsächlichen Speicherplatz und existiert nur virtuell. Hinweis: Auf 64-Bit-Systemen beträgt die Größe von /proc/kcore sogar 128 TB, da dies die absolute Grenze dessen ist, was 64-Bit Systeme können zuordnen.
Source: https://frameboxxindore.com/windows/your-question-what-is-proc-kcore-in-linux.html

Manfred958 
Beitragsersteller
 09.05.2022, 19:14

Ich versteh das irgendwie so:

Alles in Proc ist im RAM. Alles im Ram müsste ja quasi in KCore drin sein.

0
TechPech1984  09.05.2022, 19:17
@Manfred958

virtuelle datei .... ist der springende punkt . so wie andere dateien oder verzeichnise halt irgendwelche endgeräte, terminals etc darstellen . sie wird zum ansprechen des speichers benutzt , ist aber nicht auf deiner festplatte. sondern ein direkt mapping zu deinem RAM .

will see that it is not real (0 bytes), but a virtual file that maps directly to your physical memeory
Source: https://frameboxxindore.com/windows/your-question-what-is-proc-kcore-in-linux.html
0
Manfred958 
Beitragsersteller
 09.05.2022, 19:49
@TechPech1984

Es ist also eine Virtuelle Datei im RAM, die einfach Zugriff auf den gesamten genutzen RAM darstellt. Die Pseudo Datei ist demnach so groß wie der genutzte RAM (+ Swap)

0
TechPech1984  09.05.2022, 19:52
@Manfred958

sorry aber das steht da doch alles beschrieben und hat nix mit einer SWAP datei zu tun . die tut nämlich nur RAM auslagern in pages .

0

"was ist mit den anderen Dateien in /Proc?" - doch, die sind ebenfalls in /proc/kcore. Da diese anderen Pseudo-Dateien (im Sinne von "sehen so aus als wären es Dateien") ebenfalls im RAM dargestellt werden, sind sie damit auch automatisch in der Darstellung vom gesamten Speicher. Zusätzlichen Platz verwendet kcore deshalb nicht, weil der gesamte Platz ja schon besteht - nämlich als RAM, und kcore lediglich eine Art Zugang dahin darstellt, und keine Kopie davon ist.

Woher ich das weiß:Berufserfahrung – LPI zertifiziert

Manfred958 
Beitragsersteller
 09.05.2022, 19:23
doch, die sind ebenfalls in /proc/kcore.

Also kcore quasi der Arbeitsspeicher, der genutzt wird? Wird 7,1 GB RAM verwendet, sind auch 7,1 GB in kcore?

Die anderen Dateien, die nicht in kcore sind, sind dann nur als "Darstellung" drin?

0
Bushmills145  09.05.2022, 19:28
@Manfred958

vielleicht ist der term "drin" bissel falsch gewählt, und es wär besser zu sagen "kcore *ist* der virtuelle Speicher. (also RAM plus swap), als pseudo-Datei dargestellt, so dass man mittels Lesen dieser pseudo-Datei an jeden beliebigen Speicherort vom virtuellen Speicher kommen kann, ohne sich drum kümmern zu müssen, was der memory manager zwischen Betriebssystem und Anwenderprogram aus den Adressen macht oder wie swap space dargestellt wird (eigene Partitionen auf eventuell anderen Laufwerken, swap Dateien oder was auch immer)

0
Manfred958 
Beitragsersteller
 09.05.2022, 19:48
@Bushmills145

Es ist also eine Virtuelle Datei im RAM, die einfach Zugriff auf den gesamten genutzen RAM darstellt. Die Pseudo Datei ist demnach so groß wie der genutzte RAM (+ Swap)

0
Bushmills145  09.05.2022, 19:53
@Manfred958

Nee, nicht nur. kcore ist meist noch viel größer, da auch der nicht zugewiesene (und nicht mal physisch bestehende) addressierbare Speicherbereich darin dargestellt wird. Damit wird kcore ein Abbild von was an Adressen belegbar sein könnte, auch wenn tatsächlich lange nicht alle Adressen davon in Verwendung sind (weil der Speicher der sich insgesamt verwenden lässt ja auf RAM plus swap beschränkt ist)

0
Bushmills145  09.05.2022, 20:09
@Manfred958

Vielleicht lässt es sich vom Konzept mit dem device file einer Festplatte vergleichen: sagen wir /dev/sda welches ja auch lediglich für die Festplatte steht (aber die wirkliche Platte ist tatsächlich eine Metallbox mit Käfern drauf und eventuell drin). Dieser device file belegt nur sehr wenig Platz im Speicher, obwohl er für sehr viel Platz auf der Platte steht. Er stellt die Platte auch nur dar, ähnlich wie /proc/kcore auch nur sehr wenig Platz selbst einnimmt, aber eine immense Menge Speicherplatz repräsentiert. Und ähnlich wie mittels Zugriff auf /dev/sda auf den Inhalt der kompletten Platte zugegriffen werden kann, über Partitionsgrenzen und weitere Unterteilungen wie Partitionstabellen, boot sektoren etc hinaus, und damit auch "enthaltend" die Dateien aller Parititionen sowie den Teilen der Festplatte, welche mittels Dateisystem unter dem Betriebssystem nicht zugänglich sind, erlaubt /proc/kcore damit auch Zugriff auf Addressbereiche, welche als Folge von Allokation und Speicherzuweisungen noch überhaupt nicht in Benutzung sind (und wahrscheinlich auch nie benutzt werden - dafür ist der addressierbare virtuelle Adressbereich von modernen Prozessoren einfach zu groß)

0
Manfred958 
Beitragsersteller
 09.05.2022, 20:28
@Bushmills145

Also ist es eine Datei im RAM, die Zugriff auf alle Adressierbare Zellen im Ram hat.

Die Größe wird auf das Maximum 128 TB angezeigt, weil technisch mehr nicht möglich ist?

0
Bushmills145  09.05.2022, 20:38
@Manfred958

Wenn deine kcore als 128 TB groß angezeigt wird, bedeutet dass, dass deine CPU (virtuelle, logische) Adressen in diesem Umfang ansprechen kann. Sie wird aber nur auf einen kleinen Teil dieser Adressen tatsächlich bestehenden Speicherplatz "mappen" können, weil davon (meist) zuwenig da ist. Technisch ist mehr als dies (was 47 bit Adressen entspricht - also vermutlich 48 bit, mit sign-bit anderweitig verwendet) möglich. Wieviel die CPU adressieren kann, hängt wird allerdings durch deren Konstruktion und Design bestimmt.

1
Manfred958 
Beitragsersteller
 09.05.2022, 20:48
@Bushmills145

Danke dir auf jeden Fall. Ich habe zumindest einen Teil verstanden, aber für alles bin ich anscheinend nicht fit genug :)

0