Skip to content
Snippets Groups Projects
Commit e38a3863 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 2.6.2025

parent c9a9828a
No related branches found
No related tags found
No related merge requests found
File added
% bs-20250601.pdf - Lecture Slides on Operating Systems
% Copyright (C) 2014-2024, 2025 Peter Gerwinski
%
% This document is free software: you can redistribute it and/or
% modify it either under the terms of the Creative Commons
% Attribution-ShareAlike 3.0 License, or under the terms of the
% GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option)
% any later version.
%
% This document is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this document. If not, see <http://www.gnu.org/licenses/>.
%
% You should have received a copy of the Creative Commons
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Die Meltdown-Sicherheitslücke, Dateisysteme
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{tikz}
\title{Treiberentwicklung,\\[\medskipamount]Echtzeit- und Betriebssysteme}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{2.\ Juni 2025}
\begin{document}
\maketitleframe
\sectionnonumber{Treiberentwicklung, Echtzeit- und Betriebssysteme}
\begin{frame}
\showsectionnonumber
\begin{itemize}
\item[\textbf{1}] \textbf{Einführung}
\item[\textbf{2}] \textbf{Unix}
\item[\textbf{3}] \textbf{Treiberentwicklung}
\item[\textbf{4}] \textbf{Speicherverwaltung}
\begin{itemize}
\item[4.1] Mikrocontroller
\item[4.2] Speichersegmentierung
\color{orange}
\item[4.3] Speicherschutz (\emph{Protected Mode\/})
\item[4.4] Virtueller Speicher
\end{itemize}
\item[\textbf{5}] \textbf{Dateisysteme}
\vspace{-\smallskipamount}
\item[\textbf{\dots}]
\end{itemize}
\end{frame}
\setcounter{section}{3}
\section{Speicherverwaltung}
\subsection{Microcontroller}
\begin{frame}
\showsection
\showsubsection
Speicherverwaltung "`einfach so"'
\begin{itemize}
\item
PC erzeugt Speicher-Layout (z.\,B.\ Intel-\file{.hex}-Datei)
\item
Darin enthalten: Programm, Interrupt-Vektoren, \dots
\item
Aufspielen in den Flash-Speicher
\end{itemize}
\end{frame}
\subsection{Speichersegmentierung}
\begin{frame}[fragile]
\showsection
\showsubsection
Intel 8086: Segment- und Offset-Adresse
\begin{itemize}
\item
Beispiel: Speicherzelle \lstinline{28F5:0100}:
für das aktuelle Programm vorgesehen\\[0.7cm]
\begin{picture}(0,0)
\put(3.8,0.5){\makebox(0,0)[bl]{\tikz{\draw[-latex](0,0)--(0.2,0.5);}}}
\put(4.0,0.4){\makebox(0,0)[tr]{Segment}}
\put(5.2,0.5){\makebox(0,0)[br]{\tikz{\draw[-latex](0,0)--(-0.2,0.5);}}}
\put(5.0,0.4){\makebox(0,0)[tl]{Offset}}
\end{picture}
\item
Speicherzelle \lstinline{B800:0000}: Bildschirmspeicher (Textmodus)
\item
physikalische Adresse = $\text{\lstinline{0x10}}
\cdot \text{Segment} + \text{Offset}$, hier also: \lstinline{B8000}
\item
Speicher insgesamt: 5 Hex-Ziffern = 20 Bit für Speicher-Adressierung\\
\textarrow\ maximal 1\,MiB adressierbar
\item
"`Speicherschutz"': Das Betriebssystem weist jedem Programm
ein Segment zu (hier z.\,B.: \lstinline{28F5}).
Außerhalb davon \textcolor{bored}{sollte} man nicht schreiben.
\par\smallskip
(\textarrow\ effiziente Bildschirmausgabe: direkt in Segment \lstinline{B800} schreiben)
\end{itemize}
\end{frame}
\subsection{Speicherschutz (\emph{Protected Mode\/})}
\begin{frame}[fragile]
\showsection
\showsubsection
Intel 80286: Selektoren
\begin{itemize}
\item
Beispiel: Speicherzelle \lstinline{0007:0100}:
für das aktuelle Programm vorgesehen\\[0.7cm]
\begin{picture}(0,0)
\put(3.8,0.5){\makebox(0,0)[bl]{\tikz{\draw[-latex](0,0)--(0.2,0.5);}}}
\put(4.0,0.4){\makebox(0,0)[tr]{Selektor}}
\put(5.2,0.5){\makebox(0,0)[br]{\tikz{\draw[-latex](0,0)--(-0.2,0.5);}}}
\put(5.0,0.4){\makebox(0,0)[tl]{Offset}}
\end{picture}
\item
Selektor = Index für ein Array innerhalb des Prozessors:
\newterm{Deskriptorentabelle}
\par\smallskip
Segment-Deskriptor:
\begin{itemize}
\item
physikalische Adresse (z.\,B.: \lstinline{28F5}) des Segments
\item
Länge des Segments (maximal 64\,kiB)
\item
Zugriffsrechte: Lesen, Schreiben, Ausführen
\end{itemize}
\textarrow\ Programme gegeneinander absichern (mit Hardware-Unterstützung)
\item
In der Praxis (MS-DOS): \emph{kein\/} Speicherschutz, sondern:\\
Jedes Programm verwaltet die Deskriptorentabelle selbst.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsection
\showsubsection
Intel 80386: 32-Bit-Offsets
\begin{itemize}
\item
Beispiel: Speicherzelle \lstinline{0007:00000100}\\[0.7cm]
\begin{picture}(0,0)
\put(3.8,0.5){\makebox(0,0)[bl]{\tikz{\draw[-latex](0,0)--(0.2,0.5);}}}
\put(4.0,0.4){\makebox(0,0)[tr]{Selektor}}
\put(5.2,0.5){\makebox(0,0)[br]{\tikz{\draw[-latex](0,0)--(-0.2,0.5);}}}
\put(5.0,0.4){\makebox(0,0)[tl]{Offset}}
\end{picture}
\item
Selektor = Index für ein Array innerhalb des Prozessors:
\newterm{Deskriptorentabelle}
\par\smallskip
Segment-Deskriptor:
\begin{itemize}
\item
physikalische Adresse (z.\,B.: \lstinline{28F5}) des Segments
\item
Länge des Segments (maximal 4\,GiB)
\item
Zugriffsrechte: Lesen, Schreiben, Ausführen
\end{itemize}
\textarrow\ Programme gegeneinander absichern (mit Hardware-Unterstützung)
\item
MS-DOS und MS-Windows bis Version ME: \emph{kein\/} Speicherschutz, sondern:\\
Jedes Programm verwaltet die Deskriptorentabelle selbst.
\item
MS-Windows ab Version NT, OS/2, MacOS, Linux und andere Unixe:\\
Speicherschutz mit Hardware-Unterstützung
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsection
\showsubsection
Speicherschutz mit Hardware-Unterstützung
\begin{itemize}
\item
spezielle Variable ("`Register"') im Prozessor:\\
Berechtigungsstufe des aktuell laufenden Programms
\item
Benutzerprogramme dürfen Befehle zur Manipulation der Deskriptorentabelle
nicht ausführen. Dies darf nur der Betriebssystemkern.
\item
Speicherzugriffe außerhalb des zugewiesenen Segments
lösen eine \newterm{Exception\/} aus (ähnlich Interrupt).
Das Betriebssystem kann daraufhin das Programm kontrolliert
beenden ("`Speicherzugriffsfehler"').
\item
Das Betriebssystem kann Code als "`nicht ausführbar"' markieren.\\
Versuche, ihn auszuführen, lösen eine Exception aus.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsection
\showsubsection
Speicherschutz mit Hardware-Unterstützung
\par\smallskip
Beispiel: Puffer-Überlauf
\begin{itemize}
\item
Die Rücksprung-Adresse (auf dem Stack)\\
wird durch eine Variable (auf dem Stack) überschrieben
\arrowitem
Gezielter Sprung in die Variable hinein ist möglich.\\
offene Sicherheitslücke in alten Versionen von MS-Windows
\item
Lösung: Stack als "`nicht ausführbar"' markieren
% \pause
\arrowitem
Weiterhin möglich: \emph{return-oriented programming}
\end{itemize}
\end{frame}
\subsection{Virtueller Speicher}
\begin{frame}[fragile]
\showsection
\showsubsection
Hardware-Untersützung durch \newterm{Memory Management Unit (MMU)}
\begin{itemize}
\item
Unterteilung des Speichers in \newterm{Seiten\/}
(typischerweise: 4\,kiB)
\item
Zeiger: Zugriff auf \newterm{virtuellen Speicher}
\item
Tabelle innerhalb der MMU: Zuordnung der Seiten\\
zu physikalischem oder nicht zugeordnetem Speicher
\item
Anwendung: ausgelagerter Speicher, bei Zugriff: Exception\\
Betriebssystem kann ausgelagerte Seite bereitstellen
% \pause
\item
Weitere Anwendungen:
\begin{itemize}
\item
\newterm{Shared Memory}
\item
Datei in Speicher abbilden
\item
kontrollierter Direktzugriff auf Speicher
\end{itemize}
% \pause
\item
Hardware-Fehler können zu Sicherheitslücken führen,\\
z.\,B.\ \newterm{Meltdown\/} (2017)
\end{itemize}
\end{frame}
\section{Dateisysteme}
\begin{frame}
\showsection
MS-DOS und kompatible Systeme: FAT-Dateisysteme\\
"`kleinster gemeinsamer Nenner"'
\medskip
Unterteilung des Datenträgers in \newterm{Cluster}
\medskip
\newterm{File Allocation Table (FAT)}
\begin{itemize}
\item
Belegung der Cluster
\item
Dateien: verkettete Listen
\end{itemize}
\smallskip
Verzeichnisse
\begin{itemize}
\item
Dateiname
\item
Meta-Daten
\item
Start-Cluster
\end{itemize}
\smallskip
Besonderheiten
\begin{itemize}
\item
starke Fragmentierung
\item
Dateinamen: 8.3 + zusätzliche Einträge
\item
begrenztes Wurzelverzeichnis
\item
Zeit-Auflösung: 2 Sekunden
\end{itemize}
\end{frame}
\begin{frame}
\showsection
Unix-kompatible Dateisysteme: \newterm{Index Nodes (inodes)}
\medskip
Unterteilung des Datenträgers in \newterm{Blöcke}
\medskip
\newterm{Superblock}
\begin{itemize}
\item
Meta-Daten zum Datenträger
\item
Zeiger auf Wurzelverzeichnis
\end{itemize}
\smallskip
Verzeichnisse
\begin{itemize}
\item
Dateiname
\item
Zeiger auf inode
\end{itemize}
\smallskip
inode
\begin{itemize}
\item
Meta-Daten zur Datei
\item
direkte und indirekte Zeiger auf Blöcke
\end{itemize}
\smallskip
Besonderheiten
\begin{itemize}
\item
Fragmentierung i.\,d.\,R.\ kein Problem
\item
Der inode "`ist"' die Datei.
\item
Pseudo-Dateien oder sehr kurze Dateien:\\
Daten direkt im inode
\end{itemize}
\end{frame}
\end{document}
../common/logo-hochschule-bochum-cvh-text-v3.pdf
\ No newline at end of file
../common/logo-hochschule-bochum-de-narrow.pdf
\ No newline at end of file
../common/pgslides.sty
\ No newline at end of file
......@@ -25,6 +25,7 @@ Vortragsfolien und Beispiele:
* [12.05.2025: Systembibliothek, Kernel](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250512/bs-20250512.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250512/)
* [19.05.2025: Speicherverwaltung: Speicherschutz](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250519/bs-20250519.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250519/)
* [26.05.2025: Speicherverwaltung: virtueller Speicher](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250526/bs-20250526.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250526/)
* [02.06.2025: Die Meltdown-Sicherheitslücke, Dateisysteme](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250602/bs-20250602.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250602/)
* [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/bs-slides-2025ss.pdf)
Notizen:
......
No preview for this file type
......@@ -26,4 +26,6 @@
\includepdf[pages=-]{20250519/bs-20250519.pdf}
\pdfbookmark[1]{26.05.2025: Speicherverwaltung: virtueller Speicher}{20250526}
\includepdf[pages=-]{20250526/bs-20250526.pdf}
\pdfbookmark[1]{02.06.2025: Die Meltdown-Sicherheitslücke, Dateisysteme}{20250602}
\includepdf[pages=-]{20250602/bs-20250602.pdf}
\end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment