Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
sp-quiz
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Yannick Vollmer
sp-quiz
Commits
0856b2d2
Commit
0856b2d2
authored
1 year ago
by
Philip Kaluđerčić
Browse files
Options
Downloads
Patches
Plain Diff
Add questions and comments from 2016-02
parent
19e6f894
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ws15.q
+400
-0
400 additions, 0 deletions
ws15.q
with
400 additions
and
0 deletions
ws15.q
0 → 100644
+
400
−
0
View file @
0856b2d2
#
https
://
sys.cs.fau.de
/
extern
/
lehre
/
ws23
/
sp2
/
pruefung
/
klausuren
/
2015
w
-
SP
-
Klausur
-
www.pdf
0
(
2016
-
02
)
Wie
funktioniert
Adressraumschutz
durch
Eingrenzung
?
-
Der
Lader
positioniert
Programme
immer
so
im
Arbeitsspeicher
,
dass
|
unerlaubte
Adressen
mit
nicht
-
existierenden
physikalischen
|
Speicherbereichen
zusammenfallen.
Nein
,
das
ist
nicht
was
mit
"Eingrenzung"
gemeint
ist.
Ansonsten
w
ä
re
es
recht
umst
ä
ndlich
,
die
L
ü
cken
im
physikalischem
Speicher
welche
f
ü
r
Memory
-
Mapped
I
/
O
,
den
BIOS
,
PCI
,
etc.
f
ü
r
eine
dynamische
Anzahl
an
Prozessen
auszunutzen.
-
Begrenzungsregister
legen
einen
Adressbereich
im
logischen
|
Adressraum
fest
,
auf
den
alle
Speicherzugriffe
beschr
ä
nkt
werden.
Nein
,
bei
Eingrenzung
ist
der
Addressbereich
im
physikalischen
Adressraum.
+
Begrenzungsregister
legen
einen
Adressbereich
im
physikalischen
|
Adressraum
fest
,
auf
den
alle
Speicherzugriffe
beschr
ä
nkt
werden.
Ja
,
Bei
Eingrenzung
,
bzw.
"Einfriedung"
wird
ein
Teil
des
physikalischen
Speichers
mittels
Grenzregistern
ü
berpr
ü
ft
,
noch
bevor
der
Addressbus
angeprochen
wird.
-
Jedes
Programm
bekommt
zur
Ladezeit
mehrere
Wertepaare
aus
Basis
-
|
und
L
ä
ngenregistern
zugeordnet
,
die
die
Gr
öß
e
aller
Segmente
des
|
darin
laufenden
Prozesses
festlegen.
Nein
,
das
umschreibt
Segmentierung.
.
0
(
2016
-
02
)
Ein
Prozess
wird
vom
Zustand
blockiert
in
den
Zustand
|
bereit
ü
berf
ü
hrt.
Welche
Aussage
passt
zu
diesem
Vorgang
?
+
Der
Prozess
hat
auf
das
Einlesen
von
Daten
von
der
Festplatte
|
gewartet
,
die
nun
verf
ü
gbar
sind.
Ja
,
die
Ressource
(
Daten
von
der
Festplatte
)
waren
nicht
verf
ü
gbar
,
und
waren
daher
Grund
weshalb
der
Prozess
im
Blokiertem
Zustand
war.
Man
geht
nicht
direkt
von
"Blokiert"
nach
"Laufend"
ü
ber
,
sondern
macht
den
Umweg
ü
ber
"Bereit"
,
d.h.
der
Prozess
ist
in
der
Bereitliste
vom
Scheduler
eingeordnet.
?
Ein
Prozess
,
der
zu
einem
fr
ü
heren
Zeitpunkt
aufgrund
von
|
Speichermangel
auf
den
Hintergrundspeicher
ausgelagert
wurde
,
ist
nun
|
wieder
eingelagert
und
kann
weiterlaufen.
Ich
glaube
das
sollte
falsch
sein
,
weil
ein
Prozess
_
als
solches_
nicht
_
aufgrund_
von
Speichermangel
in
den
Hintergrundspeicher
ausgelagert
wird.
-
Ein
anderer
Prozess
wurde
vom
Betriebssystem
verdr
ä
ngt
und
der
|
erstgenannte
Prozess
wird
nun
auf
der
CPU
eingelastet.
Nein
,
dieser
erstgennante
Prozess
w
ä
re
"Bereit"
gewesen
,
und
w
ü
rde
nun
im
Zustand
"Laufend"
sein.
Der
andere
Prozess
w
ä
re
den
Umgekehrten
weg
,
von
"Laufend"
nach
"Bereit"
ü
bergegangen
(
diesem
Fehlt
nichts
au
ß
er
die
CPU
)
.
-
Es
ist
kein
direkter
Ü
bergang
von
blockiert
nach
bereit
m
ö
glich.
Nein
,
es
ist
kein
Ü
berganz
von
"Blokiert"
nach
"Laufend"
m
ö
glich
,
aber
ein
blokierter
Prozess
kann
in
"Bereit"
ü
berf
ü
hrt
werden
,
sobal
der
Grund
f
ü
r
das
Blokiertsein
aufgel
ö
st
wurde.
.
0
(
2016
-
02
)
Wodurch
kann
es
zu
Seitenflattern
kommen
?
-
Wenn
die
Zahl
der
residenten
Seiten
die
Gr
öß
e
des
physikalischen
|
Speichers
ü
berschreitet.
Nein
,
in
diesem
Fall
w
ü
rde
es
nur
zu
einer
Auslagerung
von
Seiten
kommen
,
was
aber
nicht
zwingend
"Seitenflattern"
bedingen
w
ü
rde.
-
Durch
Programme
,
die
eine
Defragmentierung
auf
der
Platte
|
durchf
ü
hren.
Nein
,
Seitenflattern
bezeichnet
das
pathologische
Ph
ä
nomen
,
wenn
die
Seitenumlagerungsstrategie
eine
Menge
von
Seiten
zu
h
ä
ufig
Umlagern
muss
,
und
damit
den
Zugriff
auf
den
Speicher
verlangsamt.
Es
an
sich
hat
nichts
mit
dem
Dateisystem
zu
tun.
+
Wenn
ein
Prozess
zum
Weiterarbeiten
immer
gerade
die
Seiten
|
ben
ö
tigt
,
die
durch
das
Betriebssystem
im
Rahmen
einer
globalen
|
Ersetzungsstrategie
gerade
erst
ausgelagert
wurden.
Ja
,
das
ist
die
Definition
vom
Begriff.
Siehe
im
[
Wosch
Glossar
](
https
://
www4.cs.fau.de
/~
wosch
/
glossar.pdf
)
,
den
Eintrag
"Flattern"
.
-
Wenn
zu
viele
Prozesse
im
Rahmen
der
mittelfristigen
Einplanung
auf
|
den
Hintergrundspeicher
ausgelagert
wurden
(
swap
-
out
)
.
Nein
,
der
Begriff
ist
unabh
ä
ngig
von
der
Planungsstrategie
zu
verstehen.
.
0
(
2016
-
02
)
Man
unterscheidet
bei
Programmunterbrechungen
|
zwischen
Traps
und
Interrupts.
Welche
Aussage
dazu
ist
richtig
?
-
Die
Behandlung
eines
Traps
f
ü
hrt
immer
zur
Beendigung
des
|
unterbrochenen
Programms
,
da
Traps
nur
durch
schwerwiegende
Fehler
|
ausgel
ö
st
werden.
Nein
,
Traps
k
ö
nnen
auch
durch
Systemaufrufe
(
Quasi
-
Nachrichten
an
das
Betriebsystem
)
oder
durch
fehlende
aber
einlagerbare
Speicherseiten
ausgel
ö
st
werden.
-
Da
das
Betriebssystem
nicht
vorhersagen
kann
,
wann
ein
|
Benutzerprogramm
einen
Systemaufruf
absetzt
,
sind
Systemaufrufe
als
|
Interrupts
zu
klassifizieren.
Nein
,
Systemaufrufe
treten
immer
dann
deterministisch
auf
,
wenn
der
entsprechende
Maschinenbefehl
(
`syscall`
auf
,
`int`
auf
x86
,
`ecall`
of
RISC
-
V
)
.
+
Bei
der
mehrfachen
Ausf
ü
hrung
eines
unver
ä
nderten
Programms
mit
|
gleicher
Eingabe
treten
Traps
immer
an
den
gleichen
Stellen
auf.
Ja
,
das
folgt
aus
dem
Determinismus
von
Traps.
-
Da
Interrupts
in
keinem
Zusammenhang
mit
dem
unterbrochenen
Programm
|
stehen
,
muss
der
Prozessorstatus
des
unterbrochenen
Programms
|
w
ä
hrend
der
Behandlung
nicht
speziell
gesichert
werden.
Doch
,
weil
die
Behandlung
des
Interrupts
den
Prozessorstatus
durchaus
beeinflusst
,
und
damit
es
aber
das
unterbrochenen
Programm
nicht
direkt
ver
ä
ndert
(
es
braucht
ja
nur
f
ü
r
die
Behandlung
die
CPU
f
ü
r
eine
kurze
Zeit
)
,
wird
vor
der
Behandlung
der
Zustand
des
Prozessors
gespeichert
--
bspw.
in
dem
dieser
auf
dem
Stack
kopiert
wird
,
dann
die
Unterbrechungsroutine
eingeleitet
wird
,
und
danach
wiederhergestellt
wird.
.
0
(
2016
-
02
)
Namensr
ä
ume
dienen
u.
a.
der
Organisation
von
|
Dateisystemen.
Welche
Aussage
ist
richtig
?
-
Das
Arbeitsverzeichnis
eines
Prozesses
definiert
die
Wurzel
des
|
hierarchisch
organisierten
Namensraums
in
einem
Dateisystem.
Nein
,
die
Wurzel
des
Namensraums
ist
(
zun
ä
chst
,
siehe
`chroot
(
2
)
`
)
fest
und
unabh
ä
ngig
von
Prozessen
und
ihren
Arbeitsverzeichnissen.
+
In
einem
hierarchisch
organisierten
Namensraum
d
ü
rfen
gleiche
Namen
|
in
unterschiedlichen
Kontexten
enthalten
sein.
Ja
,
so
kann
es
sowohl
`
/
home
/
alice
/
shopping
`
und
`
/
home
/
bob
/
shopping
`
geben.
Nur
in
einem
Verzeichnis
darf
_
ein_
Name
_
einmal_
vergeben
werden.
?
Flache
Namensr
ä
ume
erlauben
pro
Benutzer
nur
einen
Kontext.
Ein
Benutzer
hat
immer
nur
einen
Kontext
,
unabh
ä
ngig
davon
ob
der
Namensraum
flach
ist
oder
nicht.
-
Hierarchische
Namensr
ä
ume
werden
erzeugt
,
indem
man
in
einem
Kontext
|
symbolische
Verweise
auf
Dateien
eintr
ä
gt.
Nein
,
hierarchische
Namensr
ä
ume
k
ö
nnen
auch
nur
von
Hardlinks
aufgespannt
werden
(
wie
es
der
Fall
war
bevor
BSD
diese
f
ü
r
UNIX
implementiert
hat
)
.
.
0
(
2016
-
02
)
Welche
Aussage
zu
Programmbibliotheken
ist
richtig
?
-
Statische
Bibliotheken
k
ö
nnen
in
C
nicht
implementiert
werden.
Doch
,
wir
k
ö
nnen
eiene
Menge
von
Obejktdateien
mit
`ar`
zu
einem
Archiv
zusammenbinden.
Das
war
historisch
auch
der
standard.
+
Eine
Ä
nderung
am
Code
einer
statischen
Bibliothek
(
z.
B.
Bugfixes
)
|
erfordert
kein
erneutes
Binden
der
Programme
,
die
diese
Bibliothek
|
benutzen.
Ja
,
weil
die
Bibliotheken
beim
Binden
des
Programms
eingebunden
werden
,
und
gleich
bleiben
wenn
das
Archiv
ge
ä
ndert
wird.
-
Eine
statische
Bibliothek
,
mit
der
ein
Programm
gebunden
wurde
,
muss
|
zum
Ladezeitpunkt
des
Programms
nicht
mehr
als
eigenst
ä
ndige
Datei
|
im
Dateisystem
vorhanden
sein.
Nein
,
weil
die
Inhalte
des
Archivs
wurden
beibem
Binden
des
Archivs
in
die
ausf
ü
hrbare
Datei
"kopiert"
,
und
werden
zur
ausf
ü
hrung
aus
der
ausf
ü
hrbaren
Datei
geladen
,
und
nicht
aus
dem
urspr
ü
nglichem
Archiv
,
was
daher
auch
nicht
mehr
existieren
muss.
-
Beim
Binden
mit
einer
statischen
Bibliothek
werden
in
einem
Programm
|
nur
Verweise
auf
verwendete
Symbole
der
Bibliothek
angelegt.
Nein
,
das
w
ä
re
dynamisches
Binden.
Beim
statischem
Binden
wird
der
gesammte
Programmtext
der
Bibilothek
im
Programm
kopiert.
.
0
(
2016
-
02
)
Welche
Seitennummer
und
welcher
Versatz
geh
ö
ren
bei
|
einstufiger
Seitennummerierung
und
einer
Seitengr
öß
e
von
2048
Bytes
zu
|
folgender
logischer
Adresse
:
`0xba1d`
+
Seitennummer
`0xb`
,
Versatz
`0xa1d`.
In
bin
ä
r
:
-
`0xba1d`
ist
0b
1011101000011101
-
`0xb`
ist
`0b1011`
-
`0xa1d`
ist
`0b101000011101`
Wenn
man
die
ersten
11
bit
abschneidet
(
weil
2
^
11
=
2048
)
,
sieht
man
wie
die
Addresse
zusammengesetzt
ist
:
~~~
1011101000011101
<-
Logische
Addresse
1011
<-
Page
Nummer
101000011101
<-
Page
Offset
~~~
-
Seitennummer
`0x17`
,
Versatz
`0x21d`.
-
Seitennummer
`0xba`
,
Versatz
`0x1d`.
-
Seitennummer
`0x2e`
,
Versatz
`0x21d`.
.
0
(
2016
-
02
)
Man
unterscheidet
die
Begriffe
Programm
und
|
Prozess.
Welche
der
folgenden
Aussagen
zu
diesem
Themengebiet
ist
|
richtig
?
-
Ein
Programm
kann
immer
nur
von
einem
Prozess
gleichzeitig
|
ausgef
ü
hrt
werden.
Nein
,
mehere
Prozessinstanzen
k
ö
nnen
das
gleiche
Programm
ausf
ü
hren
,
zumindest
auf
einem
UNIX
™
System
,
welches
keine
solchen
Einsch
ä
nkungen
vorsieht.
-
Das
Programm
ist
der
statische
Teil
(
Rechte
,
Speicher
,
etc.
)
,
der
|
Prozess
der
aktive
Teil
(
Programmz
ä
hler
,
Register
,
Stack
)
.
Nein
,
der
Speicher
ist
auch
"aktiv"
an
der
Ausf
ü
hrung
beteiligt
,
aber
ansonsten
ist
auch
die
Begriffsunterscheidung
hier
(
f
ü
r
mich
)
nicht
klar.
-
Wenn
ein
Programm
nur
einen
aktiven
Ablauf
enth
ä
lt
,
nennt
man
diesen
|
Prozess
,
enth
ä
lt
das
Programm
mehrere
Abl
ä
ufe
,
nennt
man
diese
|
Threads.
Nein
,
der
Begriff
"Threads"
(
F
ä
den
)
verstanden
als
"Leichtgewichtiger Prozess"
,
beschreibt
einen
Ausf
ü
hrungsstrang
,
welches
mit
anderen
Threads
_
in
einem
Prozess_
den
gleichen
Speicherraum
teil.
Jedenfalls
nennt
man
ein
Programm
weder
Prozess
oder
Threads
(
Kategorien
-
Fehler
)
,
sondern
ein
Programm
wird
in
bzw.
von
einem
Prozess
oder
in
einem
Thread
ausgef
ü
hrt.
+
Ein
Prozess
ist
ein
Programm
in
Ausf
ü
hrung
-
ein
Prozess
kann
aber
|
w
ä
hrend
seiner
Lebenszeit
auch
mehrere
verschiedene
Programme
|
ausf
ü
hren.
Ja
,
das
ist
die
Definition.
Ein
Prozess
kann
sein
Programm
mitttels
eines
`exec`
Systemaufrufs
auswechseln.
.
1
(
2016
-
02
)
Welche
der
folgenden
Aussagen
zum
Thema
|
Seiteneinlagerungs
-
und
Seitenersetzungsstrategien
ist
richtig
?
+
Die
Ersetzungsstrategie
MIN
ist
in
der
Praxis
nur
schwer
|
realisierbar
,
weil
Wissen
ü
ber
das
zuk
ü
nftige
Verhalten
des
|
Gesamtsystems
notwendig
ist.
Ja
,
MIN
(
oder
"B0"
,
"OPT"
)
m
ü
sste
die
Referenzfolge
zuvor
wissen
;
der
Ansatz
ist
"meist nur zum Vergleich von Strategien brauchbar"
.
+
Bei
der
Verwendung
von
globalen
Seitenersetzungsstrategien
sind
|
Seitenfehler
vorhersagbar
bzw.
reproduzierbar.
Nein
,
weil
bei
einer
globalen
Ersetzungsstrategie
verh
ä
llt
sich
ein
Seitenfehler
wie
ein
_
Interrupt_
,
weil
es
nicht
direkt
vorhersehbar
ist
anhand
vom
Verhalten
des
eigenen
Programms.
-
Mit
dem
Systemaufruf
`free
()
`
kann
eine
Speicherseite
in
den
|
Freiseitenpuffer
eingef
ü
gt
werden.
Nein
,
mit
`free
()
`
wird
im
_
Freispeicher_
ein
reservierte
Speicherbereich
zur
ü
ck
gegeben.
Es
ist
dar
ü
ber
hinaus
kein
Systemaufruf
,
sondern
verwaltet
Speicher
im
Userspace.
+
Die
Ersetzungsstrategie
LRU
ersetzt
die
am
l
ä
ngsten
nicht
mehr
|
referenzierte
Seite.
Ja
,
da
Akronym
LRU
--
_
Least
Recently
Used_
--
deutet
darauf
hin.
-
Bei
der
Verwendung
von
lokalen
Seitenersetzungsstrategien
sind
|
Seitenfehler
vorhersagbar
bzw.
reproduzierbar.
Ja
,
weil
bei
einer
lokalen
Ersetzungsstrategie
ist
ein
Seitenfehler
ein
_
Trap_.
-
Die
Ersetzungsstrategie
LRU
ben
ö
tigt
im
Vergleich
zu
FIFO
immer
|
weniger
Versuche
,
bis
eine
zu
ersetzende
Seite
gefunden
werden
kann.
Nein
,
FIFO
(
_
First
In
,
First
Out_
)
kann
immer
gleich
bestimmen
welche
Seite
zu
ersetzen
ist
,
w
ä
hrend
man
bei
LRU
(
_
Least
Recently
Used_
)
erst
berechnen
m
ü
sste
welche
Seite
am
l
ä
ngsten
nicht
benutzt
wurde.
-
Lokale
Seitenersetzungsstrategien
w
ä
hlen
die
zu
ersetzende
Seite
|
immer
aus
der
Menge
aller
im
System
verf
ü
gbaren
Seitenrahmen
aus.
Nein
,
bei
einer
lokalen
Ersetzungsstrategien
,
ist
ein
Prozess
selbst
daf
ü
r
verantwortlich
seine
eigenen
Seiten
zu
ersetzen.
+
Bei
der
Ersetzungsstrategie
LFU
wird
die
am
seltensten
referenzierte
|
Seite
aus
dem
Speicher
verdr
ä
ngt.
Ja
,
das
Akronym
--
_
Least
Frequently
Used_
--
deutet
darauf
hin.
.
1
(
2016
-
02
)
Welche
der
folgenden
Aussagen
zum
Thema
Synchronisation
|
sind
richtig
?
-
Ein
Mutex
kann
ausschlie
ß
lich
f
ü
r
einseitige
Synchronisation
|
verwendet
werden.
Nein
,
ein
Mutex
kann
auch
zur
mehrseitigen
synchronisation
bei
assymetrischer
Nebenl
ä
ufigkeit
dienen
(
die
_
Mutual
Exclusion_
,
welche
mit
einem
"Mut Ex"
umgesetzt
wird
,
wird
eben
oft
dazu
benutzt
um
andere
Handlungsstr
ä
nge
davon
abzuhalten
,
einen
kritischen
Abschnitt
zu
betreten
,
wo
man
unter
der
Annahme
arbeiten
will
,
dass
keine
Wettlaufsituationen
auftreten
k
ö
nnen
)
.
-
Der
Einsatz
von
nicht
-
blockierenden
Synchronisationsmechanismen
kann
|
zu
Verklemmungen
(
dead
-
locks
)
f
ü
hren.
Nein
,
ein
Dead
-
Lock
setzt
voraus
,
dass
ein
Faden
blockiert
werden
kann
,
bspw.
durch
ein
Mutex
oder
eine
Semaphore
,
was
aber
nicht
der
Fall
ist
bei
nicht
-
blockierender
Syncrhonisation
,
dessen
Ansatz
darauf
basiert
atomare
Befehle
zu
verwenden
,
um
transaktional
kritische
Operationen
auszuf
ü
hren.
Bemerke
aber
,
dass
es
dennoch
zu
einem
Live
-
Lock
,
oder
einem
effektivem
Live
-
Lock
kommen
kann
,
weil
Nicht
-
Blockierende
synchronisation
,
nicht
bedeutet
,
dass
der
Ansatz
Wartefrei
/
Sperrfrei
/
Behinderunfsfrei
sein
muss.
+
Die
V
-
Operation
kann
auf
einem
Semaphor
auch
von
einem
Faden
|
aufgerufen
werden
,
der
zuvor
keine
P
-
Operation
auf
dem
selben
|
Semaphor
ausgef
ü
hrt
hat.
Ja
,
im
Gegensatz
zu
einem
Mutex
ist
der
Benutzer
nicht
dazu
gezwungen
erst
die
Semaphore
zu
"sperren"
(
P
)
und
dannach
auf
dem
gleichen
Faden
wieder
"freizugeben"
(
V
)
.
-
Ein
Anwendungsprozess
muss
bei
der
Verwendung
von
Semaphoren
|
Interrupts
sperren
,
um
Probleme
durch
Nebenl
ä
u
fi
gkeit
zu
verhindern.
Nein
,
ein
Anwendungsprozess
kann
selbst
keine
interrupts
Sperren
,
und
unabh
ä
ngig
davon
ist
das
nicht
notwendig
,
da
Semaphoren
selbst
eine
Syncrhonisationsmittel
sind.
+
F
ü
r
nichtblockierende
Synchronisation
werden
spezielle
Befehle
der
|
Hardware
genutzt
,
die
wechselseitigen
Ausschluss
garantieren.
Ja
,
Operationen
wie
CAS
(
Compare
and
Swap
)
,
TAS
(
Test
and
Set
)
,
FFA
(
Fetch
and
Add
)
werden
bei
verschienden
Architekturen
auf
verschiedene
Befehle
abgebildet
,
welche
--
ohne
Betriebsystemunterst
ü
tzung
--
in
der
Lage
sind
die
meist
komplexen
Operationen
atomar
auszuf
ü
hren.
Siehe
Beispilesweise
auf
x86
[
`CMPXCHG`
](
https
://
c9x.me
/
x86
/
html
/
file_module_x86_id_41.html
)
,
[
`BTS`
](
https
://
c9x.me
/
x86
/
html
/
file_module_x86_id_25.html
)
oder
[
`XADD`
](
https
://
c9x.me
/
x86
/
html
/
file_module_x86_id_327.html
)
mit
dem
`LOCK`
prefix.
Auf
anderen
Architekturen
(
h
ä
ufig
RISC
-
artig
)
k
ö
nnen
diese
nachgebildet
werden
mittels
[
Load
-
link
/
store
-
conditional
](
https
://
en.wikipedia.org
/
wiki
/
Load
-
link
/
store
-
conditional
)
befehlen
(
siehe
Vorlesungsfolien
von
der
Vorlesung
[
Concurrent
Systems
](
https
://
www4.cs.fau.de
/
Lehre
/
WS19
/
V_CS
/
Vorlesung
/
folien
/
handout
/
5
-
elops.pdf
)
f
ü
r
mehr
zu
dem
Thema
)
.
+
Semaphore
k
ö
nnen
sowohl
f
ü
r
einseitige
als
auch
f
ü
r
mehrseitige
|
Synchronisation
verwendet
werden.
Ja.
Bei
einseitige
Synchronisation
kann
man
zwei
signalisierende
Semaphoren
benutzen
,
bei
mehrseitige
Synchronisation
ein
ausschlie
ß
ende
Semaphore.
-
Zur
Synchronisation
eines
kritischen
Abschnitts
ist
passives
Warten
|
immer
besser
geeignet
als
aktives
Warten.
Nein
,
allgemein
kann
man
das
nicht
sagen
,
weil
es
auch
davon
abh
ä
ngt
ob
man
ein
Betriebsystem
hat
,
oder
wie
lange
man
erwartet
zu
warten
,
wo
die
Kosten
von
passivem
Warten
ggf.
nicht
zu
vernachl
ä
ssigen
w
ä
ren.
+
Gibt
ein
Faden
einen
Mutex
frei
,
den
er
selbst
zuvor
nicht
|
angefordert
hatte
,
stellt
dies
einen
Programmierfehler
dar
;
der
|
fehlerhafte
Prozess
sollte
dann
abgebrochen
werden.
Ja
,
weil
das
die
beabsichtige
Verwendung
einer
Semaphore
verletzen
w
ü
rde
,
welches
eben
diese
Benutzung
vorraussetzt.
.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment