 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 18.06.2007, 20:37 Titel: |
|
|
Manuel hat Folgendes geschrieben: | Dafür mit einem "s" mehr |
Ich wollte es nicht gleich übertreiben  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 23.06.2007, 14:03 Titel: |
|
|
Manuel hat Folgendes geschrieben: | Mal schauen, ob ich das Ding in VirtualBox raufhaue und es da mal teste...  |
Ich Vermute, das die Virtuelle Maschine die CPU ganz real auslasten wird, weil das Gastsystem nicht meldet das es nix zu tun hat.
Echte Hardware wäre interresanter. _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.06.2007, 14:10 Titel: |
|
|
Michael Frey hat Folgendes geschrieben: | Manuel hat Folgendes geschrieben: | Mal schauen, ob ich das Ding in VirtualBox raufhaue und es da mal teste...  |
Ich Vermute, das die Virtuelle Maschine die CPU ganz real auslasten wird, weil das Gastsystem nicht meldet das es nix zu tun hat.
Echte Hardware wäre interresanter. |
Ich weiß nicht ob es schon gesagt wurde.
Aber
was wäre wenn Windows das Netzteil (geht ja bei ATX & Co) einfach ausschaltet? Oder mit einem BlueScreen sofort beendet?
Dann könnte/sollte da gar nichts schlimmes passieren.
Oder mal eine andere Frage:
Kann man die PID eines Prozesses verändern?
Wahrscheinlich nicht, aber wenn es ginge könnte man den Leerlaufprozess seine Rechte streitig machen, durch einen eigenen Thread/Prozess dem man die PID 0 zuweist.
Oder
Was passiert wenn man die TID (Thread-ID) auf 0 setzt?
Werden dadurch dem Thread vom Leerlaufprozess die Rechte an der HW streitig gemacht?
Viele Fragen... _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 23.06.2007, 14:35 Titel: |
|
|
Die PID wird vom Betriebssystem zugwiesen und kann i.d.R. nicht verändert werden. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.06.2007, 15:02 Titel: |
|
|
Mao hat Folgendes geschrieben: | Die PID wird vom Betriebssystem zugwiesen und kann i.d.R. nicht verändert werden. |
Ja ich habe mir schon gedacht, dass es dafür keine API-Funktion gibt.
Irgendwo legt Windows ja auch diese Daten ab. Da das ja alles rein temoräre Daten sind, wird das wohl irgendwo im RAM liegen. Wahrscheinlich im RAM-Bereich vom Kernel. Und wenn man das verändert ... ? _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 23.06.2007, 15:23 Titel: |
|
|
lol
Da passt Windows schon auf, da musst schon extremen Aufwand betreiben...
Musst dir ein richtiges Debuggingmodul baun um auf den RAM direkt zugreifen zu dürfen...
Deine normalen Progs laufen näml. abstrahiert in nem eignen Speicherbereich, haben da 4gb RAM (unter 32 Bit) mit dem sie tun und lassen können was sie wollen ohne dass was passiert... soweit ich weiß
Ich kann aber net erklärn wie das zusammen mit den WinAPI-Jumps arbeitet... |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 23.06.2007, 16:07 Titel: |
|
|
Hehe. Wie gesagt, bei Intel und sogar bei MS saßen keine Anfänger am Entwurf der Schutzmechanismen bzw. des Betriebssystems.
Es gibt in den x86 CPU's (und eigentlich auch in den meisten anderen Architekturen) eine MMU, die dafür sorgt, dass wenn sie richtig eingerichtet wurde, ein Programm nur auf seinen eigenen Speicherbereich zugreifen kann. (Im ProtectedMode, 32-Bit, sind das nunmal 4GB, auch wenn im Bestfall unter Windows nur 3GB benutzt werden können. Normal-Konfiguration "nur" 2GB pro Task.) Für diese Verwaltung gibt es verschiedene Privilegierungsstufen, Ringe. Ring 0, 1, 2 und 3. Ring 0 ist dabei der höchstprivilegierte, Ring 3, der, der am wenigsten darf. Alles was dazwischen angesiedelt ist, sind Abstufungen, die in Windows bzw. Linux imho nicht verwendet werden. Ring 0 ist also für den Kernel, für Teile vom Windows-Kernel selbst, sowie Treiber (kann Sicherheitsproblem sein). Ring 3 wird für normale Anwendungen benutzt.
Treiber laufen wie gesagt im Ring 0 und können so bei fehlerhafter Programmierung das System abstürzen lassen (sollte denk ich mal fast jeder schon mit Bekanntschaft gemacht haben).
B2t...versucht nun ein Code aus dem Ring-3 (2, oder 1) auf einen anderen, ihm nicht gehörenden Datenblock aus dem gleichen oder einem höheren Ring zuzugreifen, wird ein CPU-Exception ausgelöst. Die wird i.d.R. vom OS abgefangen, normalerweise wird das Programm dann mit einer Fehlermeldung beendet (Unter Windows doch sehr bekannt: "Konnte Vorgang Read/Write auf Adresse 0x000..."
Hingegen kann ein Code aus einem beliebigen Ring auf Code-/Daten eines darunter liegenden Rings zugreifen.
Sache des Betriebssystems ist es nun, sicherzustellen, dass alles korrekt eingerichtet wird, um optimalen Schutz zu garantieren.
Nichtsdestotrotz gibt es mit genügend Zeit, Langeweile und Geschick trotzdem Möglichkeiten...
Um das ganze jetzt ein Stückchen näher auf die PID's zu beziehen...du müsstest erstmal den entsprechenden Speicherbereich finden...viel Spaß.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.06.2007, 17:05 Titel: |
|
|
Mao hat Folgendes geschrieben: | Hehe. Wie gesagt, bei Intel und sogar bei MS saßen keine Anfänger am Entwurf der Schutzmechanismen bzw. des Betriebssystems.
Es gibt in den x86 CPU's (und eigentlich auch in den meisten anderen Architekturen) eine MMU, die dafür sorgt, dass wenn sie richtig eingerichtet wurde, ein Programm nur auf seinen eigenen Speicherbereich zugreifen kann. (Im ProtectedMode, 32-Bit, sind das nunmal 4GB, auch wenn im Bestfall unter Windows nur 3GB benutzt werden können. Normal-Konfiguration "nur" 2GB pro Task.) Für diese Verwaltung gibt es verschiedene Privilegierungsstufen, Ringe. Ring 0, 1, 2 und 3. Ring 0 ist dabei der höchstprivilegierte, Ring 3, der, der am wenigsten darf. Alles was dazwischen angesiedelt ist, sind Abstufungen, die in Windows bzw. Linux imho nicht verwendet werden. Ring 0 ist also für den Kernel, für Teile vom Windows-Kernel selbst, sowie Treiber (kann Sicherheitsproblem sein). Ring 3 wird für normale Anwendungen benutzt.
Treiber laufen wie gesagt im Ring 0 und können so bei fehlerhafter Programmierung das System abstürzen lassen (sollte denk ich mal fast jeder schon mit Bekanntschaft gemacht haben).
B2t...versucht nun ein Code aus dem Ring-3 (2, oder 1) auf einen anderen, ihm nicht gehörenden Datenblock aus dem gleichen oder einem höheren Ring zuzugreifen, wird ein CPU-Exception ausgelöst. Die wird i.d.R. vom OS abgefangen, normalerweise wird das Programm dann mit einer Fehlermeldung beendet (Unter Windows doch sehr bekannt: "Konnte Vorgang Read/Write auf Adresse 0x000..."
Hingegen kann ein Code aus einem beliebigen Ring auf Code-/Daten eines darunter liegenden Rings zugreifen.
Sache des Betriebssystems ist es nun, sicherzustellen, dass alles korrekt eingerichtet wird, um optimalen Schutz zu garantieren.
Nichtsdestotrotz gibt es mit genügend Zeit, Langeweile und Geschick trotzdem Möglichkeiten...
Um das ganze jetzt ein Stückchen näher auf die PID's zu beziehen...du müsstest erstmal den entsprechenden Speicherbereich finden...viel Spaß.  |
Ahh wieder was dazugelernt... ich nehm mal an das windows gut wache schiebt vor den ringportalen
man müsste doch eigtl __nurrr__ nach den PIDs suchen. die werden wohl in einem Zusammenhängenden Speicherbereich sein...
nichtsdesdotrotz wäre das ein extremer aufwand... _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 23.06.2007, 17:46 Titel: |
|
|
Bei 16bit-Betriebssystemen ist es by the way mit entsprechenden Programmen problemlos möglich, direkt im Speicher und auf Hardware zuzugreifen... Besonders lustig ist es mit einem C++-Compiler, wenn man einen Quellcode debuggen muss, der mit Pointern arbeitet (da kann man bei fehlerhaftem Verhalten schonmal das OS zerschießen <- /me hats mal bei Win311 geschafft^^.) _________________ DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 23.06.2007, 18:22 Titel: |
|
|
Manuel hat Folgendes geschrieben: | Bei 16bit-Betriebssystemen ist es by the way mit entsprechenden Programmen problemlos möglich, direkt im Speicher und auf Hardware zuzugreifen... Besonders lustig ist es mit einem C++-Compiler, wenn man einen Quellcode debuggen muss, der mit Pointern arbeitet (da kann man bei fehlerhaftem Verhalten schonmal das OS zerschießen <- /me hats mal bei Win311 geschafft^^.) |
Naja
16-Bit OSse kennen meistens nicht das Ring-System. Kenne selber keins bei dem das der Fall wäre.
Und diese OSse können dann meistens auch die MMU nicht ansprechen, geschweige denn damit richtig umgehen  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 23.06.2007, 19:57 Titel: |
|
|
Dein Halbwissen ist ganz nett, aber nicht vollständig.
Das hat nix mit "nicht ansprechen" zutun.
Es gibt strikte Trennungen zwischen 16Bit, 32Bit und 64Bit-Befehlen.
Befehle für das Laden spezieller Tabellen, die die MMU braucht, sind aber erst ab dem PM verfügbar (32Bit). Zum Beispiel LGDT und LIDT. Direkten Zugriff auf die MMU bekommst du nicht.
csderats hat Folgendes geschrieben: |
16-Bit OSse kennen meistens nicht das Ring-System.
|
Das hat nichts mit nicht kennen zu tun.
Diese Sachen können nunmal nur ab dem 32Bit-Mode angesprochen werden.
16Bit-Betriebssysteme sind RealMode-Systeme.
csderats hat Folgendes geschrieben: |
Und diese OSse können dann meistens auch die MMU nicht ansprechen, geschweige denn damit richtig umgeh
|
Hat auch nix mit "nicht können" zu tun.
Lies dich in den PM ein, dann verstehst du's. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 24.06.2007, 11:01 Titel: |
|
|
Man muss aber dazusagen, dass Mao's Ring-System etwas x86er-spzifisches ist. Bei vielen gibts AFAIK nur ein Supervisor-User-Modell. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 24.06.2007, 11:42 Titel: |
|
|
Naja, ich hab mich mit anderen Architekturen (noch) nicht wirklich auseinander gesetzt. Zudem wird ja in den meisten Betriebssysteme ohnehin nur Ring 0 und 3 verwendet, was dem Prinzip ja eigtl. recht nahe kommt. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|