Laden...

Zugriff auf die CPU

Erstellt von Honk vor 16 Jahren Letzter Beitrag vor 16 Jahren 6.429 Views
H
Honk Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren
Zugriff auf die CPU

Hallo

mal eine ganz allgemeine Frage: Kann man mit C#-Programmen direkt auf die CPU zugreifen? Kann man die Datenin- und Outputs der CPU anzapfen? Auf welcher Ebene geschieht dies?

S
8.746 Beiträge seit 2005
vor 16 Jahren

Ich schlage vor, du guckst mal bei Wikipedia wie ein Computer so ungefähr funktioniert. Da steht dann was von Maschinensprache, Interrupts und all dem Kram. Wenn du das alles gelesen hast, dann wird dir klar, dass deine Frage soweit ab vom Schuss ist, dass man eigentlich nur mir Nein antworten kann.

Aber vielleicht so viel: Um einem Prozessor bei der Arbeit zuzuschauen braucht man ein Oszilloskop.

M
32 Beiträge seit 2006
vor 16 Jahren

Soweit ich weiss wäre das Assembler programmierung. Glaube nasm (oder ähnlich) heisst ein compiler dafür. Datein werden zwar von der Cpu verarbeitet aber du kannst dort nicht mit lesen was andere Programme machen (wie Dateien auf die Festplatte schreiben o.ä), es bekommt jedes Programm nur kleine zeitscheiben zugeteilt in welchen es die Cpu nutzen kann.

T
36 Beiträge seit 2007
vor 16 Jahren

Erklär doch einfach mal deine Idee, die hinter der Frage steckt, vielleicht kann dir ja dann jemand weiterhelfen.

edit: Welchen Nutzen willst davon haben?

H
Honk Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

Von den Zeitscheiben habe ich schon gelesen. Den Programmen wird Rechenzeit zugeteilt.

Also worum es geht... ich weis das so etwas schon viele vor mir gemacht haben. Bzw. vor uns. Wir wollen ein paar "alte" PC's miteinander vernetzen und daraus einen einzigen Arbeitsplatz machen. Und zwar einen, der die Rechenleistung aller angeschlossenen PC's nutzt.

Von solchen selbst gebastelten "Supercomputern" hat man ja oft gelesen... denke daher das man auf den einzelnen PC's ein Tool installieren muss, was die Rechenleistung entsprechend nutzt und weitergibt. Das versuche ich heraus zu finden...

1.373 Beiträge seit 2004
vor 16 Jahren

Hallo,

Rechenleistung ist keine Ressource wie eine Datei, die man über ein Netzwerk verschicken kann. Entsprechend kann man kaum die Rechenleistung anzapfen und "weitergeben".

Bei einer verteilten Aufgabe berechnet jeder Computer ein Teilproblem des Gesamtproblems ("Teile und herrsch"), die Ergebnisse der Teilprobleme werden dann zusammengefügt und ergeben dann ggf. das Ergebnis des Gesamtproblems. Nehmen wir als sehr einfaches Beispiel eine lineare Suche in einer Liste. Wenn man die Liste in zwei Hälften teilt und je einen Prozessor mit der Suche in einer der Hälften beauftragt kann das potenziell schneller sein. Ein solches Szenario lässt sich recht leicht auch in C# programmieren, ohne irgendwelchen "direkten" Zugriff auf die CPU.

Bedenke nur:

  • Nicht jedes Problem ist teilbar
  • Das (Ver-)Teilen des Problems bringt ggf einen Overhead mit, der die Mehrleistung wieder zunichte macht (z.B. Transfer über das Netzwek

Grüße,
Andre

H
Honk Themenstarter:in
6 Beiträge seit 2007
vor 16 Jahren

wie werden denn normalerweise handelsübliche PC's so miteinander vernetzt, das sich deren Rechenleistungen addieren?

Ich kenne z.B. ein CAD-Programm welches über ein Netzwerk mit einer gleichen Installation auf einem anderen PC zusammen arbeiten kann, um schneller zu rendern.

Folglich muss es ja irgendwie machbar sein bzw. Sinn ergeben.

1.373 Beiträge seit 2004
vor 16 Jahren

Ja sicher ist das machbar. Aber es gibt keine Universallösung. Es ist nicht so, als wenn man einen "Verteilte-Leistung"-Treiber installiert und dann alles auf magische Weise über das Netzwerk verteilt wird.

Nehmen wir dein CAD-Programm: das Problem lässt sich recht gut aufteilen: Computer A berechnet die obere Hälfte des Bildes, Computer B die untere. Dazu werden einmalig die Geometrie-Daten der zu rendernden Objekte an die beiden Computer geschickt, jeder rendert seine Hälfte und schickt das Bild einmalig zurück.

Grüße,
Andre

M
1.439 Beiträge seit 2005
vor 16 Jahren
F
10.010 Beiträge seit 2004
vor 16 Jahren

Vielleicht hilft auch nur der richtige begriff für soetwas, dann kann Honk vernünftig suchen.

Diese Vernetzten Computer werden meist als GRID bezeichnet ( hat nichts mit DataGrid zu tun ).

Bei sf.net und auch bei codeplex gibt es hierzu auch für .NET biblioteken.

C
1.214 Beiträge seit 2006
vor 16 Jahren

LOL

Das war der witzigste Thread seit langem. Sorry, will natürlich keinen beleidigen, finds aber echt witzig 🙂