Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
zwei Fragen per mail
hab’ zwei Fragemails bekommen - hier mit meinen Antworten:
ich habe noch ein paar Fragen zu Systemprogrammierung.
- Kann man davon ausgehen, dass die Kapitel 4.1 – 4.5 im Abschnitt
I ausgeschlossen sind? Dass somit das allgemeine Konzept der
Capability-basierten Systeme und deren Probleme relevant sind,
die Umsetzung in HYDRA jedoch nicht?
ja, ab 4.6 wird’s aber wieder interessant
- Sind die kryptografischen Methoden relevant, wenn diese
„eigentlich nicht in diese Vorlesung gehören“?
nein
- Könnten Sie in der morgigen Fragestunde noch einmal auf die
WSClock Methode eingehen?
ja, erinnern Sie mich aber bitte dran.
- Falls ein Prozess beim Demand Paging in Verbindung mit dem
Freiseitenpuffer, auf eine Seite zugreift, die nicht mehr im
Speicher ist und somit eine Unterbrechung auslöst, wird oder
kann dann ein Schedulingvorgang angestoßen werden, bei dem evtl.
ein Prozesswechsel erfolgt? (vgl. auch Juli2003 Aufgabe 1 e)
wenn man auf eine Seite zugreift die nicht im Speicher ist, muss diese eingelagert werden => Prozess wird
blockiert => es wird neu geschedult
es gibt zwei Moeglichkeiten: entweder es wird auf einen anderen Prozess umgeschaltet oder der
Prozessor geht in den Idle-Zustand weil es keinen lauffaehigen Prozess gibt.
- Wie hängen (Pseudo-)Terminal bzw. der TTY – Treiber mit
Prozessen und somit mit Signalen und Jobkontrolle zusammen? Ich
war bisher der Meinung, dass diese beiden ausschließlich mit den
Systemaufrufen wie sigaction, wait, usw. zu tun haben.
Der Terminaltreiber loest (wenn er in den Canonical Mode eingestellt ist) bei bestimmten Zeichen wie
CTRL-C Signale an alle Prozesse, die sich in der dem Treiber gerade zugeordneten Prozessgruppe
befinden, aus. CTRL-C bewirkt SIGINT, CTRL-Z bewirkt SIGTSTP - und ist damit die Grundlage fuer Jobkontrolle.
Welches Zeichen welches Signal ausloest ist im Treiber einstellbar.
- Bei der Syntax von Makefiles ist mir die Bedeutung von $< nicht
ganz klar. Laut Übungsskript bezeichnet es Abhängigkeiten in
impliziten Regeln. Was sind dabei dann implizite Regeln (etwa
nur Suffixregeln)?
Ja.
also
.c.o:
cc -c $<
wenn diese Regel auf die Erzeugung von test.o angewendet wird, dann ist $< = test.c
Bei den Segmentselektoren beim Pentium (bei der Adressierung,
Gates, usw.) ist mir nicht klar woher bzw. wie der
Segmentselektor bestimmt wird. Die log. Adresse ergibt sich,
wenn ich das richtig verstanden habe ja aus dem Zugriff des
Prozesses innerhalb seines Adressraums, aber wie wird der
Segmentselektor bestimmt?Außerdem bin ich mir auch nicht sicher, ob ich das
Schutzkonzept, das hinter dem Pentiumbeispiel steht, verstanden
habe. Ist es richtig, dass dabei höherpriore Prozesse (z.B
Systemcalls mit Segmentselektoren für DS) zwar auf die
Datensegmente nicht aber auf Codesegmente niedrigerer Stufen
zugreifen dürfen und niedrigerpriore Prozesse (z.B.
Benutzeranwendungen mit Sprüngen in CS oder Gates) auf Code-
nicht aber auf Datensegmente der höheren Stufen zugreifen dürfen?Handelt es sich beim TLB um eine in Hardware realisierte
Umsetzeinheit für die Abbildung log. Adressen oder ist er
einfach als „Tabelle“ Teil des normalen Arbeitsspeichers?
In Hardware realisiert mit voll-assoziativem Zugriff (d.h. die Seitennummer wird als Suchmuster angelegt
und die Hardware sucht parallel in allen Zeilen nach dem Muster und legt am Ausgang den Treffer an).
wegen 4 und 5 meld’ ich mich morgen nochmal.
Aber Pentium-Details sind nicht klausurrelevant!