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
947c22fd
Verified
Commit
947c22fd
authored
1 year ago
by
Maximilian
Browse files
Options
Downloads
Patches
Plain Diff
Add more questions
parent
53629eed
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
ws22.q
+57
-2
57 additions, 2 deletions
ws22.q
with
57 additions
and
2 deletions
ws22.q
+
57
−
2
View file @
947c22fd
...
...
@@ -77,7 +77,7 @@
Nein
,
bspw.
wenn
man
versucht
auf
nicht
lesbaren
Speicher
versucht
zuzugreifen
,
muss
es
abgebrochen
werden
,
bevor
auf
den
Speicher
zuggegriffen
wurde.
+
Die
CPU
sichert
bei
einem
Interrupt
einen
Teil
des
Prozessorzustands.
Ja
,
genau
wie
bei
einer
Signal
-
Behandlung
unterbricht
ein
Interrupt
...
...
@@ -95,7 +95,7 @@
Nebenl
ä
ufigkeit
welche
Probleme
bereitet.
?
Wenn
ein
Interrupt
ein
schwerwiegendes
Ereignis
signalisiert
,
wird
das
unterbrochene
Programm
im
Rahmen
der
Interruptbearbeitung
immer
abgebrochen.
-
Ein
Systemaufruf
im
Anwendungsprogramm
ist
der
Kategorie
Interrupt
zuzuordnen.
Nein
,
weil
diese
deterministisch
immer
dann
auftreten
,
wenn
ein
Programm
ein
Systemaufruf
absetzen
will.
...
...
@@ -163,3 +163,58 @@
-
Die
Position
der
Seite
im
virtuellen
Adressraum.
Nein
,
diese
Zuordnung
findet
nicht
im
Seitendeskriptor
statt
,
sondern
im
Betriebsystem.
.
0
Welche
Aussage
zum
Thema
Adressraumverwaltung
ist
richtig
?
(
Februar
2022
)
+
Ein
Speicherbereich
,
der
mit
Hilfe
der
Funktion
free
()
freigegeben
wurde
,
verbleibt
im
logischen
Adressraum
des
zugeh
ö
rigen
Prozesses.
Ja.
Der
**
logische
**
Adressraum
A
ₗ
=
[
n
,
m
]
ist
der
gesamte
Adressbereich
ohne
L
ü
cken
,
der
einem
Prozess
zugeordnet
wird.
Dieser
wird
im
allgemeinen
nicht
verkleinert
,
wenn
`free`
aufgerufen
wird.
Im
Gegensatz
dazu
ist
der
virtuelle
Adressraum
A
ᵥ
jener
,
der
nur
partiell
auf
den
Hauptspeicher
abgebildet
wird
,
bei
dem
also
Adressen
ung
ü
ltig
sein
k
ö
nnen.
(
vgl.
SP1
B
Vl.
2
S.
12
ff.
,
27
)
(
Bin
mir
hier
nicht
zu
100
%
sicher
,
dass
meine
Interpretation
korrekt
ist
)
-
Mit
malloc
()
angeforderter
Speicher
,
welcher
vor
Programmende
nicht
freigegeben
wurde
,
kann
vom
Betriebssystem
nicht
mehr
an
andere
Prozesse
herausgegeben
werden
und
ist
damit
bis
zum
Neustart
des
Systems
verloren.
Nein
,
nach
dem
Ende
des
Programms
wird
der
gesamte
Adressbereich
des
Prozesses
freigegeben.
-
Mit
Hilfe
des
Systemaufrufes
malloc
()
kann
ein
Programm
zus
ä
tzliche
Speicherbl
ö
cke
von
sehr
feink
ö
rniger
Struktur
vom
Betriebssystem
anfordern.
Nein
,
die
Laufzeitumgebung
(
*
libc
*
)
fordert
den
Speicher
grobgranular
vom
Betriebssystem
an
(
`mmap
(
2
)
,
brk
(
2
)
`
)
und
verteilt
diesen
im
Benutzerprozess.
-
Da
das
Laufzeitsystem
auf
die
Betriebssystemschnittstelle
zur
Speicherverwaltung
zur
ü
ckgreift
,
ist
die
Granularit
ä
t
der
von
malloc
()
zur
ü
ckgegebenen
Speicherbl
ö
cke
vom
Betriebssystem
vorgegeben.
Nein
,
`malloc`
kann
als
Teil
des
Laufzeitsystems
den
grobgranular
vom
Betriebssystem
angeforderten
Speicher
feingranular
zur
ü
ckgeben.
.
0
Sie
kennen
den
Translation
-
Lookaside
-
Buffer
(
TLB
)
.
Welche
Aussage
ist
richtig
?
(
Februar
2022
)
-
Der
TLB
puffert
die
Ergebnisse
der
Abbildung
von
physikalische
auf
logische
Adressen
,
sodass
eine
erneute
Anfrage
sofort
beantwortet
werden
kann.
Nein
,
andersherum.
Logische
m
ü
ssen
in
physikalische
Adressen
ü
bersetzt
werden.
+
Ver
ä
ndert
sich
die
Speicherabbildung
von
logischen
auf
physikalische
Addressen
aufgrund
einer
Adressraumumschaltung
,
so
werden
auch
die
Daten
im
TLB
ung
ü
ltig.
Ja
,
da
die
Eintr
ä
ge
im
TLB
beziehen
sich
auf
einen
bestimmten
logischen
Adressraum.
-
Wird
eine
Speicherabbildung
im
TLB
nicht
gefunden
,
wird
vom
Prozessor
immer
eine
Ausnahme
(
*
Trap
*
)
ausgel
ö
st
die
vom
Betriebssystem
behandelt
wird.
Nein
,
ist
kein
Eintrag
im
TLB
zu
finden
,
wird
die
Addresse
von
der
MMU
aufgel
ö
st.
PS
:
Die
Verwendung
von
*
Trap
*
w
ä
re
hier
im
Gegensatz
zu
*
Interrupt
*
korrekt.
-
Wird
eine
Speicherabbildung
im
TLB
nicht
gefunden
,
wird
der
auf
den
Speicher
zugreifende
Prozess
mit
einer
Schutzraumverletzung
(
Segmentation
Fault
)
abgebrochen.
Nein
,
ist
kein
Eintrag
im
TLB
zu
finden
,
wird
die
Addresse
von
der
MMU
aufgel
ö
st.
Der
TLB
agiert
nur
als
*
cache
*
f
ü
r
Adress
ü
bersetzungen.
.
0
Welche
Aussage
zu
den
verschiedenen
Gewichtsklassen
von
Prozessen
trifft
zu
?
(
Februar
2022
)
-
Schwergewichtige
Prozesse
sind
die
einzige
Klasse
von
Prozessen
,
die
auf
einem
Multiprozessorsystem
echt
parallel
ausgef
ü
hrt
werden
kann
,
da
nur
hier
jeder
Benutzerfaden
einem
eigenen
Kernfaden
zugeordnet
ist.
Nein.
Auch
leichtgewichtigen
Prozessen
(
*
kernel
-
level
threads
*
)
ist
ein
*
kernel
thread
*
zugeordnet.
+
Federgewichtige
Prozesse
(
*
user
-
level
threads
*
)
blockieren
sich
bei
blockierenden
Systemaufrufen
gegenseitig.
Ja
,
da
bei
federgewichtigen
Prozessen
mehrere
Prozesse
auf
einen
*
kernel
-
level
thread
*
gemultiplext
werden
,
wird
die
Ausf
ü
hrung
der
aller
federgewichtigen
Prozesse
blockiert
,
die
auf
einem
*
kernel
-
level
thread
*
ausgef
ü
hrt
werden
,
bis
dieser
wieder
bereit
ist.
-
Beim
Blockieren
eines
schwergewichtigen
Prozesses
werden
alle
anderen
schwergewichtigen
Prozesse
,
die
das
selbe
Progamm
ausf
ü
hren
,
ebenfalls
blockiert.
Nein.
Man
kann
mehrere
Prozesse
mit
dem
gleichen
Programm
ausf
ü
hren.
-
Zu
jedem
leichtgewichtigen
Prozess
(
*
kernel
-
level
thread
*
)
geh
ö
rt
ein
eigener
,
isolierter
Adressraum.
Falsch
,
das
w
ä
ren
schwergewichtige
Prozesse.
Leichtgewichtige
Prozesse
wie
`pthread`s
teilen
sich
einen
Adressraum.
.
0
Wie
wird
erkannt
,
dass
eine
Seite
eines
virtuellen
Adressraums
,
auf
die
ein
Maschinenbefehl
zugreift
,
gerade
ausgelagert
ist
?
(
Februar
2022
)
+
Im
Seitendeskriptor
wird
ein
spezielles
Bit
gef
ü
hrt
,
das
der
MMU
zeigt
,
ob
eine
Seite
eingelagert
ist
oder
nicht.
Falls
die
Seite
nicht
eingelagert
ist
,
l
ö
st
die
MMU
einen
Trap
aus.
Ja
,
die
*
page
descriptor
table
*
enth
ä
lt
f
ü
r
jede
Seite
ein
*
valid
*-
Bit.
Ist
dieses
nicht
gesetzt
,
so
wird
ein
*
Trap
*
ausgel
ö
st.
-
Im
Seitendeskriptor
steht
bei
ausgelagerten
Seiten
eine
Adresse
des
Hintergrundspeichers
und
der
Speichercontroller
leitet
den
Zugriff
auf
den
Hintergrundspeicher
um.
Nein
,
die
MMU
interagiert
nicht
mit
dem
Hintergrundspeicher.
-
Das
Betriebssystem
erkennt
die
ung
ü
ltige
Adresse
vor
Ausf
ü
hrung
des
Maschinenbefehls
und
lagert
die
Seite
zuerst
ein
bevor
ein
Trap
passiert.
Nein
,
das
Betriebssystem
ü
berpr
ü
ft
nicht
jede
Instruktion
vor
der
Ausf
ü
hrung.
(
vgl.
**
Teil
**
interpretation
)
-
Bei
Programmen
,
die
in
virtuellen
Adressr
ä
umen
ausgef
ü
hrt
werden
sollen
,
erzeugt
der
Compiler
speziellen
Code
,
der
vor
Betreten
einer
Seite
die
Anwesenheit
ü
berpr
ü
ft
und
ggf.
die
Einlagerung
veranlasst.
Nein
,
der
Compiler
f
ü
gt
nicht
in
jedes
Programm
eine
Implementation
der
Speicherverwaltung
ein.
.
0
Welche
der
folgenden
Aussagen
zum
Thema
Seitenfehler
(
*
Page
Fault
*
)
ist
richtig
?
(
Februar
2022
)
-
Wenn
der
gleiche
Seitenrahmen
in
zwei
verschiedenen
Seitendeskriptoren
eingetragen
wird
,
l
ö
st
dies
einen
Seitenfehler
aus
(
Gefahr
von
Zugriffskonflikten
!
)
.
Nein
,
das
w
ü
rde
z.
B.
zwischen
Prozessen
geteilten
Speicher
verhindern.
-
Ein
Seitenfehler
wird
ausgel
ö
st
,
wenn
der
Offset
in
einer
logischen
Adresse
gr
öß
er
als
die
L
ä
nge
der
Seite
ist.
Nein
,
dieser
Fall
kann
per
Definition
nicht
eintreten.
Seiten
haben
eine
Gr
öß
e
von
2
ⁿ
Byte
,
(
bei
x86
-
64
z.
B.
4
KiB
)
,
n
Byte
der
Adresse
werden
als
Offset
interpretiert.
Somit
ist
dieser
Fall
au
ß
erhalb
des
ü
berhaupt
darstellbaren
Wertebereichs
f
ü
r
den
Offset.
-
Ein
Seitenfehler
zieht
eine
Ausnahmebehandlung
nach
sich.
Diese
wird
dadurch
ausgel
ö
st
,
dass
die
MMU
das
Signal
SIGSEGV
an
den
aktuell
laufenden
Prozess
schickt.
Nein
,
ein
Seitenfehler
kann
auch
dadurch
ausgel
ö
st
werden
,
dass
z.
B.
auf
eine
ausgelagerte
Seite
zugegriffen
wird.
Diese
wird
dann
f
ü
r
den
Prozess
transparent
eingelagert.
+
Das
Auftreten
eines
Seitenfehlers
kann
dazu
f
ü
hren
,
dass
der
aktuell
laufende
Prozess
in
den
Zustand
beendet
ü
berf
ü
hrt
wird.
Ja
,
wenn
der
Prozess
auf
eine
ung
ü
ltige
Adresse
zugreift
,
also
insbesondere
auch
keine
Seite
eingelagert
werden
kann
und
das
entsprechende
Signal
nicht
abgefangen
wird
,
kann
er
terminiert
werden.
.
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