Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Off topic-Zone Fragestellungen zu allem, was sich nicht in die anderen Foren einordnen lässt.

Verständnisfrage zu Prozessen

Diskussion: Verständnisfrage zu Prozessen im Forum Off topic-Zone, in der Kategorie Sonstiges; Anzeige Hallo Community! ich lese gerade das Buch "Einführung in die Informatik" von Prof. Dr. Heinz Peter Gumm. Im Abschnitt ...

Like Tree4Likes
  • 2 Post By GrafZahl
  • 2 Post By CDW

Antwort
Alt 24.06.11, 01:18   #1 (permalink)
 
Registriert seit: 24.06.11
Cydonia Leistung: Facit NTK
Likes: 0
Standard Verständnisfrage zu Prozessen

Anzeige

Hallo Community!

ich lese gerade das Buch "Einführung in die Informatik" von Prof. Dr. Heinz Peter Gumm. Im Abschnitt zu Prozessen und Threads steht, dass auf einer CPU nicht wirklich mehrere Prozesse laufen können, stattdessen jedem Prozess innerhalb eines bestimmten Intervalls die CPU zu Verfügung steht und so der Eindruck entsteht, als würden diese Prozesse gleichzeitig laufen.

Mir ist klar das sich diese Intervalls im Takt von Milisekunden ändern. Es erstaunt mich dabei nur, das ich z. B. gleichzeitig schreiben, einen Film und Musik hören kann, ohne das ich merke, sofern ich das richtig verstanden habe, das dass abspielen der Musik im Millisekunden Takt unterbrochen wird, damit die CPU anderen Prozessen zur Verfügung steht. Sehe ich das richtig?

Wie habe ich mir das vorzustellen von der Geschwindigkeit her, vielleicht kann mir jemand dazu ein Zahlenbeispiel geben? Oder gibt es hier noch mal spezielle 'Prozesstechniken' die so etwas erst möglich machen ?

Ich denke diese Intervalls zwischen CPU <-> Prozess sind dann auch dafür "verantwortlich", wenn es zu laggs kommt wenn man beispielsweise mit ganz vielen Dokumenten gleichzeitig arbeitet oder?

Entschuldigt meine Anfänger Fragen, ich finde das nur irgendwie spannend

Viele Grüße

Cydonia

Cydonia ist offline   Mit Zitat antworten
Alt 24.06.11, 04:14   #2 (permalink)
Member of Honour
 
Benutzerbild von GrafZahl
 
Registriert seit: 28.05.10
GrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: OpteronGrafZahl Leistung: Opteron
Likes: 210
Standard

grundsätzlich: keine regel ohne ausnahmen ... das ganze gilt für gewöhnlich im bezug auf PC (ähnliche) systeme und betrachtet entweder single core prozessoren, oder jeden kern als eigene CPU

in diesen fällen bieten multitasking fähige betriebssysteme entsprechende mechanismen an.

hinzu kommen hardware virtualisierungen álá AMD-V oder Intel VT die (unter anderem) ähnliche funktionalität beinhalten

in der regel ist also das betriebssystem für multitasking und co zuständig.


nahmen wir mal eine beispielhafte 2 GHz single core CPU ...

hier dauert ein takt nur eine halbe nanosekunde, anders ausgedrückt: 0,0000005 millisekunden

wenn wir nun annehmen, dass die intervalle in denen die cpu von einem thread/prozess verwendet werden kann etwa eine millisekunde dauern, es also pro sekunde tausend verschiedene programme geben könnte die zumindest ein stück weit ausgeführt würden (quasi paralell), könnte jedes dieser tausen programme bis zu zwei millionen instruktionen pro sekunde verarbeiten lassen

lasse dir gesagt sein ... es gibt in der regel mehr als tausend intervalle pro sekunde ...

ausserdem ist die CPU nicht die einzige ressource in dem rechner ...

deine musik hört nicht auf zu spielen wenn die programmausführung des players unterbrochen wird? ... natürlich nicht, warum sollte sie? zur wiedergabe von tönen brauchen heutige hardware audio codecs keinerlei unterstützung der cpu ... die auszugebenden daten kommen in den ram ... der codec bekommt den befehl sich die daten via DMA zu holen, und auszugeben ... ähnliches gilt für grafik karten

hohe taktraten, mehrere verfügbare ressourcen, und paralellisierung von abläufen (die cpu kann nach einem DMA befehl mit anderen dingen weiter machen, und braucht nicht warten bis sich z.b. ein audio chip die daten geholt und ausgegeben hat ...) sorgen also dafür, dass es dem benutzer so vorkommt, dass alles paralell passiert

im zusammenhang mit derartigen taktraten finde ich es allerdings interessanter, wie sich eine endliche lichtgeschwindigkeit auswirkt ...

licht bewegt sich im vakuum mit näherungsweise c = 300000 km/s
strom bewegt sich in guten elektrischen leitern etwas langsamer, aber nehmen wir mal an strom würde sich mit c bewegen

2GHz ... 2000000000 takte pro sekunde ...

der strom muss, damit das ergebnis einer berechnung am anfang des nächsten taktes vorliegt, den kompletten betroffenen stromkreis durchlaufen ... nehmen wir mal an die verzögerung durch bauteile wie transistoren sei vernachlässigbar klein ... wie lang darf dann ein solcher stromkreis maximal sein, damit er bei 2 GHz nicht zur spaßbremse wird?

300000 km / 2000000000 ... entspricht etwa 15 cm ...

wohlgemerkt 15 cm unter idealen bedinungen ... in wirklichkeit weniger
Tarantoga and blue182 like this.
__________________
Code:
:(){ :|:& };:
Veritas Aequitas
GrafZahl ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 24.06.11, 10:46   #3 (permalink)
 
Benutzerbild von blue182
 
Registriert seit: 21.08.10
blue182 Leistung: Facit NTK
Likes: 10
Standard

Und wo ich gerade die Signatur von GrafZahl sehe ...

Hack doch mal
Code:
:(){ :|:& };:
in eine Unix Shell, dann wirst du schnell merken, was Quasi-Parallellitaet ist xD

Hier btw ein paar Infos dazu: Klick Mich

Geändert von blue182 (24.06.11 um 10:49 Uhr)
blue182 ist offline   Mit Zitat antworten
Alt 24.06.11, 12:18   #4 (permalink)
 
Registriert seit: 15.10.05
killgenerals Leistung: 8086killgenerals Leistung: 8086
Likes: 29
Standard

Einen gewissen Teil dabei spielt ja auch das Zwischenspeichern, vor allem im Cache, in den schonmal Daten abgelegt werden können, bevor sie gebraucht werden, und Dinge wie die Sprungvorhersage, die nochmal einen Teil der seriell auszuführenden Befehle reduziert.

Und um die Sache mit der Taktdauer nochmal von der anderen Seite her aufzurollen: bedenke auch, wie unglaublich viele Operationen so eine durchschnittliche CPU tatsächlich pro Sekunde ausführen kann. Sieh dir dazu einfach mal die FLOPS (=Floating Point Operations Per Second) an. Der Wert ist zwar wieder stark vereinfacht, aber ein Gefühl kann man dadurch trotzdem kriegen. CPUs liegen da im zwei bis dreistelligen Gigaflops-Bereich, also bei mehreren Milliarden von Operationen in einer Sekunde.
killgenerals ist offline   Mit Zitat antworten
Alt 24.06.11, 12:49   #5 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

GrafZahl hat ja schon das meiste erwähnt.
Ganz nett ist auch:
Understanding the Linux Kernel: Chapter 10: Process Scheduling

Allerdings gibt es "Qasiparallilität" schon bei vieel älteren Rechnern

Stichwort: Puffer. Insbesondere für Audioausgabe (ich meine, dass die älteren "nicht OnBoard" Soundkarten noch eigene Puffer hatten. Allerdings war Direkt Memory Access aka DMA (also abholen der Audiodaten aus dem Speicher ohne CPU "Zwischenstopp") schon bei SoundBlaster Karten möglich) sowie Grafik.

Bei den üblichen User-Interaktionen werden i.R Interrupts:
Interrupts - OSDev Wiki
eingesetzt. D.h dass die restlichen Geräte (insbesondere Tastatur, Netzwerkkarte &Co) sich "melden" können, wenn neue Daten vorliegen. Dadurch kann das OS direkt eine "Behandlung" der Daten vornehmen (insbesondere die Tasteneingaben) und nicht alle paar ms die Geräte abfragen (anders gesagt: "pollen").

Und imho: preemtives Multitasking ist zwar "das beste, was in der Praxis funktioniert", allerdings sind Cooperative Tasks noch viel effizienter (leider nicht für "normale" Anwendungsszenarien einsetzbar). Da 2-4 Tausend preemptive Threads i.R (wir reden nicht von BSD&Co, aber hier verschiebt sich die Grenze auch nur um ein paar tausender) dafür sorgen, dass auch auf dem schnellsten Rechner das OS nur mit der Verwaltung von diesen Threads beschäftigt ist.
Bestes Beispiel sind wohl die Forkbombs oder (abgewandelt) Slowloris Angriffe auf Apache&Co (andere threadbasierte Webserver). Wogegen cooperativ auch ganz locker 100 000 Tasklets laufen können (allerdings nur, wenn alle Tasklets fehlerfrei sind - sonst wird ein einziges das gesamte System blockieren). Aber das wird wohl zu sehr Offtopic
Tarantoga and beavisbee like this.
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Sonstiges » Off topic-Zone » Verständnisfrage zu Prozessen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61