Startseite
    der Anfang
    Wintersemester 2007/08
    Unix Praktikum
    Experimentelle Gestaltung
    Grundlagen analoger Gestaltung
    Mathe für Medieninformatiker 1
    Einführung in die Informatik 1
    Film Ab! Kurs -> individuelle Ergänzung
    Meine Wenigkeit
    Fotoalbum
    Dear Diary
  Archiv
  Gästebuch
  Kontakt
 


http://myblog.de/kopffick

Gratis bloggen bei
myblog.de





..., dass ich einfach nicht mehr geben konnte als Sex. Dass - in diesem Zusammenhang und dieser Hinsicht - alles andere von mir ziemlich wertlos war. Weil nicht erwünscht, und wenn erwünscht nicht angenommen. Vielleicht nicht in der Lage angenommen zu werden, ist ja auch wurst. So gesehen wertlos. Nicht die Freundschaft, sondern alles darüber hinausgehende. Einfach nicht erwünscht. Eben außer dem Sex.
Traurig und demütigend fühlt sich das an.

Er weiß es wahrscheinlich noch gar nicht, dass ich nur des Abschlusses wegen da hin gekommen bin. Und nach einem Abschluss hat alles geschrien.
Perfekter Ort und perfekte Besetzung der Protagonisten dafür, findest du nicht?

Und weiter geht es nicht, weiter ist der Tod für mich. Und so kann ich jetzt nicht sterben. "Denn ich brauche mich für etwas mehr als dich", sang ich grad im Auto und war ziemlich dankbar für dieses Refrain.
Ich brauche mich vor allem wieder für mich und für mein Lächeln, das wieder ehrlich sein will.

Eigentlich war das eine Beerdigung heute für mich.
Deswegen entschuldige meine Grabesmiene und mein falsches Lachen.
8.3.08 04:42


Du tust mir weh.
Und ich kann mich noch nicht mal dagegen wehren.
26.2.08 03:45


4. Represäntation von Zeichen




Da im Rechner eben nur Binärzahlen repräsentierbar sind, werden alle Zeichen mit Binärzahlen codiert.

-> ASCII Code (American Standard Code for Information Interchange (1963))

~> Code verwendet 7 Binärstellen -> 7 Bit-Code = 2^7 = 128 unterschiedliche Zeichen sind codierbar

Mitlerweile ist es jedoch Standart 1 Byte zu verwenden, also 8 Bit. Dabei ist das achte Bit frei und wird für zwei Dinge genutzt:
1. Als Kontrolle der Datenübertragung.
-> Falls 8. Bit gleich 0, dann müssen die restlichen 7 Bit eine gerade Anzahl von Einsen enthalten.
-> Falls 8. Bit gleich 1, müssen die restlichen 7 Bit eine ungerade Anzahl von Einsen enthalten
=> Sonst liegt ein Fehler in der Übertragung vor

2. ANSI Extended ASCII -> als erweiterter Zeichensatz zur Codierung von Sonderzeichen


Jedoch gibt es so viel mehr Zeichen, die man im Rechner darstellen wollte (arabische, kyrillische Buchstaben etc), deshalb entwickelte man den UNICODE.


=> UNICODE

-> Internationaler Codierungs-Standart.
Codierung von:
1. Textzeichen (Buchstaben, Silbenzeichen, Sonderzeichen, Ziffern , etc)
2. mathematische, kaufmännische und technische Sonderzeichen (z.B. Firmensymbole)

Mit dem umfassenderem UNICODE versucht man alle bekannten Zeichen aller Alphabete zu kodieren. Auch tote Sprachen, wie z.B. die Hieroglyphen, Runen und so weiter.
Die letzte Version 3.1 vom März 2001 umfasst knapp über 94 000 Zeichen. Dabei werden 3 Byte benötigt, jedoch 4 Byte verwendet. Das zusätzliche Byte als Reserve für zusätzliche Zeichen.
Durch diesen Umstand entsteht ein großer und meist unnötiger Speicherverbrauch.

Um dieses Speicherverschleuder Problem zu lösen gibt es 2 Lösungsansätze:

1. UCS-2 (universal character set 2) : Kodierung in 2 Bytes, reicht für ca 65 500 Zeichen. Mit 2 Bytes lassen sich alle lebenden Sprachen und die gebräuchlichen Sonderzeichen kodieren und es reicht komplett für die normale Kommunikation. (Auch gängiger Zeichensatz von Microsoft Windows)
2. UTF-8 (unicode transformation format ): die am weitesten verbreitete Kodierung für Unicode-Zeichen. Dabei wird in variabler Länge kodiert.
-> 1 Byte verwendet, bis zu 4 Byte können verwendet werden. Das linke Bit ist erstmal 0, um den Anfang kennzuzeichnen. Wenn nur dieser eine Byte verwendet wird, entspricht die Codierung dem ASCII Code, das heißt es sind 128 Zeichen kodierbar.
-> Werden jedoch mehr Bytes benötigt, fängt das nachfolgende Byte mit 10 an, um kennzuzeichnen, dass es noch zum anfänglichen Byte gehört. Das erste Byte zeigt durch 1-en und einer abschließenden 0 an, wie viele Bytes noch nachfolgen.


-> Beispiele:

-> 0xxxxxxx (2^7 Zeichen kodierbar, kein Byte folgt)

-> 110xxxxx 10xxxxxx (2^11 Zeichen kodierbar. Die zwei Einsen und die abschließende 0 kennzeichnen, dass noch genau ein Byte folgt, der dann wiederum mit 10 anfängt)

->11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (2^16 Zeichen kodierbar. Die 4 Einsen am Anfangsbyte kennzeichnen: eine Eins für das Anfangsbyte, 3 für 3 nachfolgende Bytes.)


=> Die nachfolgenden Bytes beginnen immer mit 10, damit bei gestörter Übertagung klar ist, dass hier nicht der Anfang sein kann.
25.2.08 13:48





Ich hab ein wenig das Gefühl keine Luft zu kriegen, also meine Lungen schon, aber ich nicht.
Warum freu ich mich auf gar nichts richtig? Oder ist das nur heute so?
24.2.08 18:55


3. Umrechnung von Darstellungen


HORNER-Schema
-> Umwandlung zwischen verschiedenen Zahlensystemen

~> Die allgemeine Darstellung von Zahlen im dezimalen Stellenwertsystem ist nichts anderes als eine verkürzte Schreibweise für besondere Polynome, nämlich Polynome mit der Basis x=10.
Das Gleiche gilt für alle anderen Stellenwertsysteme, beispielsweise das Binärsystem (x=2).
~~> Mit dem Horner-Schema kann man Zahlen aus jedem anderen Stellenwertsystem in das Dezimalsystem umwandeln und umgekehrt.

-> Beispiel:
Binärzahl 110101 soll in das Dezimalsystem umgewandelt werden:

Image and video hosting by TinyPic

-> Beispiel an Hexadezimalzahlen – Umrechnung der Hexadezimalzahl EF01 ins Dezimalsystem:

Image and video hosting by TinyPic

-> Umrechnung der Dezimalzahl 81 ins Dualsystem:

(1) Teile die Zahl mit Rest durch 2.
(2) Der Divisionsrest ist die nächste Ziffer (von rechts nach links).
(3) Falls der (ganzzahlige) Quotient = 0 ist, bist du fertig,
andernfalls nimm den (ganzzahligen) Quotienten als neue Zahl
und wiederhole ab (1).

81 : 2 = 40 Rest: 1
40 : 2 = 20 Rest: 0
20 : 2 = 10 Rest: 0
10 : 2 = 5 Rest: 0
5 : 2 = 2 Rest: 1
2 : 2 = 1 Rest: 0
1 : 2 = 0 Rest: 1

Resultat: 1010001

-> Von unten nach oben lesen

Eine Problemstellung bei der Umrechnung ist, dass man b^-1 zum Beispiel nicht exakt im Zielsystem darstellen kann. Bei der Umwandlung von Dezimalzahlen mit Nachkommastellen, enstehen immer minimale Rundungsfehler.
23.2.08 17:52


UNIX
Vorlesung 4 – Unix Prozesse und Signale


-> Hintergrund: Multitasking
_ Timesharing-System
_ Prozeflhierarchie
_ init als Urprozefl
_ Vererbung von Prozeflattributen
_ Prozeflzust‰nde: running, ready, blocked
_ Zombies


-> Prozesse
Unter UNIX wird für jedes Programm, das ausgeführt wird ein eigener Prozess gestartet, welcher zu allen übrigen Prozessen parallel abläuft. Der Programmcode und die Programmdaten werden im Hauptspeicher geladen und gestartet.
Damit in der Prozessverwaltung kein Chaos entsteht, ist jeder Prozess mit einer eindeutigen PID (Prozess ID) versehen.Wird Z.B. ein Programm zweimal gestartet (gleicher oder verschiedene Benutzer), so handelt sich um 2 verschiedene Prozesse,(mit verschiedenen PID) obwohl beide den gleichen Programmcode ausführen. Ein Prozess bleibt solange bestehen, bis er beendet wird.
Ein Prozess kann einen oder mehrere andere Prozesse starten, die wiederum Kindprozesse erzeugen können usw. Man spricht von Elternprozess und Kindprozessen (oder Vater-Sohn-Prozessen). Die Prozesse bilden eine Prozesshierarchie.
Zu jeder Anmeldung beim Rechner gehören der Login-Prozess (der die Anmeldung bearbeitet) und der
Kommandointerpreter Prozess (Shell). Shell liest die Kommandoeingaben, interpretiert sie und führt sie aus.
Neben der PID zeigt die PPID unter welchem Prozess ein Sohnprozess gestartet wurde. Ob alle dazugehörigen Sohnprozesse beendet werden, wenn der Vaterprozess beendet wird, ist vom System und Typ des Vaterprozesses abhängig (Ausnahme: Prozesse, die mit at, batch oder nohup gestartet werden).

-> Prozesszustände:
Ein Prozess kann mehrere Zustände haben. Die wichtigsten sind:
Aktiv (English running): Der Prozess wird jetzt von den CPU bearbeitet
Bereit (English ready): Er wartet auf die Zuteilung der CPU Zeit.
Blockiert (English blocked): Er wartet auf noch nicht verfügbare Ressourcen oder Ereignisse: Z.B. Benutzer
Eingabe, Daten von Plattenspeicher, Signal von einem anderen Prozess, …)
Suspendiert (English suspended): Der blockierte Prozess wird zusätzlich auf eine Speicherplatte ausgelagert und somit ist der Hauptspeicher für andere Programme frei.
Beendet
Das Betriebsystem ist zuständig für Prozessverwaltung, und kann eine der folgenden Operationen über einem Prozess ausführen:
Einen Prozess generieren (start). Zu jedem Prozess gehört ein Prozesskontrollblock (PCB) und andere
Informationen
Momentaner Prozesszustand
PID, PPID, UID (User Identity), GID (Group Identity)
Priorität des Prozesses
Adresse des Prozesses im Hauptspeicher
Ressourcen, die vom Prozess gebraucht werden
Einen Prozess anhalten (suspend)
Einen Prozess wieder starten (resume)
Prozesspriorität ändern (Prozesse werden nicht gleichwertig bedient. Die Zuteilung von CPU Zeit (Scheduling)
ist abhängig von Priorität. )
Einen Prozess beenden (terminate)
Wenn viele Prozesse gleichzeitig im System laufen, muss jeder Prozess länger warten, bis er wieder bearbeitet wird.
Alle Prozesse derselben Priorität müssen gleich lange warten. Die Priorität kann aber geändert werden, so dass einige
Prozesse häufiger von der CPU bearbeitet werden als andere und somit eine kürzere Laufzeit haben. Die UID (User ID)
bezeichnet den Eigentümer des Prozesses; nur der Eigentümer (oder Systemadministrator als Superuser) kann einen
Prozess manipulieren (z.B. mit dem Shell-Kommando „nice“).

-> Prozeßerzeugung
_ Vordergrundprozesse: Shell wartet (blockiert)
_ Hintergrundprozesse: Shell wartet nicht

-> Prozeßinfo
Das Betriebssystem führt intern eine Liste aller Prozesse, über die man alle Verwaltungsdaten eines Prozesses erreichen kann. Die wichtigste davon ist die PID, eine Integerzahl, die den Prozeß eindeutig kennzeichnet. Daneben gibt es noch den Status, zugehöriges Terminal, Prozeßnummer des Prozeß-Vaters, Benutzernummer, Priorität uvm.
Mit dem Kommando ps kann man sich Ausschnitte dieser Liste anzeigen lassen. Anders als jobs, ist dieses Kommando nicht Shell-intern. Es liest seine Daten direkt aus dem Datenbereich des Betriebssystems. Das Problem hierbei ist, daß es sehr unterschiedliche Optionen unter verschiedenen UNIX-Derivaten hat. Deshalb wird im folgenden für System-V (HP- und SGI-Rechner) und BSD (bzw. SunOS) getrennt beschrieben.
Gibt man einfach ps ein, so wird nur der Status der Prozesse ausgegeben, die von der Shell, auf der man das ps-Kommando startet, gestartet wurden. Das sind also mindestens die Shell selbst und der ps-Prozess. Man bekommt eine Liste aller seiner Prozesse auf diesem Rechner mit der Option -x (BSD) bzw. -u loginname (SysV).
Normalerweise bekommt man nur eine kurze Ausgabe mit Angaben je Prozeß über PID (Prozeßnummer: dies ist eine Verwaltungsnummer des Betriebssystems. Man braucht diese Nummer z.B. für das kill Kommando), TTY (Terminal von dem aus das Kommando gestartet wurde), Status (nur BSD: z.B. S für Suspended, oder R für Running), TIME (verbrauchte Rechenzeit) und COMMAND (Kommandoname und alle Parameter).
_ ps -a: alle Ñinteressantenì Prozesse (mit TTY)
_ ps -e: alle Prozesse
_ ps -f: zus‰tzliche Info
_ ps -u user: Prozesse von user
juser@vino ps -f
UID PID PPID C STIME TTY TIME CMD
juser 8300 8291 80 03:28:31 pts/1 0:01 bash
juser 8333 8300 19 03:32:25 pts/1 0:00 ps –f

_ top: dynamische ‹bersicht ¸ber aktivste Prozesse

last pid: 18017; load averages: 0.27, 0.30, 0.45 14:05:10
43 processes: 40 sleeping, 2 stopped, 1 on cpu
CPU states: 94.7% idle, 0.6% user, 1.9% kernel, 2.8% iowait, 0.0% swap
Memory: 32M real, 3552K free, 25M swap in use, 232M swap free

PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
18016 juser 1 50 0 1280K 1036K cpu 0:00 3.29% top-5.8
123 root 1 58 0 4012K 1140K sleep 132:29 2.27% amd
18010 juser 1 58 0 2908K 1900K sleep 0:00 1.95% xterm
18011 juser 1 48 0 1836K 1140K sleep 0:00 1.75% bash
17880 root 1 59 0 24M 2212K sleep 0:07 1.11% Xsun
154 root 8 22 0 3304K 1576K sleep 10:44 0.23% nscd
100 root 1 58 0 1972K 332K sleep 3:45 0.05% inetd
138 root 1 58 0 1584K 372K sleep 0:42 0.02% syslogd
2615 root 1 58 0 1376K 236K sleep 1:18 0.00% cron

-> init als Urprozeß
init ist dafür verantwortlich, das Hochfahren von Unix zu
kontrollieren, nachdem der Kernel gebootet wurde.
Dazu werden normalerweise die systemabh¨angigen
Init-Dateien gelesen: /etc/rc* auf BSD-¨ahnlichen
Systemen und /etc/inittab und die Dateien in
/etc/init.d auf System V.
Neuere Unix-Systeme verwenden andere Mechanismen,
um den Systemstart zu kontrollieren: Solaris und OS X
k¨onnen Startup-Vorg¨ange parallelisieren
Das System wird von init in einen definierten Zustand
gebracht, z.B. Multiuser-Betrieb. In System V- ¨ahnlichen
Systemen kann der Zustand durch den init-Level (z.B. 3 f ¨ ur
Multiuser, 5 f ¨ ur Multiuser+GUI) selektiert werden
Der Init-Prozess stirbt nie. Es ist ein normaler Prozess,
kein Systemprozess innerhalb des Kernels – aber init l ¨ auft
mit den Privilegien des Superusers.
Init ist der erste Prozess in der Unix-Prozesshierarchie und
der “Vorfahr” aller Prozesse, die aktuell auf einem System
laufen.

UID PID PPID CLS PRI STIME TTY TIME CMD
root 0 0 SYS 96 Nov 12 ? 0:02 sched
root 1 0 FSS 49 Nov 12 ? 2:36 /etc/init

-> Zombies
UID PID PPID C STIME TTY TIME CMD
juser 4984 4983 0 Nov 25 pts/4 0:00 bash
juser 4986 4984 0 0:09
_ sind schon tot
_ verbrauchen darum keine Rechenzeit mehr
_ entstehen, wenn der Elternprozefl nicht Ñwartetì (wait)

-> Prozeßkontrolle + Signale
_ INT: Interrupt, ^C
_ QUIT: Abbruch, ^\
_ KILL, 9: Abbruch, nicht zu ignorieren
_ TERM: Default-Signal, geordnetes Beenden
_ STOP, CONT: Prozefl anhalten/fortsetzen
_ ILL, FPE, BUS, SEGV: Programmierfehler o.ä

_ kill: Signal schicken
_ kill [-signal] pid ...
_ Nur für den Eigentümer erfolgreich nutzbar
.
23.2.08 11:52


UNIX
Vorlesung 3 – Unix Grundlagen 2


-> Unix Gruppen
Eine Gruppe ist eine Menge/Zusammenfassung von Benutzern. Durch die Gruppe ergibt sich die Möglichkeit, die Berechtigungen von Dateien so zu wählen, dass ein Team gemeinsam auf Ressourcen zugreifen kann, ohne dass die Daten gleich allen Benutzern öffentlich angeboten werden. Gruppen unterstützen und vereinfachen die Arbeit in einem Team an einem gemeinsamen Projekt. Die Erzeugung und Verwaltung der Gruppen erfolgt dabei nur durch die Systembetreuung.
Die Gruppenzugehörigkeit hat in erster Linie etwas mit der Gewährung und Erlangung von Zugriffsrechten auf Dateien und Verzeichnisse zu tun. UNIX kennt dazu 3 Abstufungen: Den Eigentümer, die Gruppe und den Rest der Welt.

-> Gruppenzugehörigkeit
Es ist die Mitgliedschaft in einer oder mehreren Gruppen möglich. (treimer: stud twincester animexxler)
Deren Zahl ist jedoch begrenzt.  primary group + supplementary group(s) (früher auch newgrp)
Systemgruppen haben keine Mitglieder.
Systemgruppen, Sonderanwendungen, “Einzelkinder” haben ein Mitglied.
Gruppen wie stud haben viele Mitglieder.

-> Ermittlung von Mitgliedschaften – id
Durch den Befehl id werden die Benutzer- und Gruppennummer angezeigt.

z.B.:
uid=12345(janeuser) gid=12000(info)
oder:
uid=12354(joeuser) gid=12000(info) groups=11000(software),11009(soft9)

-> Jane User (janeuser) ist der Gruppe info zugeordnet, Joe User (joeuser) gehört zusätzlich den Gruppen 'software' und 'soft9' an.


-> Unix-Gruppen und Dateien
Welcher Gruppe "gehören" meine Dateien und wie kann ich das beeinflussen ?
Mit dem Kommando ls können Sie sich Informationen über Dateien und Verzeichnisse anzeigen lassen. Mit der Option -l wird die Ausgabe etwas umfangreicher, etwa für das Programm ls selbst:

>> ls -l /vol/gnu/bin/ls
<< -rwxr-xr-x 1 ro src 98304 Jun 22 00:38 /vol/gnu/bin/ls

Die Datei "gehört" also der Gruppe 'src', damit sind die hervorgehobenen Zugriffsrechte verbunden. Sollte für eine Gruppe kein symbolischer Name existieren (das ist i.d.R. dann der Fall, wenn die Gruppe aufgelöst wurde), erscheint stattdessen ein numerischer Bezeichner, z.B.

>> ls -l /homes/joeuser/uralt
<< -rwxr-x--- 1 joeuser 4000 22134 Jan 12 14:18 /homes/joeuser/uralt

Da die Gruppe mit der Nummer 4000 nicht mehr existiert und er jetzt der Gruppe info angehört, möchte Joe User die Zugehörigkeit dieser Datei evtl. ändern. Dazu dient das Kommando chgrp.
Wie funktioniert chgrp ?
chgrp wird als erster Parameter der Name der gewünschten Gruppe übergeben gefolgt von einem oder mehreren Datei-Namen, z.B.:
>> chgrp info /homes/joeuser/uralt
Mit ls läßt sich die Änderung kontrollieren:
>> ls -l /homes/joeuser/uralt
<< -rwxr-x--- 1 joeuser info 22134 Jan 12 14:18 /homes/joeuser/uralt

Wenn Sie *alle* Dateien und Verzeichnisse unterhalb Ihres Home-Directories - unabhängig von der bisherigen Zuordnung - einer bestimmten Gruppe (i.d.R. der, der sie primär angehören) zuordnen wollen, können Sie das wie folgt erreichen: Wechseln Sie mit cd in Ihr Home-Directory (pwd zur Kontrolle):
>> cd
>> pwd
<< /homes/joeuser
Rufen Sie chgrp mit der Option -R für rekursiven Durchlauf auf:
>> chgrp -R info .

-> Ziel muss primary oder supplementary group sein! (nicht zugänglich: chown)
(Mit dem Befehl chown kann der Systemverwalter eine oder mehrere Dateien einem anderen User übereignen, d.h. der andere User wird zum Eigentümer der Datei(en). Dieser Befehl kann nur vom Systemverwalter benutzt werden, es ist also nicht möglich, dass ein Normaluser seine eigenen Dateien einem anderen User übereignet.
chown Username Datei(en)
Optional kann dem Usernamen auch mit Punkt(.) oder Doppelpunkt( getrennt ein Gruppennamen folgen, dann erledigt chown gleich noch die Gruppenzugehörigkeit der Datei(en). Statt User- und Gruppennamen können auch User- und GruppenID benutzt werden. chown kennt den Parameter -R, mir dem ganze Unterverzeichnisbäume mit allen Dateien und Verzeichnissen darin rekursiv bearbeitet werden. Der Befehl
chown -R hans:users /home/hans
würde also das Unterverzeichnis /home/hans und alle darin enthaltenen Dateien und Verzeichnisse dem User Hans und der Gruppe users zuordnen.)

-> Zugriffsrechte ändern mit chmod
Die Rechte von Dateien oder Verzeichnissen können mit dem Kommando chmod (change mode) verändert werden. Beispiel:

chmod 754 meinskript
(-> chmod [-R] [--recursive] mode file ...]
Mit diesem Befehl erhält die Datei meinskript die Rechte rwxr-xr--. Das bedeutet, dass der Eigentümer die Datei lesen, schreiben und ausführen darf. Die Mitglieder der besitzenden Gruppe dürfen die Datei einsehen und starten, der Rest der Welt darf die Datei nur lesen.
-> Die Veränderung der Berechtigungen auf Dateien und Verzeichnisse ist nur für den Eigentümer ausführbar.
-> chmod anwenden:

-Wer? user, group, other, all
-Wie? +, -, =
-Was? r,w,x wie gehabt, X,s,t speziell, u,g,o wie anderes Feld

juser@vino ls -l
-rw-r--r-- 1 juser stud 2350 Oct 28 21:08 geheimesProgramm
juser@vino chmod u-w,u+x,go= geheimesProgramm
juser@vino ls -l
-r-x------ 1 juser stud 2350 Oct 28 21:08 geheimesProgramm
23.2.08 11:50


 [eine Seite weiter]



Verantwortlich für die Inhalte ist der Autor. Dein kostenloses Blog bei myblog.de! Datenschutzerklärung
Werbung