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
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Monitor
Service Desk
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
Philip Kaluđerčić
sp-quiz
Commits
c6d1b6e1
Verified
Commit
c6d1b6e1
authored
1 year ago
by
Maximilian
Browse files
Options
Downloads
Patches
Plain Diff
More questions for ss22
parent
e6138024
No related branches found
No related tags found
1 merge request
!10
Mehr Fragen + gen.pl-Erweiterungen
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
ss22.q
+62
-0
62 additions, 0 deletions
ss22.q
with
62 additions
and
0 deletions
ss22.q
+
62
−
0
View file @
c6d1b6e1
...
...
@@ -62,5 +62,67 @@
der
Ausf
ü
hrung
auftreten
,
bspw.
wenn
je
nach
Rechenarchitektur
ein
[
`syscall`
](
https
://
www.felixcloutier.com
/
x86
/
syscall
)
(
x86_64
)
Befehl
ausgef
ü
hrt
wird.
.
0
Welche
Aussage
zum
Thema
Systemaufrufe
ist
richtig
?
-
Durch
die
Bereitstellung
von
Systemaufrufen
,
kann
ein
Benutzerprogramm
das
Betriebssystem
um
eigene
Funktionen
erweitern.
Nein
,
Systemaufrufe
sind
die
Schnittstelle
,
die
das
Betriebssystem
Benutzerprozessen
zur
Verf
ü
gung
stellt.
Benutzerprozesse
k
ö
nnen
(
u.
a.
aus
Sicherheitsgr
ü
nden
)
das
Betriebssystem
nicht
in
dieser
Hinsicht
ver
ä
ndern.
+
Mit
Hilfe
von
Systemaufrufen
kann
ein
Benutzerprogramm
privilegierte
Operationen
durch
das
Betriebssystem
ausf
ü
hren
lassen
,
die
es
im
normalen
Ablauf
nicht
selbst
ausf
ü
hren
d
ü
rfte.
Ja
,
m
ö
chte
ein
Programm
z.
B.
eine
Datei
lesen
,
so
sendet
es
nicht
selbst
z.
B.
NVMe
-
Befehle
an
den
Speicher
(
privilegierte
Operation
,
k
ö
nnte
zum
Verlust
aller
Daten
f
ü
hren
)
,
sondern
beauftragt
das
Betriebssystem
(
im
Fall
von
POSIX
mit
`read
(
2
)
`
)
,
den
Dateiinhalt
zu
lesen.
-
Die
Bearbeitung
eines
Systemaufrufs
findet
immer
im
selben
Adressraum
statt
,
aus
dem
heraus
der
Systemaufruf
abgesetzt
wurde.
Nein
,
bei
der
Bearbeitung
eines
Systemaufrufs
im
Systemkern
(
*
kernel
*
)
ist
der
*
kernel
address
space
*,
der
nicht
f
ü
r
Benutzerprozesse
sichtbar
ist
,
verf
ü
gbar.
-
Benutzerprogramme
d
ü
rfen
keine
Systemaufrufe
absetzen
,
diese
sind
dem
Betriebssystem
vorbehalten.
Nein
,
Benutzerprozesse
verwenden
Systemaufrufe
,
um
Operationen
auszuf
ü
hren
,
f
ü
r
die
sie
selbst
nicht
die
Privilegien
besitzen.
.
0
Bei
der
Behandlung
von
Ausnahmen
(
Traps
oder
Interrupts
)
unterscheidet
man
zwei
Bearbeitungsmodelle.
Welche
Aussage
hierzu
ist
richtig
?
-
Nach
dem
Beendigungsmodell
werden
Interrupts
bearbeitet.
Gibt
man
z.
B.
CTRL
-
C
unter
UNIX
ü
ber
die
Tastatur
ein
,
wird
ein
Interrupt
-
Signal
an
den
gerade
laufenden
Prozess
gesendet
und
dieser
dadurch
beendet.
Nein
,
der
Interrupt
wird
vom
Betriebssystem
abgefangen.
Dieses
kann
dann
dem
Prozess
,
der
gerade
das
aktuelle
Terminal
belegt
,
ein
Signal
zustellen.
Dieser
muss
jedoch
nicht
unbedingt
der
gerade
laufende
Prozess
sein
(
Auch
Hintergrundprozesse
(
*
daemons
*
)
k
ö
nnen
sich
im
Zustand
"laufend"
befinden
)
.
-
Das
Beendigungsmodell
sieht
das
Herunterfahren
des
Betriebssystems
im
Falle
eines
schwerwiegenden
Fehlers
vor.
Nein.
Es
reicht
aus
,
nur
den
problematischen
Prozess
zu
beenden.
Das
hier
beschriebene
Herunterfahren
w
ü
rde
die
Robustheit
eines
Betriebssystems
senken.
+
Das
Wiederaufnahmemodell
ist
f
ü
r
Interrupts
und
Traps
gleicherma
ß
en
geeignet.
Ja.
Auch
bei
Traps
wie
z.
B.
einem
Seitenfehler
,
bei
dem
ein
Prozess
auf
eine
Seite
zugreift
,
die
gerade
ausgelagert
ist
(
*
swapping
*
)
,
ist
das
Weiterlaufen
des
Prozesses
,
nachdem
die
Seite
wieder
eingelagert
wurde
,
sinnvoll.
-
Interrupts
sollten
nach
dem
Beendigungsmodell
behandelt
werden
,
weil
ein
Zusammenhang
zwischen
dem
unterbrochenen
Prozess
und
dem
Grund
des
Interrupts
bestehen
kann.
Nein
,
Interrupts
sind
unvorhersagbare
Ereignisse
wie
z.
B.
das
Eingehen
eines
Netzwerkpaketes
oder
das
Dr
ü
cken
einer
Taste
auf
der
Tastatur.
Der
aktuell
laufende
Prozess
sollte
i.
A.
nicht
wegen
einem
derartigen
Ereignis
beendet
werden
,
da
dieser
nicht
unbedingt
einen
Bezug
zu
einer
derartigen
Eingabe
hat.
.
0
Welche
Aussage
zum
Thema
Programme
und
Prozesse
ist
richtig
?
+
Ein
Programm
kann
durch
mehrere
Prozesse
gleichzeitig
ausgef
ü
hrt
werden
Ja
,
teste
z.
B.
`sleep
5
&
sleep
5
`.
Hier
wird
das
Programm
`sleep`
gleichzeitig
ausgef
ü
hrt
,
weswegen
dieser
Befehl
nur
5
Sekunden
(
statt
10
)
ben
ö
tigt.
-
In
einem
Prozess
kann
immer
nur
ein
Programm
ausgef
ü
hrt
werden.
Nein
,
auf
POSIX
kann
mit
`exec
(
3
)
`
ein
Prozess
zu
einem
anderen
Programm
wechseln.
-
Ein
Prozess
kann
gleichzeitig
mehrere
verschiedene
Programme
ausf
ü
hren.
Nein
,
ein
Prozess
ist
*
ein
*
Programm
in
Ausf
ü
hrung.
Es
kann
zwar
zu
einem
anderen
Programm
gewechselt
werden
,
m
ö
chte
man
jedoch
nebenl
ä
ufig
ein
anderes
Programm
ausf
ü
hren
,
muss
man
einen
neuen
Prozess
erzeugen
(
`fork
(
3
)
+
exec
(
3
)
`
oder
`posix_spawn
(
3
)
`
)
-
Der
Compiler
erzeugt
aus
mehreren
Programmteilen
(
Module
)
einen
Prozess.
Nein.
Einerseits
erzeugt
der
Compiler
Objektdateien
,
die
der
Linker
zu
einem
Programm
bindet
,
andererseits
wird
ein
Prozess
weder
vom
Compiler
noch
vom
Linker
,
sondern
vom
Betriebssystem
zur
Laufzeit
erzeugt.
.
0
Ein
laufender
Prozess
wird
in
den
Zustand
bereit
ü
berf
ü
hrt.
Welche
Aussage
passt
zu
diesem
Vorgang
?
-
Es
ist
kein
direkter
Ü
bergang
von
laufend
nach
bereit
m
ö
glich.
Nein.
+
Der
Prozess
wird
durch
einen
anderen
Prozess
verdr
ä
ngt
,
oder
gibt
die
CPU
freiwillig
ab.
Ja
,
der
Prozess
k
ö
nnte
noch
weiterrechnen
,
ist
also
*
bereit
*.
-
Der
Prozess
wartet
auf
Daten
von
der
Festplatte.
Nein
,
der
Prozess
ist
dann
*
blockiert
*,
bis
die
Daten
gelesen
sind.
-
Der
Prozess
wartet
mit
dem
Systemaufruf
waitpid
(
3
)
auf
die
Beendigung
eines
anderen
Prozesses.
Nein
,
der
Prozess
ist
dann
*
blockiert
*,
bis
der
andere
Prozess
beendet
ist.
Eine
Ausnahme
k
ö
nnte
hier
der
Aufruf
mit
dem
Parameter
`WNOHANG`
darstellen
,
mit
welchem
der
Systemaufruf
sofort
zur
ü
ckgibt.
.
0
Welche
Seitennummer
und
welcher
Offset
geh
ö
ren
bei
einstufiger
Seitennummerierung
und
einer
Seitengr
öß
e
von
1024
(
=
2
¹⁰
)
Bytes
zu
folgender
logischer
Adresse
:
0x0802
?
+
Seitennummer
0x2
,
Offset
0x2
Ja
,
`0x0802
=
0b
0000
10
|
00
0000
0010
`
also
ist
die
Seitennummer
`0b0000
10
=
0x2
`
und
der
Offset
`0b00
0000
0010
=
0x2
`
-
Seitennummer
0x8
,
Offset
0x8
Nein.
Hier
sind
beide
falsch.
-
Seitennummer
0x2
,
Offset
0x8
Nein.
Hier
ist
der
Offset
offensichtlich
falsch.
-
Seitennummer
0x8
,
Offset
0x2
Nein.
Da
hier
der
Offset
10
Bit
und
kein
Vielfaches
von
4
hat
,
darf
man
nicht
einfach
die
Hexadezimaldarstellung
an
der
Grenze
eines
*
nibbles
*
(
=
Halbbyte
,
4
Bit
,
ein
Zeichen
in
Hexadezimaldarsetllung
)
zerlegen.
.
0
Welche
Aussage
zu
UNIX
/
Linux
-
Dateideskriptoren
ist
korrekt
?
+
-
-
Der
Dateideskriptor
enth
ä
lt
die
n
ö
tigen
Metadaten
einer
Datei
und
ist
auf
der
Festplatte
gespeichert.
-
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