This commit is contained in:
David Schirrmeister 2024-06-17 10:30:56 +02:00
parent fd66c695fc
commit 5654a06633
4 changed files with 189 additions and 1 deletions

View File

@ -22,6 +22,7 @@
<toc-element topic="15_Bibliotheken.md"/> <toc-element topic="15_Bibliotheken.md"/>
<toc-element topic="16_Dateisysteme.md"/> <toc-element topic="16_Dateisysteme.md"/>
<toc-element topic="17_Plattenspeicherverwaltung.md"/> <toc-element topic="17_Plattenspeicherverwaltung.md"/>
<toc-element topic="Klausurthemen.md"/>
</toc-element> </toc-element>
<toc-element toc-title="OOAD"> <toc-element toc-title="OOAD">
<toc-element topic="IntroductionOOAD.md"/> <toc-element topic="IntroductionOOAD.md"/>

View File

@ -0,0 +1,63 @@
# Klausur
## Themenbereiche
- 4 Stück mit je 20 Punkten
1. Kernel
- Was ist ein Kernel
- Was für Varianten
- Warum ist das so
2. Prozesse
- Wie funktionieren die
- Wie sind sie aufgebaut
- Wer verwaltet sie
- Wie werden sie verwaltet
3. Interprozesskommunikation / Scheduling
- IPC
- Scheduling
- Was ist das
- Was macht das
4. Speicherverwaltung / Virtualisierung
- VM / Container
- Virtueller Speicher
- Wie funktioniert das
- Was macht Speicherverwaltung generell
- Konzepte
- Was wird da so gemacht
### Keine Spickzettel :/
## Kommt nicht dran
- Energieeffizienz
- Dateisysteme
- Plattenspeicherverwaltung
- Und alles was da oben nicht steht :)
## Altklausur WiSe 2324
**Aufgabe1:**
1. Beschreiben Sie Betriebssysteme
2. Grundlegende Funktionalitäten von Kernel
3. Unterschied von monolithische und minimale Kernel grafisch darstellen.
4. Grundsätzlich m.. Bottleneck von verschiedenen Betriebssystem Varianten
**Aufgabe2:**
1. Beschreiben Sie die Kontrollstruktur von Prozessen blah blah, Welche Informationen bekommt man blah blah
2. Unterschied zwischen Thread und Fork() im Zusammenhang mit nebenläufigen Programme
3. 8-Zustandsdiagramm von Linux
4. Beschreiben Sie die Funktion von Signalen im BS/Prozess?
**Aufgabe3:**
1. Beschreiben Sie Interkommunikation thingy
2. Nenne Sie 3 Methoden davon und beschreiben Sie diese
3. Beschreiben Sie die Funktionen von verdrängende und kooperative Scheduling
4. Warum Priorisierung Scheduling und Wie
**Aufgabe4:**
1. verschiedene Partionierungsverfahren beschreiben
2. Speicherabstraktion und funktion von Adressenräume
3. Paging erklären
4. Virtueller Speicherraum vs Container

View File

@ -175,7 +175,7 @@
- **Probleme** - **Probleme**
- Pattern löst zwei Probleme gleichzeitig - Pattern löst zwei Probleme gleichzeitig
- verletzt [SRP](SOLID-Principle.md#s-single-responsibility-principle-srp) - verletzt [SRP](SOLID-Principle.md#s-single-responsibility-principle-srp)
- Kann schlechtes Design verstecken (bspw. kein Loose Coupling) - Kann sychlechtes Design verstecken (bspw. kein Loose Coupling)
## Adapter Pattern ## Adapter Pattern

View File

@ -0,0 +1,124 @@
```plantuml
@startuml
class Subject <<abstract>>{
+ ~Subject()
+ attach(obersever: Observer*): void
+ detach(observer: Observer*): void
+ notify(): void
}
class Observer <<interface>>{
+ {abstract} update(): void
+ ~Observer()
}
class SystemBattery{
+ setBatteryLevel(data: int): void
+ getData(): int
- BatteryLevel: int
}
class BatteryApp{
+ BatteryApp(subject: SystemBattery&, name: string)
+ update(): void
- name: string
}
class BatteryLogger{
+ BatteryLogger(subject: SystemBattery&, name: string)
+ update(): void
- name: string
}
Subject <|-- SystemBattery
Observer <|-- BatteryApp
Observer <|-- BatteryLogger
SystemBattery "1" *- "*" BatteryApp: - subject: SystemBattery&
SystemBattery "1" *- "*" BatteryLogger: - subject: SystemBattery&
Subject "*" -o "*" Observer: - observers: list<Observer*>
@enduml
```
```mermaid
sequenceDiagram
actor human
activate human
create participant Main
human -)+ Main: <<create>>
Note over Main: create Observers and Subject
create participant SystemBattery as systemBattery: Subject
Main ->>+ SystemBattery: <<create>>
SystemBattery --)- Main: return
create participant Observer as batteryApp: Observer
Main ->>+ Observer: <<create>>(SystemBattery* = *systemBattery, name = "BatteryApp")
Observer->>+ SystemBattery: attach(this)
SystemBattery ->> SystemBattery: observers.push_back(batteryApp)
SystemBattery --)- Observer: return
Observer --)- Main: return
create participant Logger as batteryLogger: Observer
Main ->>+ Logger: <<create>>(SystemBattery* = *systemBattery, name = "BatteryLogger")
Logger->>+ SystemBattery: attach(this)
SystemBattery ->> SystemBattery: observers.push_back(batteryLogger)
SystemBattery --)- Logger: return
Logger --)- Main: return
Note over Main: Set BatteryLevel to 87
Main ->>+ SystemBattery: setBatteryLevel(data = 87)
activate SystemBattery
SystemBattery -->> SystemBattery: BatteryLevel = data
SystemBattery --) human: "New value 87
%% Loop for each observer
note over SystemBattery: update each Observer
SystemBattery ->>+ SystemBattery: notify()
SystemBattery ->>+ Observer: update()
Observer ->>+ SystemBattery: getData()
SystemBattery --)- Observer: return BatteryLevel
Observer -->> Observer: newValue = BatteryLevel
Observer --) human: "This is batteryApp! Received value 87"
Observer --)- SystemBattery: return
SystemBattery ->>+ Logger: update()
Logger ->>+ SystemBattery: getData()
SystemBattery --)- Logger: return BatteryLevel
Logger -->> Logger: newValue = BatteryLevel
Logger --) human: "TThis is batteryLogger! Received value 87! Will proceed to log value into file..."
Logger -->> Logger: log data into file
Logger --)- SystemBattery: return
%% end loop
deactivate SystemBattery
SystemBattery --)- Main: return
Note over Main: delete created Objects
Main --x Observer: <<delete>>
activate Observer
Observer ->>+ SystemBattery: detach(this)
SystemBattery ->> SystemBattery: overservers.remove(batteryApp)
deactivate Observer
destroy Observer
SystemBattery --)- Observer: return
Main --x Logger: <<delete>>
activate Logger
Logger ->>+ SystemBattery: detach(this)
SystemBattery ->> SystemBattery: overservers.remove(batteryLogger)
deactivate Logger
destroy Logger
SystemBattery --)- Logger: return
destroy SystemBattery
Main --x SystemBattery: <<delete>>
Main --)- human: return
destroy Main
human --x Main: <<destroy>>
deactivate human
```