MichiLee: Betriebssystemfragen

Hallo Forum,

ich hätte demnächst eine Klausur und hätte leider ein paar Fragen, die ich nicht wirklich durch Wiki lösen konnte.

1. CPU mit spez. und allg. Registern = Leiterk und Rechenwerk. Unter Rechenwerk haben wir nuns tehen: Programmzähler, Befehlsregister und Kellerzeiger/Stapelzeiger.

Der Progammzähler enthält die Speicheradresse (RAM oder ROM) des nächsten Befehls (oder auch Daten), was ausgeführt wird. Richtig?

Im Befehlsregister wird der nächste zu auszuführende Befehl abgelegt abgelegt inkl. Inhalt der Speicherstelle im Hauptspeicher. (So steht es bei uns im Script.) D.h., der Programmzähler zeigt auf den Befehlsregister, wenn hier die Befehle drin sind?

Für was braucht man nch einen Kellerzeiger/Stapelzeiger, wenn der Programmzähler auf das nächste Befehl (Speicheradresse) zeigt?
Der Kellerzeiger zeigt ja auf die erste verfügbare Speicheradress des Kellerspeichers)

Hier fehlt mir leider etwas Orientierung, wie man das erkennen kann :-)
Vor allem, weil in einem anderen Script unter Leitwerk anstatt Kellerzeiger das Wort Programmstatuswort erscheint. (Accountingdaten, Statuswort, ...) Dürfte vermutlich dasselbe sein?
Ist der Kellerzeiger evtl. für Interrupts wichtig, wenn ein Prozess angehalten wird und mit einer anderen weitergemacht? (Interrupthandler)

2. Verstehe ich in Shell folgendes richtig: wait %jobnr
Wenn ich durch wait &jobnr etwas vom Hintergrund aufrufe, wird meine Tastatur so lange gekoppelt, bis der Prozess fertig ist, ohne dass ich den Prozess sehe?

3. 4 notwendige Bedingungen für Deadlocks. Klar sind mir folgende 3 Punkte "Besitzen und Warten", "Kein Betriebsmittelentzug" und "Zyklische Wartebedingun".
Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?

4. Mit der Fat Großenberechnung will ich euch nicht stören. Ich finde nur kein gescheites Stichwort für google, wie man das die Fatgröße rechnet?
Im Script steht nur: Größe der FAT = Anzahl Zeiger * Zeigerlänge und Anzahl Zeiger = Partitionsgröße / Blockgröße (Ich sollte halt die Begrifflichkeiten wissen ne? :-) )
Cluster

5. Wenn ich das obere gelöst habe, dürfte ich auch folgendes dann verstehen: Problem bei Belegung durch Index-Blöche (Unix File System)
Die anzahl der speicherbaren Zeigadressen pro Index-Block ist limitiert und max 128 Blöcke adressierbar (Dateigröße maximal 64KByte)

6. Alle Teilnehmer eines LANs teilen sich die Übertragungskapazität des physikalischen ÜBertragungswegs: "Shared networks". alle Stationen sehen alle Daten-Rahmen im LAN (Jeder Rahmen erreicht prinzipiell jede Station)
Meint man mit Rahmen den Verbund aller Stationen, praktisch ein Netz?

7. RC4-Stromverschlüsselungsverfahren (Bsp. WEP-Schlüssel)
Verschlüsserung: C = P xor K
Entschlüsselung: C xor K = P xor K xor K = P

Warum ist die Entschlüsselung so komisch, reicht da C xor K nicht aus, um wieder an den Klartext P zu kommen? (K = Schlüsselstrom, C = Verschlüsselter Text)

8. Für was soll die Broadcast-Adresse 255.255.255.255 gut sein? (Um eventuell, wenn man sich in ein Netzwerk verbindet und die 255.255.255.255 anspricht, dass man vom Netzwerk seine eigene IP als Antwort erhält?

9. Modifizieren des Programmzählers muss nicht im privilegierten Modus (Kernelmode) ausgeführt werden. Stimmt das?

10. X-Server und X-Client ist ja genau anders herum, wie man es vom WWW kennt ne? X-Server verwalter Monitor, Tastatur, Maus, grafische Grundellemente, Netzwerkweite bereitstellung. (Bei dem alles dargestellt wird), X-Client ist Teil der anwendung, kommuniziert mit X-Server, Ereignisverwaltung (Auf dem laufen die Dienste)

11. Kooperative Multitasking: Der aktive Prozess muss die CPU von sich aus freigeben, der Dispatcher

12. Unter http://de.wikipedia.org/wiki/Ger%C3%A4tetreiber steht:
"[..] Von Computern und ihren Betriebssystemen kann nicht erwartet werden, dass sie mit all diesen verschiedenen Arten umgehen können, erst recht nicht mit zukünftigen Geräten. Um dieses Problem zu lösen, gibt das Betriebssystem vor, wie eine Klasse von Geräten angesprochen werden sollte. Die Gerätetreiber kümmern sich dann um die Übersetzung [..]"

Weiter unten steht dann:
"[..] Häufig sind funktionstüchtige Hardwarekomponenten mit proprietären Treibern mit neueren Betriebssystemen nicht lauffähig. Dies hängt oft mit den kommerziellen Interessen von Hardwareherstellern zusammen [..]"

Wenn aber das Betriebssystem, wie oben erwähnt, die Klassen von Geräten (also den Treiber, bzw. Treiberaufruf) vorgibt, dann sollte der gleiche Treiber auf neuerem Betriebssystem eigentlich auch laufen, da der Aufruf, bzw. die Vorgabe ja gleich bleibt? (Der Treiber kümmert sich dann um die Kommunikation zur Hardware hin)?

Ich hoffe, dass dies alles nicht zu viel war. Ich habe mich aber bemüht, vieles durch Google und Wiki selber heauszurkriegen, was mir nicht immer gelungen ist.

Grüße

  1. Mal ein Anfang von mir. Alle Antworten sind bitte mit "meines Wissens" zu verstehen. Da gibts sicher irgendwo noch was im Internet, um das genauer nachzulesen.

    Der Progammzähler enthält die Speicheradresse (RAM oder ROM) des nächsten Befehls (oder auch Daten), was ausgeführt wird. Richtig?

    Ja.

    D.h., der Programmzähler zeigt auf den Befehlsregister, wenn hier die Befehle drin sind?

    Nein, der Zähler zeigt in den Speicher. Ein Register ist eine feste Speicherzelle in der CPU. Die ist bekannt, da braucht nichts mehr extra drauf zeigen.

    Für was braucht man nch einen Kellerzeiger/Stapelzeiger, wenn der Programmzähler auf das nächste Befehl (Speicheradresse) zeigt?

    Na damit auch was auf den Stapel zeigt, nachdem der Programmzähler das ja nicht macht ;-)
    Der Stack (=Stapel) enthält Daten, keinen Programmcode.

    1. 4 notwendige Bedingungen für Deadlocks. Klar sind mir folgende 3 Punkte "Besitzen und Warten", "Kein Betriebsmittelentzug" und "Zyklische Wartebedingun".
      Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

    Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?

    Das hat auch damit zu tun. Warum das so aufgelistet ist weiß ich nicht.

    1. Alle Teilnehmer eines LANs teilen sich die Übertragungskapazität des physikalischen ÜBertragungswegs: "Shared networks". alle Stationen sehen alle Daten-Rahmen im LAN (Jeder Rahmen erreicht prinzipiell jede Station)
      Meint man mit Rahmen den Verbund aller Stationen, praktisch ein Netz?

    Nein damit sind die Pakete im Netz gemeint. Der Satz ist ein gutes Beispiel für eine sinnlose Eindeutschung von eigentlich prägnanten Begriffen, die bei uns glücklicherweise nicht deutsch sind und somit wirkliche Fachbegriffe mit eindeutiger Bedeutung sind.

    1. RC4-Stromverschlüsselungsverfahren (Bsp. WEP-Schlüssel)
      Verschlüsserung: C = P xor K
      Entschlüsselung: C xor K = P xor K xor K = P

    Warum ist die Entschlüsselung so komisch, reicht da C xor K nicht aus, um wieder an den Klartext P zu kommen? (K = Schlüsselstrom, C = Verschlüsselter Text)

    Doch, lass den Mittelteil der Gleichung weg dann steht das auch so da.

    1. Kooperative Multitasking: Der aktive Prozess muss die CPU von sich aus freigeben, der Dispatcher

    Da fehlt ein Stück Satz.

    1. Hi Encoder,
      eine Danke geht auch an Dich. Die Sachen, die ich verstanden habe, lösche ich, bzw. kommentiere ich zwecks Übersichtlichkeit mal nicht mehr.

      Was die erste Frage betrifft, werde ich später in Udos Antword hier Bezug nehmen, bzw. seinen Beitrag besser verstehen.

      1. 4 notwendige Bedingungen für Deadlocks. Klar sind mir folgende 3 Punkte "Besitzen und Warten", "Kein Betriebsmittelentzug" und "Zyklische Wartebedingun".
        Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

      Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?
      Das hat auch damit zu tun. Warum das so aufgelistet ist weiß ich nicht.

      So ist es eben in unserem Script aufgelistet, dass diese 4 Punkte zu einem Deadlok führen können.
      Die Frage wäre, was man durch den wechselseitigen Ausschluss in etwa versteht?
      Unter Exlusiv nutzbar verstehe ich, dass sich die Ressource (zum Beispiel durch Threads) nicht teilen lässt?

      1. Alle Teilnehmer eines LANs teilen sich die Übertragungskapazität des physikalischen ÜBertragungswegs: "Shared networks". alle Stationen sehen alle Daten-Rahmen im LAN (Jeder Rahmen erreicht prinzipiell jede Station)
        Meint man mit Rahmen den Verbund aller Stationen, praktisch ein Netz?
        Nein damit sind die Pakete im Netz gemeint. Der Satz ist ein gutes Beispiel für eine sinnlose Eindeutschung von eigentlich prägnanten Begriffen, die bei uns glücklicherweise nicht deutsch sind und somit wirkliche Fachbegriffe mit eindeutiger Bedeutung sind.

      Oh gott, ok.
      So nen Rahmen würde man ja eigentlich nur in einem Hub-Netzwerk sehen,aber nicht bei nem Switch (Ausnahmen ausgeschlossen), bzw. wenn man nicht alle anspricht oder das ganze Netz anspricht)

      1. Kooperative Multitasking: Der aktive Prozess muss die CPU von sich aus freigeben, der Dispatcher
        Da fehlt ein Stück Satz.

      Danke, das hat sich auch erledigt. Kooperatives Multitasking: Der Prozess muss von der CPU aus freigegeben werden und der Dispatcher würde dann erst wieder greifen, wenn der Prozess zu Ende (terminiert ist) oder eventuell bei Blockaden :-)

      Grüße

      1. Die Frage wäre, was man durch den wechselseitigen Ausschluss in etwa versteht?

        Also ich verstehe darunter dass zwei Prozesse oder Threads nicht gleichzeitig auf etwas zugreifen können, sondern sie müssen sich durch Sperrmechanismen absprechen. Zum Beispiel wenn sie auf eine Liste zugreifen, der eine stellt ein Element rein und der andere löscht es, weil er nicht weiß dass er inzwischen eigentlich ein Element des anderen in den Fingern hat.
        Das kann man schon auch irgendwie als "Besitzen und Warten" verstehen. Aber Besitz und Warten kann auch so verstanden werden, dass es mehrere Resourcen gibt. Der eine Thread hält eine Resource, der zweite hält die andere. Jeder Thread will etzt zusätzlich die, die der andere Thread hat. Beide Threads warten darauf dass die andere Resource frei wird. Das wird sie aber nie, weil die Threads sozusagen gegenseitig aufeinander warten.

        Aber das ist alles eine ziemliche Spielerei mit Begriffen. Der eine versteht X drunter, der andere Y.
        Für deine Prüfung machst du dir am besten klar was dein Dozent darunter versteht.
        Und nach der Prüfung mach dich bitte wieder frei von genauen persönlichen Definitionen ;-)

        Unter Exlusiv nutzbar verstehe ich, dass sich die Ressource (zum Beispiel durch Threads) nicht teilen lässt?

        Ich auch. Aber wie gesagt, wenn dein Korrekteur der Prüfung was anderes versteht, hängts halt von ihm ab...

        So nen Rahmen würde man ja eigentlich nur in einem Hub-Netzwerk sehen,aber nicht bei nem Switch (Ausnahmen ausgeschlossen), bzw. wenn man nicht alle anspricht oder das ganze Netz anspricht)

        Ja den sieht man halt soweit, bis irgendein Kopplungselement die Pakete von einem anderen Teil des Netzes trennt.

        1. Hi Encoder,
          heute fange ich mit der Danksagung bei dir an, weil ich es am schnellsten ebantworten kann und morgen beim Udo :-)

          Die Frage wäre, was man durch den wechselseitigen Ausschluss in etwa versteht?
          Also ich verstehe darunter dass zwei Prozesse oder Threads nicht gleichzeitig auf etwas zugreifen können, sondern sie müssen sich durch Sperrmechanismen absprechen. Zum Beispiel wenn sie auf eine Liste zugreifen, der eine stellt ein Element rein und der andere löscht es, weil er nicht weiß dass er inzwischen eigentlich ein Element des anderen in den Fingern hat.
          Das kann man schon auch irgendwie als "Besitzen und Warten" verstehen. Aber Besitz und Warten kann auch so verstanden werden, dass es mehrere Resourcen gibt. Der eine Thread hält eine Resource, der zweite hält die andere. Jeder Thread will etzt zusätzlich die, die der andere Thread hat. Beide Threads warten darauf dass die andere Resource frei wird. Das wird sie aber nie, weil die Threads sozusagen gegenseitig aufeinander warten.

          Danke. Dein Reim dazu hört sich aber sehr verständlich und sinnvoll an und läst sich auch leicht merken.

          Aber das ist alles eine ziemliche Spielerei mit Begriffen. Der eine versteht X drunter, der andere Y.
          Für deine Prüfung machst du dir am besten klar was dein Dozent darunter versteht.
          Und nach der Prüfung mach dich bitte wieder frei von genauen persönlichen Definitionen ;-)

          Das sowieso. Nen Rahmen möchte ich mir nicht wirklich merken. Wobei ich auch schon aus dem Kontekt nicht von nem Rahmen auf nen Frame, bzw. Paket schließen würde :-)

          Grüße

          1. Danke. Dein Reim dazu hört sich aber sehr verständlich und sinnvoll an und läst sich auch leicht merken.

            Wovon redest du gerade? Was für ein Reim?
            Ich wollt eigentlich gar nichts dichten.

            1. Hi,

              Danke. Dein Reim dazu hört sich aber sehr verständlich und sinnvoll an und läst sich auch leicht merken.
              Wovon redest du gerade? Was für ein Reim?
              Ich wollt eigentlich gar nichts dichten.

              war ich böse gemeint. Ich meine, dein Verständnis bzw. deine Interpretation, was das Besitzen/Warten und wechselseitiger Ausschluss betrifft :-)
              Weiß garnicht, warum ich das Reim genannt habe.

              Grüße

  2. Unter Rechenwerk haben wir nuns tehen: Programmzähler, Befehlsregister und Kellerzeiger/Stapelzeiger.

    Das Rechenwerk ist das Ding, das schlicht und ergreifend genau dies tut: Rechnen. Der Stapelspeicher gehört IMHO nicht dazu.

    Der Progammzähler enthält die Speicheradresse (RAM oder ROM) des nächsten Befehls (oder auch Daten), was ausgeführt wird. Richtig?

    Fast, er enthält die Adresse des nächsten Befehls. Punkt. Er zeigt nicht auf Daten, dafür gibt es andere Register. (Er kann natürlich auf eine Speicherzelle zeigen, die ein Datum enthält und keinen Befehl, nur ist dann halt Katastrophe, Absturz, Weltuntergang.)

    Im Befehlsregister wird der nächste zu auszuführende Befehl abgelegt abgelegt inkl. Inhalt der Speicherstelle im Hauptspeicher. (So steht es bei uns im Script.) D.h., der Programmzähler zeigt auf den Befehlsregister, wenn hier die Befehle drin sind?

    Nein, das Befehlregister wäre das Register im Prozessor, in dem der gerade zu bearbeitende Befehl steht. Dieser Befehl wurde anhand des Programmzählers aus dem Speicher kopiert.

    Befehle werden im Prozessor letztlich durch Transistoren "ausgeführt". Diese Transistoren können nicht mit dem Speicher verdrahtet werden (buchstäblich), ihre Verbindung besteht zum Befehlsregister.

    Für was braucht man nch einen Kellerzeiger/Stapelzeiger, wenn der Programmzähler auf das nächste Befehl (Speicheradresse) zeigt?

    Der Stapelspeicher ist ein besonderer Speicherbereich, in dem Rücksprungadressen und lokale Funktionsvariaben abgelegt werden. Wenn du in einem Programm eine Funktion aufrufst, wird die nächste Befehlsadresse auf dem Stapelspeicher abgelegt und dann die Funktionsadresse geladen. Um aus der Funktion wieder heraus ins Hauptprogramm zu springen, wird die Adresse vom Stapelspeicher zurückgeholt:

    1 gosub 5         -> Haupt: Adresse 2 (nächster Befehl) auf Stapelspeicher, Stapelspeicherzeiger + 1, Adresse 5 in Programmzähler laden
    2 ping            -> Haupt: ping machen
    3 end             -> Haupt: Ende
    4 print "hallo"   -> Unterfunktion: "hallo" ausgeben
    5 return          -> Stapelspeicherzeiger - 1, Rücksprungadresse vom Stapelspeicher holen und in Programmzähler laden

    Vor allem, weil in einem anderen Script unter Leitwerk anstatt Kellerzeiger das Wort Programmstatuswort erscheint. (Accountingdaten, Statuswort, ...) Dürfte vermutlich dasselbe sein?

    Das Leitwerk steuert die Befehlsausführung, es holt zum Beispiel den nächsten Befehl aus dem Speicher und kopiert ihn ins Befehlsregister.

    Das Programmstatuswort, genauer: seine einzelnen Bits zeigen den aktuellen Zustand des Prozessors an, dazu kann gehören, ob der Prozessor beispielsweise gerade in einem wie auch immer gearteten Debugging-Modus arbeitet oder gestoppt ist. Meist gehört dazu auch eine allgemeine Aussage über das Ergebnis der letzten Operation, ob gleich, größer oder kleiner Null war, oder ein Überlauf stattgefunden hat.

    Ist der Kellerzeiger evtl. für Interrupts wichtig, wenn ein Prozess angehalten wird und mit einer anderen weitergemacht? (Interrupthandler)

    Möglich, ein Interruptaufruf ja wie ein Funktionsaufruf. Kommt aber IMHO auf den Prozessor an, ich meine mich zu entsinnen, dass manche dafür eigene Register haben.

    1. Verstehe ich in Shell folgendes richtig: wait %jobnr
      Wenn ich durch wait &jobnr etwas vom Hintergrund aufrufe, wird meine Tastatur so lange gekoppelt, bis der Prozess fertig ist, ohne dass ich den Prozess sehe?

    "Abkoppeln" halte ich für etwas übertrieben, es wird einfach gewartet, bis der Prozess fertig ist. "Blockieren" ist wohl der üblichere Ausdruck.

    Ob du den Prozess siehst oder nicht, ist eine andere Frage. Auch ein Hintergrundprozess kann noch in die Shell ausgeben.

    1. 4 notwendige Bedingungen für Deadlocks.

    Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

    Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?

    "Besitzen und Warten" hört sich für mich so an, dass ein Prozess eine weitere Sperre auf etwas anlegen möchte, das er schon zuvor gesperrt hat.

    1. Alle Teilnehmer eines LANs teilen sich die Übertragungskapazität des physikalischen ÜBertragungswegs: "Shared networks". alle Stationen sehen alle Daten-Rahmen im LAN (Jeder Rahmen erreicht prinzipiell jede Station)
      Meint man mit Rahmen den Verbund aller Stationen, praktisch ein Netz?

    Nein, einfach ein Datenpaket, das durchs Kabel wandert (Englisch: Frame).

    1. RC4-Stromverschlüsselungsverfahren (Bsp. WEP-Schlüssel)
      Verschlüsserung: C = P xor K
      Entschlüsselung: C xor K = P xor K xor K = P

    Warum ist die Entschlüsselung so komisch, reicht da C xor K nicht aus, um wieder an den Klartext P zu kommen? (K = Schlüsselstrom, C = Verschlüsselter Text)

    Obacht, das ist keine Entschlüsselung, sondern eine Gleichung: 1 + 2 = 5 - 2 = 3. Um das Ergebnis 3 zu erhalten, musst du nicht erst 1 + 2 rechnen, dann 5 - 2. Du kannst 1 + 2 rechnen oder 5 - 2, beides ist gleich 3.

    Um das Ergebnis P zu erhalten, musst du nicht erst C xor K rechnen und dann P xor K xor K. Du kannst C xor K nehmen oder P xor K xor K, beides ist gleich P.

    1. Für was soll die Broadcast-Adresse 255.255.255.255 gut sein? (Um eventuell, wenn man sich in ein Netzwerk verbindet und die 255.255.255.255 anspricht, dass man vom Netzwerk seine eigene IP als Antwort erhält?

    Auf Broadcast-Adressen reagieren alle Stationen im Netz. Sowas nutzt man immer, wenn man nicht weiß, wer für die Anfrage zuständig ist. Damit könnte man zum Beispiel auch Netzwerkdrucker finden.

    1. Modifizieren des Programmzählers muss nicht im privilegierten Modus (Kernelmode) ausgeführt werden. Stimmt das?

    Wenn dem so wäre, müssten ja sämtliche Prozesse im privilegierten Modus laufen, weil sie sonst keinen Schritt machen könnten.

    1. Kooperative Multitasking: Der aktive Prozess muss die CPU von sich aus freigeben

    Richtig. Die Prozesse müssen sich kooperativ verhalten, sie müssen mitarbeiten.

    "[..] Häufig sind funktionstüchtige Hardwarekomponenten mit proprietären Treibern mit neueren Betriebssystemen nicht lauffähig. Dies hängt oft mit den kommerziellen Interessen von Hardwareherstellern zusammen [..]"

    Wenn aber das Betriebssystem, wie oben erwähnt, die Klassen von Geräten (also den Treiber, bzw. Treiberaufruf) vorgibt, dann sollte der gleiche Treiber auf neuerem Betriebssystem eigentlich auch laufen, da der Aufruf, bzw. die Vorgabe ja gleich bleibt? (Der Treiber kümmert sich dann um die Kommunikation zur Hardware hin)?

    Der Treiber nutzt mit hoher Wahrscheinlichkeit selbst Funktionen des Betriebssystems (zum Beispiel zum Reservieren von Speicher). Haben die sich geändert, tut's der Treiber nicht mehr. Darüber hinaus kann sich auch die Schnittstellendefinition selbst geändert haben.

    Du wirst Schwierigkeiten haben, Windows 7 einen Treiber schmackhaft zu machen, der für eine Windows-3-Umgebung entwickelt wurde.

    1. Hi,
      danke Udo.
      Mein Hauptverständnisproblem liegt wie ihr alle seht bei der Frage 1. Den Rest der Antworten kommentiere ich nicht, da ich Eure Antworten verstanden habe.

      Das Rechenwerk ist das Ding, das schlicht und ergreifend genau dies tut: Rechnen. Der Stapelspeicher gehört IMHO nicht dazu.

      Oki, das verstehe ich noch:-)

      Der Progammzähler enthält die Speicheradresse (RAM oder ROM) des nächsten Befehls (oder auch Daten), was ausgeführt wird. Richtig?

      Fast, er enthält die Adresse des nächsten Befehls. Punkt. Er zeigt nicht auf Daten, dafür gibt es andere Register. (Er kann natürlich auf eine Speicherzelle zeigen, die ein Datum enthält und keinen Befehl, nur ist dann halt Katastrophe, Absturz, Weltuntergang.)

      Und dieser (Stinknormale Befehl wie addiere, subrahiere usw.) Befehl steht im Arbeitsspeicher ne?

      Im Befehlsregister wird der nächste zu auszuführende Befehl abgelegt abgelegt inkl. Inhalt der Speicherstelle im Hauptspeicher. (So steht es bei uns im Script.) D.h., der Programmzähler zeigt auf den Befehlsregister, wenn hier die Befehle drin sind?

      Nein, das Befehlregister wäre das Register im Prozessor, in dem der gerade zu bearbeitende Befehl steht. Dieser Befehl wurde anhand des Programmzählers aus dem Speicher kopiert.

      Aha ok. Anhand des Programmzählers wird der nächste Befehl (wie oben beschrieben) vom Speicherbereich oder Zelle in den Befehlsregister kopiert.
      Der Befehlsregister hat nun ein Befehl und muss sich nun die Daten auch dazu irgendwie heranziehen?

      Für was braucht man nch einen Kellerzeiger/Stapelzeiger, wenn der Programmzähler auf das nächste Befehl (Speicheradresse) zeigt?
      Der Stapelspeicher ist ein besonderer Speicherbereich, in dem Rücksprungadressen und lokale Funktionsvariaben abgelegt werden. Wenn du in einem Programm eine Funktion aufrufst, wird die nächste Befehlsadresse auf dem Stapelspeicher abgelegt und dann die Funktionsadresse geladen. Um aus der Funktion wieder heraus ins Hauptprogramm zu springen, wird die Adresse vom Stapelspeicher zurückgeholt:

      1 gosub 5         -> Haupt: Adresse 2 (nächster Befehl) auf Stapelspeicher, Stapelspeicherzeiger + 1, Adresse 5 in Programmzähler laden
      2 ping            -> Haupt: ping machen
      3 end             -> Haupt: Ende
      4 print "hallo"   -> Unterfunktion: "hallo" ausgeben
      5 return          -> Stapelspeicherzeiger - 1, Rücksprungadresse vom Stapelspeicher holen und in Programmzähler laden

      Hier habe ich noch größere Probleme beim Verstehen. Wie gesagt, bevor ich andere Leute strapaziere versuche ich noch heute etwas mehr zu Lesen.
      Wie es ausschaut, sind das dann zwei verschiedene Speicherbereich, was den Stapelzeiger und Programmzähler irgendwie betrifft. Dumm wie Stroh bin ich derzeit :-) (Sicherlich müsste man sich in die ganze Sache eigentlich vertiefen, da das ganze ja nicht so simpel ist, wie ping machen, Hallo ausgeben usw., da beim Rechenwerk ja naher nur nullen und einsen ankommen. Ich sollte schlafen :-)

      Das Leitwerk steuert die Befehlsausführung, es holt zum Beispiel den nächsten Befehl aus dem Speicher und kopiert ihn ins Befehlsregister.

      Oki, das habe ich verstanden und muss noch dann die anderen Wörter wie Befehlsadresse (auf das der Programmzähler zeigt ne oder ist das wieder was anders) Programmstatuswort/Statusregister mal in Ruhe heute Abend oder morgen im Laufe des Tages in Lektüren nachholen, bzw. mir einen etwas verständlichen Gesamtüberblick verschaffen.

      Das Programmstatuswort, genauer: seine einzelnen Bits zeigen den aktuellen Zustand des Prozessors an, dazu kann gehören, ob der Prozessor beispielsweise gerade in einem wie auch immer gearteten Debugging-Modus arbeitet oder gestoppt ist. Meist gehört dazu auch eine allgemeine Aussage über das Ergebnis der letzten Operation, ob gleich, größer oder kleiner Null war, oder ein Überlauf stattgefunden hat.

      Ah, ok, dann hat sich ein Wort oben von mir geklärt.

      1. 4 notwendige Bedingungen für Deadlocks.

      Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

      Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?

      "Besitzen und Warten" hört sich für mich so an, dass ein Prozess eine weitere Sperre auf etwas anlegen möchte, das er schon zuvor gesperrt hat.

      Unter Besitzen und Warten steht: Prozesse warten auf die Freigabe einer angeforderten Ressource, ohne bereits selbst belegte Ressourcen in der Zwischenzeit freizugeben. Das hört sich ähnlich an, wie die von der Bedingung "Wechselseitiger Ausschluss -> Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

      Danke und Grüße :-)
      Michi

      1. Der Progammzähler enthält die Speicheradresse (RAM oder ROM) des nächsten Befehls (oder auch Daten), was ausgeführt wird. Richtig?

        Fast, er enthält die Adresse des nächsten Befehls. Punkt. Er zeigt nicht auf Daten, dafür gibt es andere Register.

        Und dieser (Stinknormale Befehl wie addiere, subrahiere usw.) Befehl steht im Arbeitsspeicher ne?

        Ja, auch. Du hast grundsätzlich recht, solltest das aber nicht auf den Arbeitsspeicher beschränkt sehen.
        Diesen Befehl hat sich der Prozessor anhand einer Adresse über den Datenbus gezogen; er gibt eine Adresse auf die Adressleitungen und daraufhin erscheint das Datum (der Befehl) an den Datenleitungen und kann ins Befehlsregister geschoben werden. An den Bus sind viele Dinge angeschlossen, natürlich zu aller Erst der Arbeitsspeicher (RAM), aber auch ROM, Erweiterungskarten und andere Dinge können angeschlossen und dementsprechend Befehlsquellen sein.

        Aha ok. Anhand des Programmzählers wird der nächste Befehl (wie oben beschrieben) vom Speicherbereich oder Zelle in den Befehlsregister kopiert.

        Richtig.

        Der Befehlsregister hat nun ein Befehl und muss sich nun die Daten auch dazu irgendwie heranziehen?

        Das Befehlsregister ist, wie der Name eigentlich schon sagt, nur eine Speicherzelle im Prozessor. Die Daten, die ein Befehl benötigt, werden vom Leitwerk zur Verfügung gestellt, anhand dessen, was im Befehlsregister steht.

        Beachte, dass du hier schon mit einem halben Bein im Elektrischen stehst, du hast mit Transistoren und elektrischen Verbindungen zu tun, Spannungen (Bits) werden ein- oder ausgeschaltet und dadurch ändern wieder andere Schalter ihren Zustand.

        Der Stapelspeicher ist ein besonderer Speicherbereich, in dem Rücksprungadressen und lokale Funktionsvariaben abgelegt werden. Wenn du in einem Programm eine Funktion aufrufst, wird die nächste Befehlsadresse auf dem Stapelspeicher abgelegt und dann die Funktionsadresse geladen. Um aus der Funktion wieder heraus ins Hauptprogramm zu springen, wird die Adresse vom Stapelspeicher zurückgeholt:

        Das Beispiel war nicht so dolle, ich versuch's nochmal: Angenommen, du hast folgende Befehle im Arbeitsspeicher an den Adressen 1 bis 5 stehen:

        1 gosub 4
        2 ping
        3 end
        4 print "hallo"
        5 return

        Der Programmablauf wäre wie folgt (der Stapelzeiger zeigt eingans auf einen Speicherbereich ab Adresse 100):

        PC=1  SP=100  Befehl=gosub 4
        PC=4  SP=101  Befehl=print "hallo"
        PC=5  SP=101  Befehl=return
        PC=2  SP=100  Befehl=ping
        PC=3  SP=100  Befehl=end

        PC = Programmzähler (program counter), SP = Stapelzeiger (stack pointer)

        Der gosub-Befehl kopiert zuerst die eigentlich nächste Befehlsadresse auf den Stapel, erhöht den Stapelzeiger um 1 und setzt dann die Befehlsadresse der Unterfunktion in den Programmzähler.
        Der return-Befehl arbeitet umgekehrt: Er vermindert den Stapelzeiger um 1, kopiert die an diese Stelle von gosub gespeicherte Rücksprungadresse in den Programmzähler.

        Du kannst auf diese Weise beliebig viele Unterfunktionen ineinander verschachteln, ohne explizit zu wissen, wie der Weg zurück ins Hauptprogramm geht, denn die Rücksprungadressen sind fein säuberlich im Stapelspeicher aufgestapelt.

        Du kannst dir die Funktion des Stapelspeichers auch wie einen Notizzettel vorstellen, auf dem du dir nacheinander die Straßen notierst, die du bei einer Stadtwanderung passierst.

        Anna-Straße
           Berthold-Platz
           Cäsar-Weg
        -> Droste-Gasse

        Für den Weg zurück brauchst du keine Straßenkarte, sondern gehst mit deinem Stapelzeiger (deinem Finger: -> ) einfach in umgekehrter Reihenfolge die aufgeschriebenen Kreuzungen zurück.

        Wie es ausschaut, sind das dann zwei verschiedene Speicherbereich, was den Stapelzeiger und Programmzähler irgendwie betrifft.

        Richtig. Der Stapelzeiger ist ein Register, dass auf den Stapelspeicher zeigt, welcher ein Bereich des Arbeitsspeichers ist, auf dem das Programm Daten fast wortwörtlich stapeln kann. Zu diesen Daten kann auch die Adresse gehören, die vor einem Funktionsaufruf im Programmzähler steht und für einen Rücksprung aus der Funktion benötigt wird.

        Der Programmzähler zeigt auf einen Bereich des Arbeitsspeichers, in dem sich das auszuführende Programm befindet, genauer: an die Position des aktuellen Befehls.

        Befehlsadresse (auf das der Programmzähler zeigt ne oder ist das wieder was anders)

        Richtig, die Befehlsadresse steht im Programmzähler.

        1. 4 notwendige Bedingungen für Deadlocks.

        Der vierte Punkt "Wechselseitiger Auschluss (ressourcen sind nur exklusiv nutzbar. Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

        Was versteht man dadrunter genau? Der Inhalt könnte ja auch in "Besitzen und Warten" fallen?

        "Besitzen und Warten" hört sich für mich so an, dass ein Prozess eine weitere Sperre auf etwas anlegen möchte, das er schon zuvor gesperrt hat.

        Unter Besitzen und Warten steht: Prozesse warten auf die Freigabe einer angeforderten Ressource, ohne bereits selbst belegte Ressourcen in der Zwischenzeit freizugeben.

        Interpretiere ich mal so, als wenn Prozess 1 Resource A gesperrt hat und auf Resource B wartet, während Prozess 2 auf Resource A wartet und mit dem dicken Hintern auf B sitzt.

        Wir haben also mehrere Resourcen und der Deadlock dreht sich sozusagen im Kreis. Das würde allerdings auf deine andere Bedingung, "Zyklische Wartebedingung" passen.

        Bedingung "Wechselseitiger Ausschluss -> Die eine Ressource benutzenden Prozesse schließen sich wechselseitig aus"

        Hier hätten wir dann wohl nur eine Resource: Prozess 1 und Prozess 2 haben (nicht-exklusive) Leserechte an Datei A und möchten jetzt gleichzeitig (exklusive) Schreibrechte haben – geht aber nicht, da sich beide gegenseitig mit ihren Leserechten sperren. A kann nicht schreiben, solange B auf seinen Leserechten beharrt, B kann nicht schreiben, solange A seine Leserechte hält.

  3. Hi,

    1. Mit der Fat Großenberechnung will ich euch nicht stören. Ich finde nur kein gescheites Stichwort für google, wie man das die Fatgröße rechnet?
      Im Script steht nur: Größe der FAT = Anzahl Zeiger * Zeigerlänge und Anzahl Zeiger = Partitionsgröße / Blockgröße (Ich sollte halt die Begrifflichkeiten wissen ne? :-) )

    Ein FAT-Dateisystem verwaltet den Speicher in sogenannten Clustern als kleinster Einheit. Typische Clustergrößen sind z.B. 4kB oder 32kB. Die Anzahl der Cluster ergibt sich, nachdem das System oder der Anwender deren Größe festgelegt hat, indem man den Gesamt-Speicherplatz durch die Clustergröße dividiert.
    Die Anzahl der Cluster bestimmt nun, ob den FAT-Typ:
    FAT12 (12bit pro Eintrag, maximal 4080 Einträge)
    FAT16 (16bit pro Eintrag, maximal 65520 Einträge)
    FAT32 (32bit pro Eintrag, viele Millionen von Einträgen)
    Damit ergibt sich schließich die Größe der FAT (Speicherplatzbedarf dieser Tabelle) aus der Anzahl der Cluster mal der Anzahl der Bits pro Eintrag.

    1. X-Server und X-Client ist ja genau anders herum, wie man es vom WWW kennt ne? X-Server verwalter Monitor, Tastatur, Maus, grafische Grundellemente, Netzwerkweite bereitstellung. (Bei dem alles dargestellt wird), X-Client ist Teil der anwendung, kommuniziert mit X-Server, Ereignisverwaltung (Auf dem laufen die Dienste)

    Und warum ist das "genau anders herum"?
    Der X-Server stellt die Funktionen und Ressourcen (Bildschirmausgabe, Eingabegeräte) bereit, und wartet darauf, dass ein X-Client, also eine Anwendung, diese Funktionen und Ressourcen nutzen möchte.

    "[..] Häufig sind funktionstüchtige Hardwarekomponenten mit proprietären Treibern mit neueren Betriebssystemen nicht lauffähig. Dies hängt oft mit den kommerziellen Interessen von Hardwareherstellern zusammen [..]"
    Wenn aber das Betriebssystem, wie oben erwähnt, die Klassen von Geräten (also den Treiber, bzw. Treiberaufruf) vorgibt, dann sollte der gleiche Treiber auf neuerem Betriebssystem eigentlich auch laufen, da der Aufruf, bzw. die Vorgabe ja gleich bleibt? (Der Treiber kümmert sich dann um die Kommunikation zur Hardware hin)?

    Nein, der Treiber hat ja mindestens drei Schnittstellen - die zur Hardware, die zur Anwendung, und die zum Betriebssystem. Und die betriebssystemseitige Schnittstelle wird gern mal von Version zu Version geändert.
    Das ist den Hardwareherstellern natürlich nicht unrecht, denn sie können dann behaupten, dass eine bestimmte Hardware (zu der ein bestimmter Treiber gehört) mit einem neuen Betriebssystem nicht mehr läuft, und der Kunde leider, leider das Nachfolgemodell dieser Hardwarekomponente kaufen muss.

    So long,
     Martin

    --
    Man soll den Tag nicht vor dem Abend loben.
    Und den Mann nicht vor dem Morgen.
      (alte Volksweisheit)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi Martinm
      danke für deine Antwort. (Hab schon ein schlechtes Gewissen, dass ich so viele Fragen auf einmal schreiben musste)

      Ein FAT-Dateisystem verwaltet den Speicher in sogenannten Clustern als kleinster Einheit. Typische Clustergrößen sind z.B. 4kB oder 32kB. Die Anzahl der Cluster ergibt sich, nachdem das System oder der Anwender deren Größe festgelegt hat, indem man den Gesamt-Speicherplatz durch die Clustergröße dividiert.
      Die Anzahl der Cluster bestimmt nun, ob den FAT-Typ:
      FAT12 (12bit pro Eintrag, maximal 4080 Einträge)
      FAT16 (16bit pro Eintrag, maximal 65520 Einträge)
      FAT32 (32bit pro Eintrag, viele Millionen von Einträgen)
      Damit ergibt sich schließich die Größe der FAT (Speicherplatzbedarf dieser Tabelle) aus der Anzahl der Cluster mal der Anzahl der Bits pro Eintrag.

      achso. Ja das muss ich mir nochmals genau anschauen, was ich die Berechnung mit Zeigerlänge, Blockgröße,... usw. betrifft.

      1. X-Server und X-Client ist ja genau anders herum, wie man es vom WWW kennt ne? X-Server verwalter Monitor, Tastatur, Maus, grafische Grundellemente, Netzwerkweite bereitstellung. (Bei dem alles dargestellt wird), X-Client ist Teil der anwendung, kommuniziert mit X-Server, Ereignisverwaltung (Auf dem laufen die Dienste)

      Und warum ist das "genau anders herum"?
      Der X-Server stellt die Funktionen und Ressourcen (Bildschirmausgabe, Eingabegeräte) bereit, und wartet darauf, dass ein X-Client, also eine Anwendung, diese Funktionen und Ressourcen nutzen möchte.

      Ja, im WWW ist es ja so, dass die Applikation auf einem Server läuft und auf dem Client (Im Browser dargestellt wird)
      Beim X-Server wird alles dargestellt, die Applikation läuft aber auf dem X-Client. (Das meinte ich mit anders herum, bzw. meine Betrachtung)

      "[..] Häufig sind funktionstüchtige Hardwarekomponenten mit proprietären Treibern mit neueren Betriebssystemen nicht lauffähig. Dies hängt oft mit den kommerziellen Interessen von Hardwareherstellern zusammen [..]"
      Wenn aber das Betriebssystem, wie oben erwähnt, die Klassen von Geräten (also den Treiber, bzw. Treiberaufruf) vorgibt, dann sollte der gleiche Treiber auf neuerem Betriebssystem eigentlich auch laufen, da der Aufruf, bzw. die Vorgabe ja gleich bleibt? (Der Treiber kümmert sich dann um die Kommunikation zur Hardware hin)?

      Nein, der Treiber hat ja mindestens drei Schnittstellen - die zur Hardware, die zur Anwendung, und die zum Betriebssystem. Und die betriebssystemseitige Schnittstelle wird gern mal von Version zu Version geändert.
      Das ist den Hardwareherstellern natürlich nicht unrecht, denn sie können dann behaupten, dass eine bestimmte Hardware (zu der ein bestimmter Treiber gehört) mit einem neuen Betriebssystem nicht mehr läuft, und der Kunde leider, leider das Nachfolgemodell dieser Hardwarekomponente kaufen muss.

      Ach so, ok. Wenn das Betriebssystem die Schnittstellen auch ändert, ist das dann klar. Regelt aber nicht das Betriebssystem auch die Anwendung, so dass der Treiber nur 2 Schnittstellen hat?

      Grüße
      Michi

      1. n'Abend!

        danke für deine Antwort. (Hab schon ein schlechtes Gewissen, dass ich so viele Fragen auf einmal schreiben musste)

        wenn du nur eine Liste von Fragen hier reinstellst, um später einfach nur die Antworten abzugreifen, die andere für dich ausgearbeitet haben, solltest du auch ein schlechtes Gewissen haben. Aber du machst den Eindruck, als ob du dich wirklich mit der Materie beschäftigst, selbst versuchst, den Sachen auf den Grund zu gehen, sie zu verstehen, mitzudenken. Dann ist viel Fragen völlig okay.

        1. X-Server und X-Client ist ja genau anders herum, wie man es vom WWW kennt ne?
          Und warum ist das "genau anders herum"?
          Der X-Server stellt die Funktionen und Ressourcen (Bildschirmausgabe, Eingabegeräte) bereit, und wartet darauf, dass ein X-Client, also eine Anwendung, diese Funktionen und Ressourcen nutzen möchte.
          Ja, im WWW ist es ja so, dass die Applikation auf einem Server läuft und auf dem Client (Im Browser dargestellt wird)

        Mir scheint, du hast eine ganz spezielle Vorstellung, was die Begriffe "Server" und "Client" bedeuten. Versuch mal, die beiden Begriffe zu definieren!
        Ein SQL-Server beispielsweise stellt die Datenbank und einen Satz von Zugriffsmethoden bereit, er bietet sie an. Ein Client -das kann in diesem Fall auch ein PHP-Script sein- nutzt diese bereitgestellten Schnittstellen und Dienste.

        Beim X-Server wird alles dargestellt, die Applikation läuft aber auf dem X-Client.

        Ja. Die Applikation ist im typischen Client/Server-Modell der Client - auch beim eben angesprochenen Datenbank-Beispiel, auch beim Beispiel Webserver/Browser. Die Applikation ist dort der Browser, er nutzt die Informationen und Schnittstellen, die der Webserver zur Verfügung stellt.

        Beim X-Server ist das auch so, weil es bei dieser Client/Server-Verbindung nur um die graphische Anzeige (bzw. die zugehörigen Eingabegeräte) geht.

        Überlege also bei der Bewertung einer Client/Server-Konstellation immer, was eigentlich der Dienst ist, bevor du die Client- und Server-Rollen zuordnest. Bei vielen Prozessen sind mehrere Client/Server-Beziehungen beteiligt (siehe oben: Gegenüber dem Browser ist der Apache der Server, gegenüber dem DBMS ist er üblicherweise der Client).

        Nein, der Treiber hat ja mindestens drei Schnittstellen - die zur Hardware, die zur Anwendung, und die zum Betriebssystem. Und die betriebssystemseitige Schnittstelle wird gern mal von Version zu Version geändert.
        Das ist den Hardwareherstellern natürlich nicht unrecht, denn sie können dann behaupten, dass eine bestimmte Hardware (zu der ein bestimmter Treiber gehört) mit einem neuen Betriebssystem nicht mehr läuft, und der Kunde leider, leider das Nachfolgemodell dieser Hardwarekomponente kaufen muss.
        Ach so, ok. Wenn das Betriebssystem die Schnittstellen auch ändert, ist das dann klar. Regelt aber nicht das Betriebssystem auch die Anwendung, so dass der Treiber nur 2 Schnittstellen hat?

        Hmpf. Es wird kompliziert. ;-)
        Beamen wir uns mal etwa 10 Jahre in die Vergangenheit und betrachten das an einem ziemlich offensichtlichen Beispiel: Eine CAN-Karte wird mit einem Treiber für Windows 95/98 geliefert (war damals noch bedeutsam). Der Treiber hat die auf die Hardware abgestimmte Schnittstelle, die ich schon erwähnt habe, er hat eine vom Hersteller festgelegte Schnittstelle zur Anwendung, und er muss außerdem bestimmte Bedingungen erfüllen, damit er vom OS als Treiber verwaltet werden kann (muss beispielsweise ganz bestimmte Funktionen zur Initialisierung und zur Konfiguration unterstützen). Das ist die dritte Schnittstelle, die ich meinte.
        Nun kommt Windows 2000. Win2k hat ein ganz anderes Modell, wie es seine Treiber verwaltet, die sich vom Treibermodell von Windows 9x grundlegend unterscheidet. Also wird behauptet, die alte CAN-Karte sei nicht mit Windows 2000 kompatibel. Sie bräuchte eigentlich nur einen auf Windows 2000 angepassten Treiber, aber der Hersteller will ja lieber neue Karten verkaufen (denen dann ein Win2k-Treiber beiliegt), denn das ist lukrativer, als für alte Produkte neue Software zu entwickeln.

        Jetzt klarer?

        So long,
         Martin

        --
        Wer im Glashaus sitzt, sollte sich nur im Dunkeln ausziehen.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. Hi Martin,

          wenn du nur eine Liste von Fragen hier reinstellst, um später einfach nur die Antworten abzugreifen, die andere für dich ausgearbeitet haben, solltest du auch ein schlechtes Gewissen haben. Aber du machst den Eindruck, als ob du dich wirklich mit der Materie beschäftigst, selbst versuchst, den Sachen auf den Grund zu gehen, sie zu verstehen, mitzudenken. Dann ist viel Fragen völlig okay.

          Hoffentlich vermittle ich auch, dass ich mich darum bemühe, viel zu ergoggoln. Hab ca. 100 Seiten Script vom Prof. durchgearbeitet, aber, manche Sachen sind einfach etwas lachs geschrieben. Bin dann leider auch vom Typ her so, dass ich das voll verstehen muss, bzw. manchmal sogar etwas tiefer in die Materia gehe. Wohingegen ich eigentlich manche Sachen sicherlich nur auswendig lernen könnte, ohne den Hintergrund großartig zu verstehen.

          Mir scheint, du hast eine ganz spezielle Vorstellung, was die Begriffe "Server" und "Client" bedeuten. Versuch mal, die beiden Begriffe zu definieren!

          Ja, ich hab da etwas zu einseitig gedacht. Ich habe praktisch durch Webserver/Browser die ganze Bandbreite (mit SQL und PHP-Script und die Beziehung untereinander) auf einen Haufen geschmissen und das als Server/Client bezeichnet. Also pauschal, der Browser ist generell der Client zu Allen Sachen im Browser. (War mein Fehler)
          Beim X-Server bin ich dann fälschlicherweise davon ausgegangen, dass der X-Server dir arbeitet für mich verrichtet (Wie Java, PHP, Datenbanken) und der Client die Sache darstellt.
          Aber habe es nun begriffen, danke Dir :-)

          Hmpf. Es wird kompliziert. ;-)
          Beamen wir uns mal etwa 10 Jahre in die Vergangenheit und betrachten das an einem ziemlich offensichtlichen Beispiel: Eine CAN-Karte wird mit einem Treiber für Windows 95/98 geliefert (war damals noch bedeutsam). Der Treiber hat die auf die Hardware abgestimmte Schnittstelle, die ich schon erwähnt habe, er hat eine vom Hersteller festgelegte Schnittstelle zur Anwendung, und er muss außerdem bestimmte Bedingungen erfüllen, damit er vom OS als Treiber verwaltet werden kann (muss beispielsweise ganz bestimmte Funktionen zur Initialisierung und zur Konfiguration unterstützen). Das ist die dritte Schnittstelle, die ich meinte.
          Nun kommt Windows 2000. Win2k hat ein ganz anderes Modell, wie es seine Treiber verwaltet, die sich vom Treibermodell von Windows 9x grundlegend unterscheidet. Also wird behauptet, die alte CAN-Karte sei nicht mit Windows 2000 kompatibel. Sie bräuchte eigentlich nur einen auf Windows 2000 angepassten Treiber, aber der Hersteller will ja lieber neue Karten verkaufen (denen dann ein Win2k-Treiber beiliegt), denn das ist lukrativer, als für alte Produkte neue Software zu entwickeln.

          Jetzt klarer?

          Klarer auf jedenfall. Bzw. eigentlich voll, bis auf die eine Schnittstelle der Anwendung. (Liegt aber wohl daran, dass ich mich mit Treibern nie beschäftigt habe, bzw. nie deren Inhalt usw. gesehen habe)
          Die anderen 2 Schnittstellen sind klar. Wenn nun das Betriebssystem zum Beispiel einen Drucker installiert hat. Und irgend eine Anwendung nun den Drucker nutzen will, würde ich denken, dass er dies dem Betriebssystem mitteilt und das Betriebssystem dann den Rest regelt, also nicht über eine direkte Schnittstelle zum Treiber geht.

          Grüße

          1. Mahlzeit,

            Bin dann leider auch vom Typ her so, dass ich das voll verstehen muss, bzw. manchmal sogar etwas tiefer in die Materia gehe.

            wieso "leider"? Mir geht es ähnlich: Wenn mich ein Thema wirklich interessiert, gebe ich auch nicht eher Ruhe, als bis ich es wirklich bis ins Detail verstanden habe.

            Wohingegen ich eigentlich manche Sachen sicherlich nur auswendig lernen könnte, ohne den Hintergrund großartig zu verstehen.

            Das genügt mir, wenn mich ein Thema nicht wirklich interessiert, und ich es einfach nur wissen "muss".

            Beamen wir uns mal etwa 10 Jahre in die Vergangenheit und betrachten das an einem ziemlich offensichtlichen Beispiel: Eine CAN-Karte wird mit einem Treiber für Windows 95/98 geliefert (war damals noch bedeutsam). Der Treiber hat die auf die Hardware abgestimmte Schnittstelle, die ich schon erwähnt habe, er hat eine vom Hersteller festgelegte Schnittstelle zur Anwendung, und er muss außerdem bestimmte Bedingungen erfüllen, damit er vom OS als Treiber verwaltet werden kann (muss beispielsweise ganz bestimmte Funktionen zur Initialisierung und zur Konfiguration unterstützen). Das ist die dritte Schnittstelle, die ich meinte.
            Nun kommt Windows 2000. Win2k hat ein ganz anderes Modell, wie es seine Treiber verwaltet, die sich vom Treibermodell von Windows 9x grundlegend unterscheidet. Also wird behauptet, die alte CAN-Karte sei nicht mit Windows 2000 kompatibel. Sie bräuchte eigentlich nur einen auf Windows 2000 angepassten Treiber, aber der Hersteller will ja lieber neue Karten verkaufen (denen dann ein Win2k-Treiber beiliegt), denn das ist lukrativer, als für alte Produkte neue Software zu entwickeln.
            Jetzt klarer?
            Klarer auf jedenfall. Bzw. eigentlich voll, bis auf die eine Schnittstelle der Anwendung.

            Oh. Dabei ist das für mich die eindeutigste.

            Die anderen 2 Schnittstellen sind klar. Wenn nun das Betriebssystem zum Beispiel einen Drucker installiert hat. Und irgend eine Anwendung nun den Drucker nutzen will, würde ich denken, dass er dies dem Betriebssystem mitteilt und das Betriebssystem dann den Rest regelt, also nicht über eine direkte Schnittstelle zum Treiber geht.

            Hehe. Ich hatte für mein Beispiel absichtlich eine etwas exotische Hardware gewählt, die nicht vom Standard-Betriebssystem bedient wird.

            Ja, du hast recht, bei einem Druckertreiber geht der Weg normalerweise nicht von der Anwendung direkt zum Treiber, sondern an eine Standardfunktion des Betriebssystems. Das OS selbst benutzt in diesem Fall auch die Anwendungsschnittstelle des Treibers.
            Dazu kommt, dass ein Druckertreiber meist kein echter Treiber (im Sinn einer Hardware-Ansteuerung) ist, sondern bloß eine Daten-Aufbereitungsschicht. Die Hardware, die dabei benutzt wird (IEEE1284-Schnittstelle, vulgo "Parallelport", USB oder Ethernet, selten RS232), nimmt man meistens gar nicht mehr bewusst zur Kenntnis, und diese Hardware ist auch soweit standardisiert, dass der entsprechende Treiber schon im OS integriert ist. Da ist die Abgrenzung der logischen Einheiten wieder schwierig.

            Ciao,
             Martin

            --
            Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Hi,

              wieso "leider"? Mir geht es ähnlich: Wenn mich ein Thema wirklich interessiert, gebe ich auch nicht eher Ruhe, als bis ich es wirklich bis ins Detail verstanden habe.

              ja, ist die Frage, ob ich die Rechnerarchitektur, bzw. den Ablauf im CPU später im Leben wirklich brauche. Ist manchmal schwierig, nur etwas auswendig zu lernen, ohne zu Verstehen, auch wenn es manchmal besser wäre :-)

              Hehe. Ich hatte für mein Beispiel absichtlich eine etwas exotische Hardware gewählt, die nicht vom Standard-Betriebssystem bedient wird.

              Ja, du hast recht, bei einem Druckertreiber geht der Weg normalerweise nicht von der Anwendung direkt zum Treiber, sondern an eine Standardfunktion des Betriebssystems. Das OS selbst benutzt in diesem Fall auch die Anwendungsschnittstelle des Treibers.
              Dazu kommt, dass ein Druckertreiber meist kein echter Treiber (im Sinn einer Hardware-Ansteuerung) ist, sondern bloß eine Daten-Aufbereitungsschicht. Die Hardware, die dabei benutzt wird (IEEE1284-Schnittstelle, vulgo "Parallelport", USB oder Ethernet, selten RS232), nimmt man meistens gar nicht mehr bewusst zur Kenntnis, und diese Hardware ist auch soweit standardisiert, dass der entsprechende Treiber schon im OS integriert ist. Da ist die Abgrenzung der logischen Einheiten wieder schwierig.

              Danke, es reicht dann einfach zu Wissen, dass ein Treiber ohne Betriebssystem direkt mit der Anwendung kommunizieren kann (Deshalb dann die dritte Schnittstelle) D.h., eine Anwendung könnte über den Treiber, ohne die Hardware explizit im Betriebssystem zu installieren, kommunieren.
              Ich schließe diesen Punkt dann auch ab und versuche mit den letzten beiden offenen Punkten wie CPU und FAT zu widmen, wo ich mich jedoch noch etwas einlesen will, bevor ich UDO antworte :-)

              Grüße

  4. Hallo MichiLee.

    Zur Betriebssysteme-Vorlesung der LMU München im WiSe 09/10 gibt es ein ausführliches Skript, das dir vielleicht bei der Beantwortung vieler Fragen helfen kann.

    Servus,
    Flo

    1. Hi,

      Zur Betriebssysteme-Vorlesung der LMU München im WiSe 09/10 gibt es ein ausführliches Skript, das dir vielleicht bei der Beantwortung vieler Fragen helfen kann.

      danke Flo. Richtig ausführliches Script, das versuche ich dann am Wochenende durchzuarbeiten und hoffe, dass ich dann hier etwas mehr durchblicke.

      Grüße

  5. Hallo,

    1. Für was soll die Broadcast-Adresse 255.255.255.255 gut sein?

    wie es der Name schon sagt: für Rundsendungen.

    (Um eventuell, wenn man sich in ein Netzwerk verbindet und die 255.255.255.255 anspricht, dass man vom Netzwerk seine eigene IP als Antwort erhält?

    es gibt viele Anwendungsmöglichkeiten, zum Beispiel

    - DHCP
      - NetBIOS-Namensauflösung ohne Nameserver

    Freundliche Grüße

    Vinzenz

    1. Hi,

      1. Für was soll die Broadcast-Adresse 255.255.255.255 gut sein?

      wie es der Name schon sagt: für Rundsendungen.

      Jep, das ist mir klar. Ich dachte halt nur, wegen der 255 am Ende. Dann hätte das Netz nur eine IP. Somit gäbe es keine Stationen.
      Die anderen beiden Beispiele wie DHCP und DNS schaue ich mir dann, was es genau mit der 255.255.255.255 dann zu tun. (Also komplett alles mit 255 belegt)

      Grüße

      1. Hallo,

        Jep, das ist mir klar. Ich dachte halt nur, wegen der 255 am Ende. Dann hätte das Netz nur eine IP. Somit gäbe es keine Stationen.
        Die anderen beiden Beispiele wie DHCP und DNS schaue ich mir dann, was es genau mit der 255.255.255.255 dann zu tun. (Also komplett alles mit 255 belegt)

        Nein, kein DNS. NetBIOS-Namensauflösung *ohne* NetBIOS-Nameserver (in Microsoftkreisen typischerweise WINS - und auch NetBIOS-Namensauflösung *ohne* DNS-Unterstützung). DNS-Namensauflösung benötigt keine Broadcasts.

        Freundliche Grüße

        Vinzenz

        1. Hi,

          Nein, kein DNS. NetBIOS-Namensauflösung *ohne* NetBIOS-Nameserver (in Microsoftkreisen typischerweise WINS - und auch NetBIOS-Namensauflösung *ohne* DNS-Unterstützung). DNS-Namensauflösung benötigt keine Broadcasts.

          achso, oki, danke.

          Grüße