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

Vorbereitung 26.5.2025

parent 78ae663d
Branches
No related tags found
No related merge requests found
No preview for this file type
......@@ -20,7 +20,7 @@
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Speicherverwaltung
% README: Speicherverwaltung: Speicherschutz
\documentclass[10pt,t]{beamer}
......@@ -122,12 +122,14 @@
\medskip
\item
Verbindung zum Betriebssystemkern\only<1->{: System Call}
% \pause[5]\smallskip\par
% \pause[5]%
\smallskip\par
Das Betriebssystem hat mehr Rechte als die Anwendung,\\
daher darf die Anwendung Funktionen des Betriebssystems\\
nur auf sehr kontrollierte Weise aufrufen.
\smallskip\par
\textarrow\ Hardware-Unterstützung\\
\textarrow\ Hardware-Unterstützung
\smallskip\par
Beispiel: x64-Befehlsarchitektur: \lstinline{syscall}
\end{itemize}
\end{frame}
......@@ -144,7 +146,9 @@
\medskip
\item
"`Ausgang"'\\[2pt]
Wo ruft der Kernel die Callback-Funktionen der Treibermodule auf?
Wo ruft der Kernel die Callback-Funktionen der Treibermodule auf?\\[\smallskipamount]
\lstinline{ksys_write()}\\
\lstinline{vfs_write()}
\medskip
\item
"`Weg durch den Kernel"'\\[2pt]
......
File added
% bs-20250526.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: Speicherverwaltung: virtueller Speicher
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{tikz}
\title{Treiberentwicklung,\\[\medskipamount]Echtzeit- und Betriebssysteme}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{26.\ Mai 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}
\color{medgreen}
\item[4.1] Mikrocontroller
\item[4.2] Speichersegmentierung
\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
\color{gray}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)
\pause
\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
......@@ -23,7 +23,8 @@ Vortragsfolien und Beispiele:
* [28.04.2025: Gerätedateien, Einführung Treiberentwicklung](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250428/bs-20250428.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250428/)
* [05.05.2025: Linux-Kernel-Module, Systembibliothek](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250505/bs-20250505.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250505/)
* [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](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/20250519/bs-20250519.pdf) [**(Beispiele)**](https://gitlab.cvh-server.de/pgerwinski/bs/tree/2025ss/20250519/)
* [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/)
* [alle in 1 Datei](https://gitlab.cvh-server.de/pgerwinski/bs/raw/2025ss/bs-slides-2025ss.pdf)
Notizen:
......
No preview for this file type
......@@ -22,6 +22,8 @@
\includepdf[pages=-]{20250505/bs-20250505.pdf}
\pdfbookmark[1]{12.05.2025: Systembibliothek, Kernel}{20250512}
\includepdf[pages=-]{20250512/bs-20250512.pdf}
\pdfbookmark[1]{19.05.2025: Speicherverwaltung}{20250519}
\pdfbookmark[1]{19.05.2025: Speicherverwaltung: Speicherschutz}{20250519}
\includepdf[pages=-]{20250519/bs-20250519.pdf}
\pdfbookmark[1]{26.05.2025: Speicherverwaltung: virtueller Speicher}{20250526}
\includepdf[pages=-]{20250526/bs-20250526.pdf}
\end{document}
......@@ -77,6 +77,7 @@ Weitere Projekt-Ideen: Mit freier Software ...
- xdotool
- setxkbmap
- Fenster reagiert auf Tastatur- und Maus-Ereignisse auch im Hintergrund
- Fenster mit Tastenkombinationen anordnen (z.B. Alt+Shift+L für "nach ganz links")
- ...
* Signal für spezielle Anwendungsfälle konfigurieren
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment