diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/Betriebssysteme.iml b/.idea/Betriebssysteme.iml new file mode 100644 index 0000000..6102194 --- /dev/null +++ b/.idea/Betriebssysteme.iml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module type="EMPTY_MODULE" version="4"> + <component name="NewModuleRootManager"> + <content url="file://$MODULE_DIR$" /> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..8a21bcd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/.idea/Betriebssysteme.iml" filepath="$PROJECT_DIR$/.idea/Betriebssysteme.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/Writerside/c.list b/Writerside/c.list new file mode 100644 index 0000000..c4c77a2 --- /dev/null +++ b/Writerside/c.list @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE categories + SYSTEM "https://resources.jetbrains.com/writerside/1.0/categories.dtd"> +<categories> + <category id="wrs" name="Writerside documentation" order="1"/> +</categories> \ No newline at end of file diff --git a/Writerside/cfg/buildprofiles.xml b/Writerside/cfg/buildprofiles.xml new file mode 100644 index 0000000..e0e1a8f --- /dev/null +++ b/Writerside/cfg/buildprofiles.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<buildprofiles xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/build-profiles.xsd" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <variables></variables> + <build-profile instance="in"> + <variables> + <noindex-content>true</noindex-content> + </variables> + </build-profile> + +</buildprofiles> diff --git a/Writerside/images/completion_procedure.png b/Writerside/images/completion_procedure.png new file mode 100644 index 0000000..3535a3f Binary files /dev/null and b/Writerside/images/completion_procedure.png differ diff --git a/Writerside/images/completion_procedure_dark.png b/Writerside/images/completion_procedure_dark.png new file mode 100644 index 0000000..a65beb0 Binary files /dev/null and b/Writerside/images/completion_procedure_dark.png differ diff --git a/Writerside/images/convert_table_to_xml.png b/Writerside/images/convert_table_to_xml.png new file mode 100644 index 0000000..2518a64 Binary files /dev/null and b/Writerside/images/convert_table_to_xml.png differ diff --git a/Writerside/images/convert_table_to_xml_dark.png b/Writerside/images/convert_table_to_xml_dark.png new file mode 100644 index 0000000..4716122 Binary files /dev/null and b/Writerside/images/convert_table_to_xml_dark.png differ diff --git a/Writerside/images/image.png b/Writerside/images/image.png new file mode 100644 index 0000000..b74c3aa Binary files /dev/null and b/Writerside/images/image.png differ diff --git a/Writerside/images/image_1.png b/Writerside/images/image_1.png new file mode 100644 index 0000000..5d4dd28 Binary files /dev/null and b/Writerside/images/image_1.png differ diff --git a/Writerside/images/image_10.png b/Writerside/images/image_10.png new file mode 100644 index 0000000..3e170f9 Binary files /dev/null and b/Writerside/images/image_10.png differ diff --git a/Writerside/images/image_11.png b/Writerside/images/image_11.png new file mode 100644 index 0000000..6c77350 Binary files /dev/null and b/Writerside/images/image_11.png differ diff --git a/Writerside/images/image_12.png b/Writerside/images/image_12.png new file mode 100644 index 0000000..fe14e15 Binary files /dev/null and b/Writerside/images/image_12.png differ diff --git a/Writerside/images/image_13.png b/Writerside/images/image_13.png new file mode 100644 index 0000000..688d5b8 Binary files /dev/null and b/Writerside/images/image_13.png differ diff --git a/Writerside/images/image_14.png b/Writerside/images/image_14.png new file mode 100644 index 0000000..642f493 Binary files /dev/null and b/Writerside/images/image_14.png differ diff --git a/Writerside/images/image_2.png b/Writerside/images/image_2.png new file mode 100644 index 0000000..0233c79 Binary files /dev/null and b/Writerside/images/image_2.png differ diff --git a/Writerside/images/image_3.png b/Writerside/images/image_3.png new file mode 100644 index 0000000..ef8e77d Binary files /dev/null and b/Writerside/images/image_3.png differ diff --git a/Writerside/images/image_4.png b/Writerside/images/image_4.png new file mode 100644 index 0000000..712de6a Binary files /dev/null and b/Writerside/images/image_4.png differ diff --git a/Writerside/images/image_5.png b/Writerside/images/image_5.png new file mode 100644 index 0000000..5e989d5 Binary files /dev/null and b/Writerside/images/image_5.png differ diff --git a/Writerside/images/image_6.png b/Writerside/images/image_6.png new file mode 100644 index 0000000..161d5f3 Binary files /dev/null and b/Writerside/images/image_6.png differ diff --git a/Writerside/images/image_7.png b/Writerside/images/image_7.png new file mode 100644 index 0000000..97449f9 Binary files /dev/null and b/Writerside/images/image_7.png differ diff --git a/Writerside/images/image_8.png b/Writerside/images/image_8.png new file mode 100644 index 0000000..1e9ae90 Binary files /dev/null and b/Writerside/images/image_8.png differ diff --git a/Writerside/images/image_9.png b/Writerside/images/image_9.png new file mode 100644 index 0000000..572696e Binary files /dev/null and b/Writerside/images/image_9.png differ diff --git a/Writerside/images/new_topic_options.png b/Writerside/images/new_topic_options.png new file mode 100644 index 0000000..bc6abb6 Binary files /dev/null and b/Writerside/images/new_topic_options.png differ diff --git a/Writerside/images/new_topic_options_dark.png b/Writerside/images/new_topic_options_dark.png new file mode 100644 index 0000000..bf3e48d Binary files /dev/null and b/Writerside/images/new_topic_options_dark.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree new file mode 100644 index 0000000..bae2be8 --- /dev/null +++ b/Writerside/in.tree @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE instance-profile + SYSTEM "https://resources.jetbrains.com/writerside/1.0/product-profile.dtd"> + +<instance-profile id="in" + name="Instance Name" + start-page="prozesszustaende.md"> + + <toc-element topic="prozesszustaende.md"/> + <toc-element topic="prozessstruktur.md"/> +</instance-profile> \ No newline at end of file diff --git a/Writerside/topics/prozessstruktur.md b/Writerside/topics/prozessstruktur.md new file mode 100644 index 0000000..43f85d1 --- /dev/null +++ b/Writerside/topics/prozessstruktur.md @@ -0,0 +1,58 @@ +# Prozessstruktur + +## Prozessdarstellung +- Umfasst [_Zustände_](prozesszustaende.md) und _Struktur_ eines laufenden Programms + - Grundlegende Komponenten, die die _Speicherrepräsentation_ eines Prozesses vorhanden sein können + - Systemumgebung + - Stack + - Heap + - BSS (Block Started by Symbol) + - Datensegment + - Codesegment + -  + + + Beispiel: Terminalbefehl **- size** + -  + +## Prozesse im Speicher +-  +- Ablage im physischen Speicher erfolgt in nicht fortlaufender Weise durch den virtuellen Speicher + - nicht zwangsläufig ständig im Hauptspeicher + +## Erzeugung von Prozesskopien +- Systemaufruf **fork** unter Linux/Unix + - Erzeugung einer _identischen Kopie_ eines Prozesses + - aufrufender Prozess: _Elternprozess (Parent Process)_ + - neuer Prozess: _Kind-Prozess_ (Child Process) + - hat gleichen _Programmcode_ und _Befehlszähler_ + - verweist auf gleiche Zeile im Programmcode + - Speicherbereiche von Kind- und Elternprozess streng getrennt +-  + +## Erzeugung von neuen Prozessen +- Systemaufruf **exec** + - Ersetzt bestehenden Prozess durch einen anderen + - neuer Prozess erbt PID des aufrufenden Prozesses + -  + - Soll aus einem Prozess (_bspw. Kommandozeilen-Interpreter (Shell)_) heraus ein Programm gestartet werden: + - _fork_ -> _exec_ + -  + + +## Übersicht Erzeugung/Verkettung/Vergabelung + + + +## Beenden von Prozessen +Arten des Beendens: +- Normales Beenden (freiwillig, im Code definiert) +- Beenden aufgrund eines Fehlers (freiwillig, im Code definiert) +- Beenden aufgrund eines schwerwiegenden Fehlers (unfreiwillig, durch BS) +- Beenden durch einen anderen Prozess (unfreiwillig) + +Unix Befehl: **kill** erstellt einen Wrapper um BS-Aufruf _kilL()_ +- ist auf jedem Unix als alleinstehende Anwendung vorhanden (_/bin/kill_) + +## Zeitliche Ausführung von Prozessen +- \ No newline at end of file diff --git a/Writerside/topics/prozesszustaende.md b/Writerside/topics/prozesszustaende.md new file mode 100644 index 0000000..194d940 --- /dev/null +++ b/Writerside/topics/prozesszustaende.md @@ -0,0 +1,64 @@ +# Prozesszustände +- Bereit (Ready) +- Laufend (Running) +- Blockiert (Blocked) +- Beendet (Terminated) + +## 2-Zustands-Modell + + +Prozesse, die untätig werden, werden in einer Warteschlange gespeichert +- Wird nach Priorität / Wartezeit sortiert + + +#### Pro +- Einfach realisierbar + +#### Contra +- Annahme, dass Prozesse jederzeit zur Ausführung bereit sind + - Es gibt blockierte Prozesse + - Wartet auf Ein-/Ausgabe + - Wartet auf Ergebnis eines anderen Prozesses + - Wartet auf Reaktion eines Benutzers + +## 3-Zustands-Modell +### Ereignisbezogene Warteschlangen + +- Für jedes Ereignis, auf welches ein Prozess wartet, gibt es eine Warteschlange +- Tritt das Ereignis ein, werden alle Prozesse der WS in die WS mit den *ready* Prozessen überführt + + + +## 5-Zustands-Modell +Anzahl der ausführbaren Prozesse *limitieren*, um Speicher zu sparen +- Zwei weitere Zustände: + - **new (new)** + - Prozesse, deren PCB das Betriebssystem bereits erzeugt hat, aber noch nicht in der Warteschlange sind + - **beendet (exit)** + - Abgearbeitete oder abgebrochene Prozesse, deren PCB und Eintrag noch nicht aus der Prozesstabelle entfernt wurden + + + +## 6-Zustands-Modell +Falls nicht genügend physischer Hauptspeicher für alle Prozesse: +- **Auslagerungsspeicher (Swap)** + - Zustand: **suspendiert (suspended)** + - dadurch steht den Prozessen in den Zuständen _rechnend_ und _bereit_ mehr Hauptspeicher zur Verfügung + + + +## 7-Zustands-Modell + + +## Zustands-Modell von Linux +- ähnlich wie [7-Zustands-Modell](#7-zustands-modell) +- Zustand _rechnend_: + - **benutzer rechnend (user running)** + - Prozesse im Benutzermodus + - **kernel rechnend (kernel running)** + - Prozesse im Kernel-Modus +- Zustand _beendet (exit)_ = _Zombie_ + - ist fertig abgearbeitet + - Eintrag in der Prozesstabelle existiert noch bis Elternprozess den Rückgabewert abgefragt hat# + + \ No newline at end of file diff --git a/Writerside/v.list b/Writerside/v.list new file mode 100644 index 0000000..2d12cb3 --- /dev/null +++ b/Writerside/v.list @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE vars SYSTEM "https://resources.jetbrains.com/writerside/1.0/vars.dtd"> +<vars> + <var name="product" value="Writerside"/> +</vars> diff --git a/Writerside/writerside.cfg b/Writerside/writerside.cfg new file mode 100644 index 0000000..98e1435 --- /dev/null +++ b/Writerside/writerside.cfg @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ihp SYSTEM "https://resources.jetbrains.com/writerside/1.0/ihp.dtd"> + +<ihp version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://resources.jetbrains.com/writerside/1.0/writerside-cfg.xsd"> + <topics dir="topics"/> + <images dir="images" web-path="images"/> + <categories src="c.list"/> + <vars src="v.list"/> + <instance src="in.tree"/> +</ihp> \ No newline at end of file