Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 2014ss
  • 2015ss
  • 2016ss
  • 2017ss
  • 2018ss
  • 2019ss
  • 2020ss
  • 2021ss
  • 2022ss
  • 2023ss
  • 2024ss
  • 2025ss
12 results

Target

Select target project
  • pgerwinski/bs
  • cloepke/bs
  • khaleeliyeh/bs
3 results
Select Git revision
  • 2014ss
  • 2015ss
  • 2016ss
  • 2017ss
  • 2018ss
  • 2019ss
  • 2020ss
  • 2021ss
  • 2022ss
  • 2023ss
10 results
Show changes
Commits on Source (180)
Showing
with 1471 additions and 177 deletions
../common/Operating_system_placement-de.pdf
\ No newline at end of file
cassini/home/peter/bo/2025ss/bs/20250324> echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> printf "Hello, world!"
Hello, world!cassini/home/peter/bo/2025ss/bs/20250324> printf "Hello, world!\n"
bash: !\n: event not found
cassini/home/peter/bo/2025ss/bs/20250324> printf 'Hello, world!\n'
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> printf 'Hello, world!\n'
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> printf 'The answer is %d.\n' 42
The answer is 42.
cassini/home/peter/bo/2025ss/bs/20250324> printf 'The answer is %04d.\n' 137
The answer is 0137.
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> hello="Hello, world!"
cassini/home/peter/bo/2025ss/bs/20250324> echo $hello
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> echo "$hello"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> echo '$hello'
$hello
cassini/home/peter/bo/2025ss/bs/20250324>
cassini/home/peter/bo/2025ss/bs/20250324> !!
cat >> ausgabe-01.txt
^C
cassini/home/peter/bo/2025ss/bs/20250324> echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> !!
echo "Hello, world!"
Hello, world!
cassini/home/peter/bo/2025ss/bs/20250324> !\
bash: !\: event not found
cassini/home/peter/bo/2025ss/bs/20250324> \!
bash: !: Kommando nicht gefunden.
cassini/home/peter/bo/2025ss/bs/20250324>
aus "man bash":
When the command history expansion facilities are being used (see HISTORY EXPANSION
below), the history expansion character, usually !, must be quoted to prevent his‐
tory expansion.
cassini/home/peter/bo/2025ss/bs/20250324> !2
bash: !2: event not found
cassini/home/peter/bo/2025ss/bs/20250324> !ls
ls -lrt
insgesamt 420
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 5853 24. Mär 14:22 unix-baukasten-01.txt
-rw-r--r-- 1 peter peter 8626 24. Mär 14:24 unix-optionen-01.txt
-rw-r--r-- 1 peter peter 372 24. Mär 14:25 ausgabe-01.txt
-rw-r--r-- 1 peter peter 419 24. Mär 14:28 ausrufezeichen-01.txt
File added
% bs-20140505.pdf - Lecture Slides on Operating Systems
% Copyright (C) 2013, 2014 Peter Gerwinski
% bs-20250324.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
......@@ -20,13 +20,16 @@
% Attribution-ShareAlike 3.0 Unported License along with this
% document. If not, see <http://creativecommons.org/licenses/>.
% README: Einführung, Unix
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{pdftricks}
\usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx}
% \usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx}
\usepackage{eurosym}
\usepackage{tikz}
\begin{psinputs}
\usepackage[latin1]{inputenc}
......@@ -39,17 +42,276 @@
\end{psinputs}
\title{Treiberentwicklung,\\[\medskipamount]Echtzeit- und Betriebssysteme}
\author{Prof.\ Dr.\ Peter Gerwinski}
\date{5.\ Mai 2014}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{24.\ März 2025}
\begin{document}
\newlength{\normalpdfpageheight}
\setlength{\normalpdfpageheight}{\pdfpageheight}
\newlength{\normalpageheight}
\setlength{\normalpageheight}{\pageheight}
\maketitleframe
\date{\begin{picture}(0,0)
\color{red}
\put(0.4,1.02){\makebox(0,0)[t]{$\underbrace{\rule{1.45cm}{0pt}}_{%
\mbox{\emph{rerum naturalium\/} = der natürlichen Dinge (lat.)}}$}}
\end{picture}%
24.\ März 2025}
\maketitleframe
\author{{\color{gray}Prof.\ Dr.\ rer.\ nat.\ }Peter {\color{gray}Gerwinski}}
\maketitleframe
\section{Einfhrung}
\sectionnonumber{Zu dieser Lehrveranstaltung}
\begin{frame}
\showsectionnonumber
\begin{itemize}
\item
Bitte nach Möglichkeit \textbf{eigenen Computer} (Notebook) mitbringen.
\item
\textbf{Lehrmaterialien:} \url{https://gitlab.cvh-server.de/pgerwinski/bs}\\
Links auf die Datei klicken, nicht mittig auf den Kommentar.
% \item
% \textbf{Praktikum:} 3 Termine (nach Vereinbarung),\\
% eine Gruppe Dienstag, 10:30--14:15 Uhr,\\
% weitere Gruppen Mittwoch, 14:15--18:00 Uhr
\item
% \textbf{Prüfungsform: Klausur}
\textbf{Prüfungsform: Hausarbeit mit Kolloquium}
\end{itemize}
\bigskip
\textbf{Online-Teilnahme:}
\begin{itemize}
\item
\textbf{Mumble}: Seminarraum 2\\
Fragen: Mikrofon einschalten oder über den Chat\\
Umfragen: über den Chat
\item
\textbf{VNC}: Kanal 6, Passwort: \lstinline[style=cmd]{testcvh}\\
Eigenen Bildschirm freigeben: per VNC-Server oder Web-Interface\\
Kamerabild übertragen: Link zu Web-Interface auf Anfrage
\item
Allgemeine Informationen:
\url{https://www.cvh-server.de/online-werkzeuge/}
\item
Notfall-Schnellzugang: \url{https://www.cvh-server.de/virtuelle-raeume/}\\
Seminarraum 2, VNC-Passwort: \lstinline[style=cmd]{testcvh}
% \item
% Bei Problemen: bitte notieren:\\
% Art des Problems, genaue Uhrzeit, JavaScript-Fehlermeldungen (F12)
\end{itemize}
\end{frame}
\sectionnonumber{Treiberentwicklung, Echtzeit- und Betriebssysteme}
%\begin{frame}
%
% \showsectionnonumber
%
% \begin{itemize}
% \item[\textbf{1}] \textbf{Einführung}
% \item[\textbf{\dots}]
% \end{itemize}
%
%\end{frame}
\section{Einführung}
\begin{frame}
\showsection
Was ist ein Betriebssystem?
\pause
\strut\hfill
\begin{picture}(0,0)
\put(0,1.5){\makebox(0,0)[tr]{\includegraphics[height=7cm]{Operating_system_placement-de.pdf}}}
\end{picture}
\begin{itemize}
\item
Software, die zwischen Hardware\\
und Anwendung vermittelt
\pause\bigskip
\item
Mikro-Controller:\\
Anwendung greift \emph{direkt\/} auf Hardware zu
\pause\bigskip
\item
Eingebettetes System:\\
Anwendung startet automatisch
\item
Arbeitsplatz-Computer:
\newterm{Oberfläche (Shell)}\\
Benutzer*in wählt Anwendung aus
\pause\bigskip
\item
Ressourcen-Verwaltung
\end{itemize}
\pause
\begin{picture}(0,0)
\put(7.5,6.1){\makebox(0,0)[bl]{\tikz{\draw[line width=1pt] (0,0)--(4.6,1.5);}}}
\put(7.5,7.6){\makebox(0,0)[tl]{\tikz{\draw[line width=1pt] (0,0)--(4.6,-1.5);}}}
\put(7.8,0.2){\makebox(0,0)[tl]{\tikz{\draw[line width=1pt, rounded corners] (0,0)--(4.1,0)--(4.1,1.2)--(0,1.2)--cycle;}}}
\put(9.85,-0.5){\makebox(0,0.1){Benutzer*in}}
\put(8.97,0.12){\makebox(0,0)[bl]{\tikz{\draw[line width=3pt, ->] (0,0)--(0,0.65);}}}
\put(10.63,0.17){\makebox(0,0)[bl]{\tikz{\draw[line width=3pt, ->] (0,0.65)--(0,0);}}}
\end{picture}
\end{frame}
\begin{frame}
\showsection
Was gehört zum Betriebssystem?
\strut\hfill
\begin{picture}(0,0)
\thicklines
\put(-3,0){\vector(0,-1){7}}
\put(-2.8,-0.5){\makebox(0,0)[l]{Ja, klar!}}
\put(-2.8,-6.5){\makebox(0,0)[l]{Hmm\,\dots\ vielleicht.}}
\end{picture}
\begin{itemize}
\item
Betriebssystemkern: \newterm{Kernel}
\item
Benutzeroberfläche: \newterm{Shell}\\
text- oder grafikorientiert\\
(im engeren Sinne: Kommandozeile)
\item
Werkzeuge zur Verwaltung von Ressourcen\\
(z.\,B.\ Festplatten formatieren)
\item
Graphische Benutzeroberfläche: \newterm{GUI}
\item
Texteditor
\item
Entwicklungswerkzeuge (Compiler usw.),\\
Skriptsprachen
\item
Internet-Software: Web-Browser, E-Mail-Client usw.
\item
Multimedia-Software
\item
Büro-Anwendungssoftware
\end{itemize}
\end{frame}
\begin{frame}
\showsection
In dieser Lehrveranstaltung:
\begin{itemize}
\item
Treiberentwicklung\\
wie in \emph{Hardwarenahe Programmierung\/} (3./5.\ Sem.), nur "`größer"'
\item
Echtzeitsysteme\\
wie in \emph{Eingebettete Systeme\/} (3./5.\ Sem.), nur "`größer"'
\item
neu: Betriebssysteme
\end{itemize}
\pause
\medskip
Statt Klausur: Projektaufgabe, z.\,B.:
\begin{itemize}
\item
neuartiger Treiber (z.\,B.\ für neuartige Hardware)
\item
neuartige Echtzeit-Funktionalität
\begin{onlyenv}<3->
\begin{picture}(0,0)
\color{red}
\put(0.3,0.25){\makebox(0,0)[tl]{\begin{minipage}{6.2cm}
speziell:
\begin{itemize}
\color{red}
\item[\color{red}--]
Echtzeitkommunikation\\
für Home-Office und Online-Lehre
\item[\color{red}--]
Treiber und Echtzeitkommunikation\\
für freies Smartphone
\end{itemize}
\end{minipage}}}
\end{picture}%
\end{onlyenv}%
\item
Sonstiges
\end{itemize}
\pause
\pause
\medskip
Wiederholung:
\begin{itemize}
\item
Unix
\item
Hardwarenahe Programmierung
\item
Theorie der Echtzeit-Systeme
\item[\textbf{?}]
Sonstiges
\end{itemize}
\end{frame}
\iffalse
\begin{frame}
{\tiny\color{gray}Diese Folie wurde weitgehend absichtlich leer gelassen.}
\end{frame}
\section{Der Bootvorgang}
\begin{frame}
\showsection
\begin{itemize}
\item
Rechner einschalten\\
\textarrow\ Programm im Festspeicher (ROM) startet
\item
Mikro-Controller: Das war's schon.\\
Arbeitsplatzrechner: Weiter geht's.
\item
Programm spricht Datenträger an,\\
lädt und startet größeres Programm,\\
kann mehr Datenträger ansprechen
\item
größeres Programm lädt noch größeres Programm
\item
\dots
\item
Zuletzt: Programm starten, das mit dem Benutzer interagiert
\bigskip
\item
abstraktes Beispiel: Bootloader, Kernel, Anmelde-Prozeß
\item
konkretes Beispiel: Linux\\
GRUB-Stages, Kernel mit initrd, init, getty und/oder Display-Manager
\end{itemize}
\end{frame}
\setcounter{section}{3}
\section{Echtzeit}
\subsection{Was ist Echtzeit?}
......@@ -71,7 +333,7 @@
Die Daten werden so schnell verarbeitet, wie sie anfallen.
\item
speziell: Echtzeit-Steuerung von Maschinen:\\
Die Berechnung kann mit den physikalischen Vorgngen schritthalten.
Die Berechnung kann mit den physikalischen Vorgängen schritthalten.
\smallskip
\arrowitem
"`Schnell genug."'
......@@ -93,12 +355,12 @@
\smallskip
\item
"`Unschn."' \textarrow\ \newterm{weiche Echtzeit}\\[2pt]
versptetes Ergebnis qualittsmindernd
"`Unschön."' \textarrow\ \newterm{weiche Echtzeit}\\[2pt]
verspätetes Ergebnis qualitätsmindernd
\begin{itemize}
\baselineskip14pt\par
\item
verwenden und Verzgerung in Kauf nehmen
verwenden und Verzögerung in Kauf nehmen
\item
verwerfen und Ausfall in Kauf nehmen
\end{itemize}
......@@ -106,7 +368,7 @@
\smallskip
\item
"`Es gibt keinen festen Termin. Mglichst schnell halt."'\\[2pt]
"`Es gibt keinen festen Termin. Möglichst schnell halt."'\\[2pt]
\textarrow\ \newterm{keine Echtzeit}
\end{itemize}
......@@ -138,11 +400,11 @@
Beispiel:
\begin{itemize}
\item
Eine Motorsteuerung bentigt alle \SI{2000}{\mics} einen Steuerimpuls,\\
Eine Motorsteuerung benötigt alle \SI{2000}{\mics} einen Steuerimpuls,\\
dessen Berechnung maximal \SI{10}{\mics} dauert.
\item
Entweder: Der Steuer-Computer macht noch andere Dinge.\\
\textarrow\ Risiko der Zeitberschreitung
\textarrow\ Risiko der Zeitüberschreitung
\item
Oder: Der Steuer-Computer macht nichts anderes.\\
\textarrow\ Verschwendung von Rechenzeit\\
......@@ -173,7 +435,7 @@
\medskip
Groe Stckzahlen
Große Stückzahlen
\begin{itemize}
\item
138\,000 Toyota Prius V von Mai 2011 bis April 2012
......@@ -184,7 +446,7 @@
Wertvolle Ressourcen
\begin{itemize}
\item
Fhigkeiten einer Raumsonde optimieren
Fähigkeiten einer Raumsonde optimieren
% (Marsumlaufbahn: ab ca.~127\,000 Euro pro kg)
% 70000000 / 550000 = 127._27
% http://www.bernd-leitenberger.de/blog/2009/09/29/reduktion-der-kosten-von-planetenmissionen/
......@@ -197,103 +459,42 @@
\bigskip
\textarrow\ {\large\color{structure}\textbf{Echtzeitprogrammierung}}\\[2pt]
\strut \phantom{\textarrow} Echtzeitanforderungen erfllen, ohne Ressourcen zu verschwenden
\strut \phantom{\textarrow} Echtzeitanforderungen erfüllen, ohne Ressourcen zu verschwenden
\end{frame}
\subsection{Multitasking}
\begin{frame}
\showsection
\showsubsection
\begin{itemize}
\item
\newterm{Kooperatives Multitasking}\\
Prozesse geben freiwillig Rechenzeit ab
\item
\newterm{Premptives Multitasking}\\
Das Betriebssystem unterbricht laufende Prozesse\\
(englisch: \emph{to pre-empt\/} -- jemandem zuvorkommen)
\medskip
\item
\newterm{Scheduler}\\
Steuerprogramm, das Prozessen Rechenzeit zuteilt
\item
\newterm{Kontextwechsel}\\
Umschalten zwischen zwei Prozessen
\begin{onlyenv}<1>
\begin{itemize}
\item
Das Betriebssystem wurde per Timer-Interrupt aufgerufen.
\item
Registerinhalte des unterbrochenen Prozesses liegen auf dem CPU-Stack
\item
Registerinhalte des neuen Prozesses auf den CPU-Stack legen
\item
Rcksprung nicht zum unterbrochenen, sondern in den neuen Proze
\arrowitem
Stack austauschen
\end{itemize}
\vspace*{-3cm}
\end{onlyenv}
\pause
\item
\newterm{Round-Robin-Verfahren (Rundlauf)}\\
Zuteilung von \newterm{Zeitschlitzen\/} auf einer \newterm{Zeitscheibe} an die Prozesse
\medskip
\item
Ausblick: Zuteilung von Rechenzeit = wichtiger Spezialfall\\
allgemein: Zuteilung von Ressourcen
\end{itemize}
\end{frame}
\begin{frame}
\showsection
\showsubsection
\begin{minipage}[t]{6cm}
Qualittssicherung beim Multitasking
Qualitätssicherung beim Multitasking
\begin{itemize}
\item<3->
\item
Verschiedene Anforderungen:
\newterm{Latenz\/} vs.\ \newterm{Jitter\/}\\
vs.\ \newterm{Durchsatz}
\smallskip
\begin{onlyenv}<4>
\begin{itemize}
\item
\newterm{Latenz:} interaktive Anwendungen
\item
\newterm{Jitter:} Echtzeitanwendungen
\item
\newterm{Durchsatz:} Stapelverarbeitung
\end{itemize}
\vspace*{-3cm}
\end{onlyenv}
\item<5->
Ressourcen reservieren:\\
\newterm{Mutexe}
\only<6->{(= spezielle \newterm{Semaphore\/})\\}
\only<7->{\textarrow\ spter}
\item<8->
(= spezielle \newterm{Semaphore\/})\\
\strut
\item
Verschiedene Methoden\\
der Priorisierung\\
\textarrow\ spter\\
\strut
\item<9->
\item
Umgehung der Probleme durch
speziell geschriebene Software\\
(MultiWii, RP6, \dots)
\end{itemize}
\end{minipage}
\hfill
\pause
\begin{minipage}[t]{6.2cm}
Qualittssicherung fr Netzwerke:
Qualitätssicherung für Netzwerke:
\begin{itemize}
\item
Verschiedene Anforderungen:
......@@ -317,13 +518,13 @@
% evtl. Aufgabe: Warte-Problem
% Aufgabe: Wie lsen bekannte Multitasking-Betriebssysteme
% Aufgabe: Wie lösen bekannte Multitasking-Betriebssysteme
% das o.a. Zuteilungsproblem?
% Danach: Semaphoren, Mutexe, Spinlocks
% Priorisierungsmethoden und -probleme
\subsectionnonumber{Beispiele fr Multitasking}
\subsectionnonumber{Beispiele für Multitasking}
\begin{frame}
......@@ -332,39 +533,37 @@
Quadrocopter-Steuerung \emph{MultiWii}
\begin{itemize}
\item
Konfiguration durch bedingte Compilierung (Prprozessor)
Konfiguration durch bedingte Compilierung (Präprozessor)
\item
In der Hauptschleife wird 50mal pro Sekunde der RC-Task aufgerufen,\\
ansonsten zyklisch einer von bis zu 5 weiteren Tasks.
\end{itemize}
\pause
RP6-Steuerung
\begin{itemize}
\item
Konfiguration durch bedingte Compilierung (Prprozessor)
Konfiguration durch bedingte Compilierung (Präprozessor)
\item
Lichtschranken an Encoder-Scheiben lsen bei Bewegung Interrupts aus.\\
Die Interrupt-Handler zhlen Variable hoch.
Lichtschranken an Encoder-Scheiben lösen bei Bewegung Interrupts aus.\\
Die Interrupt-Handler zählen Variable hoch.
\item
10000mal pro Sekunde: Timer-Interrupt\\
verschiedene Tasks werden unterschiedlich hufig aufgerufen
verschiedene Tasks werden unterschiedlich häufig aufgerufen
\item
Nebenbei: 1 Benutzerprogramm
\end{itemize}
\pause
Linux 0.01
\begin{itemize}
\item
Timer-Interrupt:\only<2->{ Zhler des aktuellen Tasks wird dekrementiert;}\\
Task mit hchstem Zhler bekommt Rechenzeit.
Timer-Interrupt:\only<2->{ Zähler des aktuellen Tasks wird dekrementiert;}\\
Task mit höchstem Zähler bekommt Rechenzeit.
\item
Wenn es keinen laufbereiten Task mit positivem Zhler gibt,\\
bekommen alle Tasks gem ihrer Prioritt neue Zhler zugewiesen.
Wenn es keinen laufbereiten Task mit positivem Zähler gibt,\\
bekommen alle Tasks gemäß ihrer Priorität neue Zähler zugewiesen.
\item<3->
\emph{keine\/} \only<4->{harte }Echtzeit
% Aufgabe: Wo wird der Zhler heruntergezhlt?
\emph{keine\/} harte Echtzeit
% Aufgabe: Wo wird der Zähler heruntergezählt?
\end{itemize}
\end{frame}
......@@ -382,25 +581,25 @@
\begin{quote}
Als Zombie wird die fiktive Figur eines zum Leben erweckten
Toten (Untoter) oder eines seiner Seele beraubten, willenlosen
Wesens bezeichnet. Der Begriff leitet sich von dem Wort nzmbe
Wesens bezeichnet. Der Begriff leitet sich von dem Wort nzùmbe
aus der zentralafrikanischen Sprache Kimbundu ab und bezeichnet
dort ursprnglich einen Totengeist.
dort ursprünglich einen Totengeist.
\end{quote}
\bigskip
\pause
Ein Zombie-Proze ist bereits beendet ("`tot"'),\\
Ein Zombie-Prozeß ist bereits beendet ("`tot"'),\\
bekommt keine Rechenzeit mehr ("`seiner Seele beraubt"'),\\
hat alle belegten Ressourcen wieder freigegeben ("`willenlos"'),\\
wird aber noch in der Prozeliste gefhrt ("`untot"').
wird aber noch in der Prozeßliste geführt ("`untot"').
\begin{itemize}
\pause
\item
Warum?
\textarrow\
Ein anderer Proze (Elternproze) wartet noch auf den
Rckgabewert des beendeten Prozesses.
Ein anderer Prozeß (Elternprozeß) wartet noch auf den
Rückgabewert des beendeten Prozesses.
\pause
\item
Schadet das?
......@@ -410,12 +609,12 @@
\item
Aber?
\textarrow\
Wenn sich Zombie-Prozesse anhufen, deutet dies auf einen
Proze hin, der andere Prozesse erzeugt und anschlieend "`hngt"'.
Wenn sich Zombie-Prozesse anhäufen, deutet dies auf einen
Prozeß hin, der andere Prozesse erzeugt und anschließend "`hängt"'.
\pause
\item
Beispiel:
Datentrger entfernt, zugreifender Proze "`hngt"'.\\
Datenträger entfernt, zugreifender Prozeß "`hängt"'.\\
\textarrow\
Tochterprozesse werden zu Zombies.
\end{itemize}
......@@ -448,13 +647,13 @@
\medskip
\item
\newterm{Mutex}\\
Mechanismus, damit immer nur ein Proze gleichzeitig\\
Mechanismus, damit immer nur ein Prozeß gleichzeitig\\
auf eine Ressource zugreifen kann
\begin{onlyenv}<2>
\par\medskip
englisch: \emph{mutual exclusion\/} -- wechselseitiger Ausschlu\\
spezieller binrer Semaphor: nur "`Besitzer"' darf freigeben\\
% allgemein: auch jemand anderer drfte freigeben
englisch: \emph{mutual exclusion\/} -- wechselseitiger Ausschluß\\
spezieller binärer Semaphor: nur "`Besitzer"' darf freigeben\\
% allgemein: auch jemand anderer dürfte freigeben
\vspace*{-3cm}
\end{onlyenv}
\pause
......@@ -466,8 +665,8 @@
\par\medskip
englisch: \emph{spin\/} -- rotieren, \emph{lock\/} Sperre\\
\emph{busy waiting} auf etwas Schnelles, z.\,B.\ auf einen Semaphor\\[\medskipamount]
Hardware-Untersttzung:
Prfen, ob Variable bestimmten Wert hat;\\
Hardware-Unterstützung:
Prüfen, ob Variable bestimmten Wert hat;\\
wenn ja, auf anderen Wert setzen; andere Prozessoren solange anhalten
\vspace*{-3cm}
\end{onlyenv}
......@@ -477,7 +676,8 @@
\newterm{Kritischer Abschnitt -- critical section}\\
Programmabschnitt zwischen Reservierung\\
und Freigabe einer Ressource\\
\textarrow\ sollte immer so kurz wie mglich sein
\textarrow\ sollte immer so kurz wie möglich sein
\vspace*{-1cm}
\end{itemize}
\end{frame}
......@@ -510,7 +710,7 @@
% evtl. Aufgabe: Warte-Problem
% Aufgabe: Wie lsen bekannte Multitasking-Betriebssysteme
% Aufgabe: Wie lösen bekannte Multitasking-Betriebssysteme
% das o.a. Zuteilungsproblem?
% Danach: Semaphoren, Mutexe, Spinlocks
......@@ -518,7 +718,7 @@
% Festplatten: completely fair queueing
% cat /sys/block/sdc/queue/scheduler
% "noop" hat sich fr SVG gelohnt
% "noop" hat sich für SVG gelohnt
% Virtualisierung + Kernel-Threads + Multiprozessorsystem = Chaos
......@@ -564,7 +764,7 @@
\end{frame}
\setlength{\pdfpageheight}{48cm}
\setlength{\pageheight}{48cm}
\begin{frame}[fragile]
......@@ -593,7 +793,7 @@
Datei \file{linux-3.7-rc1/arch/x86/include/asm/mutex\_32.h}, ab Zeile 24
Macro-Definition fr \lstinline{__mutex_fastpath_lock} (expandiert)
Macro-Definition für \lstinline{__mutex_fastpath_lock} (expandiert)
\medskip
......@@ -730,7 +930,7 @@
\end{frame}
\setlength{\pdfpageheight}{40.5cm}
\setlength{\pageheight}{40.5cm}
\begin{frame}[fragile]
......@@ -955,12 +1155,12 @@
\color{red}
\put(9.8,1.8){\vector(-1,0){0.6}}
\put(9.8,1.2){\line(0,1){0.6}}
\put(9.8,1.1){\makebox(0,0)[t]{\shortstack{atomarer und exklusiver\\Zugriff auf Spinlock\\durch Hardware-Untersttzung}}}
\put(9.8,1.1){\makebox(0,0)[t]{\shortstack{atomarer und exklusiver\\Zugriff auf Spinlock\\durch Hardware-Unterstützung}}}
\end{picture}
\end{frame}
\setlength{\pdfpageheight}{\normalpdfpageheight}
\setlength{\pageheight}{\normalpageheight}
%\sectionnonumber{Literaturempfehlung}
%\subsectionnonumber{Automotive Embedded Systeme}
......@@ -982,7 +1182,7 @@
%
% \bigskip
%
% Lizenz: proprietr
% Lizenz: proprietär
%
% \medskip
%
......@@ -990,10 +1190,6 @@
%
%\end{frame}
\sectionnonumber{Theorie der Echtzeitsysteme}
\subsection{Multitasking}
\subsection{Ressourcen}
\begin{frame}
\showsection
......@@ -1009,7 +1205,7 @@
\medskip
\item
\newterm{Mutex}\\
Mechanismus, damit immer nur ein Proze gleichzeitig\\
Mechanismus, damit immer nur ein Prozeß gleichzeitig\\
auf eine Ressource zugreifen kann
\medskip
\item
......@@ -1020,7 +1216,7 @@
\newterm{Kritischer Abschnitt -- critical section}\\
Programmabschnitt zwischen Reservierung\\
und Freigabe einer Ressource\\
\textarrow\ sollte immer so kurz wie mglich sein
\textarrow\ sollte immer so kurz wie möglich sein
\end{itemize}
\end{frame}
......@@ -1036,9 +1232,9 @@
\newterm{Verklemmungen\/}: Gegenseitiges Blockieren von Ressourcen
\begin{itemize}
\item
\newterm{Deadlock\/}: Proze wartet
\newterm{Deadlock\/}: Prozeß wartet
\item
\newterm{Livelock\/}: Proze macht andere Dinge\\
\newterm{Livelock\/}: Prozeß macht andere Dinge\\
(z.\,B.\ \emph{busy waiting\/})
\end{itemize}
......@@ -1058,9 +1254,9 @@
und wartet notfalls auf die zweite.
\item
Keiner legt eine einzelne Gabel\\
wieder zurck.
wieder zurück.
\end{itemize}
Jeder hlt 1 Gabel \textarrow\ \newterm{Verklemmung}\\[0.5\smallskipamount]
Jeder hält 1 Gabel \textarrow\ \newterm{Verklemmung}\\[0.5\smallskipamount]
\pause
\strut\quad schweigen \textarrow\ \newterm{Deadlock}\\
\strut\quad philosophieren weiter \textarrow\ \newterm{Livelock}\\[-1cm]
......@@ -1068,18 +1264,18 @@
\only<4->{%
\bigskip
Bedingungen fr Verklemmungen:
Bedingungen für Verklemmungen:
\begin{minipage}[t]{4.5cm}
\begin{itemize}
\item
Exklusivitt
Exklusivität
\item
\newterm{hold and wait}
\item
Entzug nicht mglich
Entzug nicht möglich
\item
zirkulre Blockade
zirkuläre Blockade
\end{itemize}
\end{minipage}\pause[5]
\begin{minipage}[t]{7.5cm}
......@@ -1091,14 +1287,14 @@
\arrowitem
Prozesse suspendieren, beenden, \newterm{Rollback}
\arrowitem
Reihenfolge abhngig von Ressourcen
Reihenfolge abhängig von Ressourcen
\end{itemize}
\end{minipage}
}
\end{frame}
\subsection{Prioritten}
\subsection{Prioritäten}
\begin{frame}
......@@ -1108,16 +1304,16 @@
Linux 0.01
\begin{itemize}
\item
Timer-Interrupt: Zhler des aktuellen Prozesses wird dekrementiert;\\
Proze mit hchstem Zhler bekommt Rechenzeit.
Timer-Interrupt: Zähler des aktuellen Prozesses wird dekrementiert;\\
Prozeß mit höchstem Zähler bekommt Rechenzeit.
\item
Wenn es keinen laufbereiten Proze mit positivem Zhler gibt,\\
bekommen alle Prozesse gem ihrer \newterm{Prioritt\/} neue Zhler zugewiesen.
Wenn es keinen laufbereiten Prozeß mit positivem Zähler gibt,\\
bekommen alle Prozesse gemäß ihrer \newterm{Priorität\/} neue Zähler zugewiesen.
\item
\emph{keine\/} harte Echtzeit
\arrowitem
\newterm{dynamische Priorittenvergabe\/}:\\
Rechenzeit hngt vom Verhalten des Prozesses ab
\newterm{dynamische Prioritätenvergabe\/}:\\
Rechenzeit hängt vom Verhalten des Prozesses ab
\end{itemize}
\medskip
......@@ -1125,12 +1321,12 @@
Echtzeitbetriebssysteme
\begin{itemize}
\item
Prozesse knnen einen festen Anteil an Rechenzeit bekommen.
Prozesse können einen festen Anteil an Rechenzeit bekommen.
\item
Bei Ereignissen knnen Prozesse hoher Prioritt\\
Prozesse niedriger Prioritt unterbrechen, aber nicht umgekehrt.
Bei Ereignissen können Prozesse hoher Priorität\\
Prozesse niedriger Priorität unterbrechen, aber nicht umgekehrt.
\arrowitem
\newterm{statische Priorittenvergabe}
\newterm{statische Prioritätenvergabe}
\end{itemize}
\end{frame}
......@@ -1143,10 +1339,10 @@
Echtzeitbetriebssysteme
\begin{itemize}
\item
Prozesse knnen einen festen Anteil an Rechenzeit bekommen.
Prozesse können einen festen Anteil an Rechenzeit bekommen.
\item
Bei Ereignissen knnen Prozesse hoher Prioritt\\
Prozesse niedriger Prioritt unterbrechen, aber nicht umgekehrt.
Bei Ereignissen können Prozesse hoher Priorität\\
Prozesse niedriger Priorität unterbrechen, aber nicht umgekehrt.
\end{itemize}
\vspace{0cm plus 1filll}
......@@ -1158,7 +1354,7 @@
\put(-0.1,0.5){\vector(1,0){10.1}}
\put(9.75,0.4){\makebox(0,0)[tr]{Zeit}}
\put(0,0.4){\vector(0,1){3.6}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Prioritt}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Priorität}}
\put(1,3){{\color{lightorange}\rule{0.5cm}{0.4cm}}}
\put(3,3){{\color{lightorange}\rule{0.7cm}{0.4cm}}}
......@@ -1190,7 +1386,7 @@
\end{frame}
\subsectionnonumber{Prioritten \protect\color{darkgray}und Ressourcen}
\subsectionnonumber{Prioritäten \protect\color{darkgray}und Ressourcen}
\begin{frame}
......@@ -1198,16 +1394,16 @@
\showsubsection
\only<4->{%
Der hher priorisierte Proze bewirkt selbst,\\
da er eine Ressource versptet bekommt.
Der höher priorisierte Prozeß bewirkt selbst,\\
daß er eine Ressource verspätet bekommt.
\medskip
\textarrow\ \newterm{begrenzte Priorittsinversion}
\textarrow\ \newterm{begrenzte Prioritätsinversion}
\medskip
maximale Verzgerung: Lnge des kritischen Bereichs
maximale Verzögerung: Länge des kritischen Bereichs
}
\vspace{0cm plus 1filll}
......@@ -1219,7 +1415,7 @@
\put(-0.1,0.5){\vector(1,0){10.1}}
\put(9.75,0.4){\makebox(0,0)[tr]{Zeit}}
\put(0,0.4){\vector(0,1){3.6}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Prioritt}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Priorität}}
\put(1,3){{\color{lightorange}\rule{0.5cm}{0.4cm}}}
\only<1-2>{\put(3,3){{\color{lightorange}\rule{0.7cm}{0.4cm}}}}
......@@ -1272,12 +1468,12 @@
\showsubsection
\visible<4->{%
Ein Proze mit mittlerer Prioritt bewirkt,
da ein Proze mit hoher Prioritt eine Ressource berhaupt nicht bekommt.
Ein Prozeß mit mittlerer Priorität bewirkt,
daß ein Prozeß mit hoher Priorität eine Ressource überhaupt nicht bekommt.
\medskip
\textarrow\ }\newterm{unbegrenzte Priorittsinversion}
\textarrow\ }\newterm{unbegrenzte Prioritätsinversion}
\pause
\vspace{0cm plus 1filll}
......@@ -1289,7 +1485,7 @@
\put(-0.1,0.5){\vector(1,0){10.1}}
\put(9.75,0.4){\makebox(0,0)[tr]{Zeit}}
\put(0,0.4){\vector(0,1){3.6}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Prioritt}}
\put(-0.1,3.75){\makebox(0,0)[tr]{Priorität}}
\put(1,3){{\color{lightorange}\rule{0.5cm}{0.4cm}}}
\put(3,3){{\color{lightorange}\rule{0.4cm}{0.4cm}}}
......@@ -1343,12 +1539,12 @@
\showsection
\showsubsection
Ein Proze mit mittlerer Prioritt bewirkt,
da ein Proze mit hoher Prioritt eine Ressource berhaupt nicht bekommt.
Ein Prozeß mit mittlerer Priorität bewirkt,
daß ein Prozeß mit hoher Priorität eine Ressource überhaupt nicht bekommt.
\medskip
\textarrow\ \newterm{unbegrenzte Priorittsinversion}
\textarrow\ \newterm{unbegrenzte Prioritätsinversion}
\medskip
......@@ -1364,27 +1560,27 @@
\only<2->{%
\bigskip
Gegenmanahmen
Gegenmaßnahmen
\begin{itemize}
\item
\newterm{Priority Inheritance -- Priorittsvererbung}\\
Der Besitzer des Mutex erbt die Prioritt\\
\newterm{Priority Inheritance -- Prioritätsvererbung}\\
Der Besitzer des Mutex erbt die Priorität\\
des Prozesses, der auf den Mutex wartet.
\smallskip
\item
\newterm{Priority Ceiling -- Priorittsobergrenze}\\
\newterm{Priority Ceiling -- Prioritätsobergrenze}\\
Der Besitzer des Mutex bekommt sofort\\
die Prioritt des hchstmglichen Prozesses,\\
der evtl.\ den Mutex bentigen knnte.
die Priorität des höchstmöglichen Prozesses,\\
der evtl.\ den Mutex benötigen könnte.
\smallskip
\item
\newterm{Priority Aging}\\
Die Prioritt wchst mit der Wartezeit.
Die Priorität wächst mit der Wartezeit.
\pause[3]
\begin{picture}(0,0)
\put(1.2,2.5){\makebox(0,0)[l]{$\left\}\rule{0pt}{1.7cm}\right.$
\begin{minipage}{4cm}
nur mglich, wenn\\
nur möglich, wenn\\
Mutexe im Spiel sind
\end{minipage}}}
\end{picture}
......@@ -1394,4 +1590,6 @@
\end{frame}
\fi
\end{document}
#!/bin/bash
echo -n "Name: "
read name
echo Hallo $name
#!/bin/bash
echo -n "Name: "
read name
echo Hallo "$name"
../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
#!/bin/bash
echo "SCHLIMME DINGE"
/bin/ls "$@"
#!/bin/sh
# Copyright (C) 2024 Peter Gerwinski <peter.gerwinski@hs-bochum.de>
# License: CC0 ("Do with this whatever you want, but don't blame me.")
player="aplay -q"
signal_file_mic_off=$HOME/usr/share/mic/mic-off.wav
signal_file_mic_on=$HOME/usr/share/mic/mic-on.wav
icon_file_mic_off=$HOME/usr/share/mic/mic-off.png
icon_file_mic_on=$HOME/usr/share/mic/mic-on.png
icon_position="-375+20"
icon_viewer="xmic"
cmd="$1"
if [ "$cmd" = "toggle" ]; then
onoff=$(amixer sget Capture | tail -1 | grep -o "\[on\]\|\[off\]")
if [ "$onoff" = "[on]" ]; then
cmd="off"
else
cmd="on"
fi
fi
if [ "$cmd" = "off" ]; then
for source in $(pacmd list-sources | grep index | egrep -o "[0-9]+"); do
pactl set-source-mute $source 1
done
dbus-send --print-reply --session --type=method_call \
--dest=net.sourceforge.mumble.mumble / \
net.sourceforge.mumble.Mumble.setSelfMuted boolean:true \
> /dev/null 2>&1
killall "$icon_viewer" || true
"$icon_viewer" -display :1 -geometry "$icon_position" -f "$icon_file_mic_off" &
$player "$signal_file_mic_off"
elif [ "$cmd" = "on" ]; then
for source in $(pacmd list-sources | grep index | egrep -o "[0-9]+"); do
pactl set-source-mute $source 0
done
dbus-send --print-reply --session --type=method_call \
--dest=net.sourceforge.mumble.mumble / \
net.sourceforge.mumble.Mumble.setSelfMuted boolean:false \
> /dev/null 2>&1
killall "$icon_viewer" || true
"$icon_viewer" -display :1 -geometry "$icon_position" -f "$icon_file_mic_on" &
$player "$signal_file_mic_on"
else
echo "usage: $0 on / off / toggle"
fi
cassini/home/peter/bo/2025ss/bs/20250324> cat ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l ls
SCHLIMME DINGE
-rwxr-xr-x 1 peter peter 48 24. Mär 15:19 ls
cassini/home/peter/bo/2025ss/bs/20250324> cat ls
#!/bin/bash
echo "SCHLIMME DINGE"
/bin/ls "$@"
cassini/home/peter/bo/2025ss/bs/20250324> ls -l
SCHLIMME DINGE
insgesamt 472
-rw-r--r-- 1 peter peter 372 24. Mär 14:25 ausgabe-01.txt
-rw-r--r-- 1 peter peter 312 24. Mär 14:33 ausgabe-02.txt
-rw-r--r-- 1 peter peter 307 24. Mär 14:34 ausgabe-03.txt
-rw-r--r-- 1 peter peter 419 24. Mär 14:30 ausrufezeichen-01.txt
-rw-r--r-- 1 peter peter 1913 24. Mär 14:31 ausrufezeichen-02.txt
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
-rwxr-xr-x 1 peter peter 57 24. Mär 14:55 hello-01.sh
-rwxr-xr-x 1 peter peter 59 24. Mär 15:01 hello-02.sh
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
-rwxr-xr-x 1 peter peter 48 24. Mär 15:19 ls
-rwxr-xr-x 1 peter peter 1649 15. Mai 2024 mic
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 1108 24. Mär 14:41 shell-scripts-01.txt
-rw-r--r-- 1 peter peter 6806 24. Mär 15:07 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 15:07 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 15:07 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 15:07 unix-20250324.out
-rw-r--r-- 1 peter peter 128990 24. Mär 15:07 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 15:07 unix-20250324.snm
-rw-r--r-- 1 peter peter 19505 24. Mär 15:07 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 15:07 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 15:07 unix-20250324.vrb
-rw-r--r-- 1 peter peter 5853 24. Mär 14:22 unix-baukasten-01.txt
-rw-r--r-- 1 peter peter 8626 24. Mär 14:24 unix-optionen-01.txt
-rw-r--r-- 1 peter peter 2024 24. Mär 14:35 variables-01.txt
-rw-r--r-- 1 peter peter 2831 24. Mär 14:52 wildcards-01.txt
-rw-r--r-- 1 peter peter 664 24. Mär 14:52 wildcards-02.txt
-rw-r--r-- 1 peter peter 5393 24. Mär 14:57 wildcards-03.txt
cassini/home/peter/bo/2025ss/bs/20250324>
../common/pgslides.sty
\ No newline at end of file
cassini/home/peter> dark matter
2nd-order gravity
cassini/home/peter> cat $(which dark)
#!/bin/sh
if [ "$1" = "matter" ]; then
echo "2nd-order gravity"
shift
fi
b_fore=$(b)
b ${1:-0}
feh $HOME/Pictures/black.png
sleep 0.1
b $b_fore
cassini/home/peter> cat $(which b)
#!/bin/bash
if [ -n "$1" ]; then
if [ "$1" = "-x" -o "$1" = "x" ]; then
shift
b=${1:-100}
brightness=$(echo "0.01 * $b * 65535" | bc -l)
gamma=$(echo "0.25 + 0.75 * (0.01 * $b)^2" | bc -l)
echo xbrightness $brightness $gamma
xbrightness $brightness $gamma
elif [ "$1" = "-y" -o "$1" = "y" ]; then
shift
b=${1:-100}
brightness=$(echo "0.01 * $b * 65535" | bc -l)
echo xbrightness $brightness
xbrightness $brightness $gamma
else
echo $1 > /sys/class/backlight/intel_backlight/brightness
fi
else
cat /sys/class/backlight/intel_backlight/brightness
fi
cassini/home/peter> echo 0 > /sys/class/backlight/intel_backlight/brightness
cassini/home/peter> echo 384 > /sys/class/backlight/intel_backlight/brightness
cassini/home/peter> feh $HOME/Pictures/black.png
cassini/home/peter>
File added
% unix-20250324.pdf - Lecture Slides on Unix Fundamentals
% Copyright (C) 2013, 2015-2018, 2021-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/>.
\documentclass[10pt,t]{beamer}
\usepackage{pgslides}
\usepackage{rotating}
\usepackage{pdftricks}
% \usepackage[obeyfamily=false,mathrm=mathsf,textrm=sffamily]{siunitx}
\usepackage{eurosym}
\title{Einführung in Unix}
\author{Prof.\ Dr.\ rer.\ nat.\ Peter Gerwinski}
\date{24.\ März 2024}
\begin{document}
\maketitleframe
\sectionnonumber{U\quad Einführung in Unix}
\begin{frame}
\showsectionnonumber
% \begingroup
% \large\color{structure}%
% \textbf{Angewandte Informatik: wichtiges Werkzeug}
% \par\smallskip
% \textbf{Grundlagen Rechnertechnik: Beispiel für Skriptsprache}
% \par\bigskip
% \endgroup
% \begin{itemize}
% \item[\textbf{U}] \textbf{Einführung in Unix}
\begin{itemize}
\item[U.1] \color{red}Grundkonzepte
\item[U.2] Die Kommandozeile: Grundlagen
\item[U.3] Dateisysteme
\item[U.4] Ein- und Ausgabeströme
\item[U.5] Pipes
\item[U.6] Verzweigungen und Schleifen
% \item[\dots]
\end{itemize}
% \end{itemize}
\end{frame}
\subsectionnonumber{U.1\quad Grundkonzepte}
\begin{frame}
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
\end{minipage}
\begin{description}
\addtolength{\leftskip}{-1cm}
\item[1965]
Vorgänger: Multics (Multiplexed Information and Computing Service)\\
"`überladen"'
\item[1970]
Unix: Einfachheit als Grundkonzept
\item[1972]
Umstellung auf neu entwickelte Programmiersprache C
\item[1975]
AT\&T: Unix inkl.\ Quelltext für Universitäten
\item[1977]
Berkeley Software Distribution (BSD)
\item[1983]
GNU-Projekt
\item[1987]
Minix
\item[1991]
Linux
\item[1993]
FreeBSD, NetBSD
\item[1994]
OpenBSD
\item[2000]
Darwin (Mac OS X, Mach-Kernel, BSD-User-Space)
\item[2008]
Android (Linux-basiert)
\end{description}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item[\color{lightgray}$\bullet$]
\color{lightgray}Baukastensystem
\end{itemize}
\medskip
\end{minipage}\hspace*{0.5cm}%
\begin{minipage}[b]{5cm}
C: Hauptprogramm\\
= "`normale"' Funktion
\medskip
\begin{lstlisting}[gobble=6]
int main (int argc, char **argv)
{
printf ("Hello, world!\n");
return 0;
}
\end{lstlisting}
\vspace{-\bigskipamount}
\end{minipage}
\bigskip
\bigskip
Unix: übergeordnetes Verzeichnis = "`normales"' Verzeichnis
\medskip
\begin{lstlisting}[style=terminal]
cassini/home/peter/foo> ¡ls -la¿
insgesamt 24
drwxr-xr-x 2 peter peter 4096 Okt 6 13:30 .
drwxr-xr-x 172 peter peter 20480 Okt 6 13:30 ..
cassini/home/peter/foo> ¡cd ..¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\begin{minipage}[b]{6.5cm}
\showsectionnonumber
\vspace{-\medskipamount}
\showsubsectionnonumber
Unix und C: Einfachheit als Grundkonzept
% \vspace{-\bigskipamount}
\begin{itemize}
\item
Vermeiden von Ausnahmen
\item
Baukastensystem
\end{itemize}
\end{minipage}\hspace*{0.3cm}%
\begin{minipage}[b]{6cm}
C: Bibliotheken
\begin{itemize}
\item
Grundfunktionen: \file{libc}
\item
3d-Grafik -- Kernfunktion: \file{libGL}
\item
3d-Grafik -- Utilities: \file{libGLU}
\item
3d-Grafik -- Utility Toolkit: \file{libglut}
\item
\dots
\end{itemize}
\vspace*{-0.5cm}
\end{minipage}
\bigskip
\bigskip
Unix: Programme arbeiten zusammen
\medskip
\begingroup\small
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡find . -name "*klausur*.tex" \
| grep -v "fig" | less¿
./2013ss/net/script/slides/net-probeklausur-20120712.tex
./2013ss/net/20130924.0/net-klausur-20130924.tex
./2011ws/rarch/20120322.0/rarch-klausur-20120322.tex
...
./2012ss/hs/20130318.0/hs-klausur-20130318.tex
./2012ss/hs/20120715.0/hs-probeklausur-20120715.tex
./2012ss/hs/20120720.0/hs-klausur-20120720.tex
\end{lstlisting}
\endgroup
\end{frame}
\subsectionnonumber{U.2\quad Die Kommandozeile: Grundlagen}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Programm aufrufen: Namen eingeben, z.\,B.: \lstinline[style=cmd]{ls}
\item
Optionen: \lstinline[style=cmd]{ls -l}
\item
Lange Optionen (GNU-Konvention): \lstinline[style=cmd]{ls --help}
\medskip
\item
Text schreiben: \lstinline[style=cmd]{echo "Hello, world!"}
\item
(String-)Variable setzen: \lstinline[style=cmd]{FOO=bar}
\item
Variable einlesen: \lstinline[style=cmd]{read FOO}
\item
Variable abrufen: \lstinline[style=cmd]{echo $FOO}
\item
Aus Sicherheitsgründen: \lstinline[style=cmd]{echo "$FOO"}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo> ¡FOO=ls¿
cassini/home/peter/bo> ¡echo "$FOO"¿
ls
cassini/home/peter/bo> ¡$FOO¿
2011ws 2012ws 2013ws doc misc projekte
2012ss 2013ss briefe material orga
cassini/home/peter/bo>
\end{lstlisting}
\end{frame}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Befehl zurückholen: Pfeiltasten $\uparrow$, $\downarrow$
\item
Befehl bearbeiten: Pfeiltasten $\leftarrow$, $\rightarrow$ usw.
\item
Befehl vervollständigen: TAB
\item
Befehl rückwärts suchen: Ctrl+R
\item
Bildschirm löschen: Ctrl+L
\item
Befehl abbrechen: Ctrl+C
\bigskip
\pause
\item
Hilfe-Option: \lstinline[style=cmd]{ls --help}
\item
Unix-Handbuch -- \emph{manual\/}: \lstinline[style=cmd]{man ls}\\
(Beenden mit \lstinline[style=cmd]{q})
\end{itemize}
\end{frame}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Verzeichnisse für Programme: \lstinline[style=cmd]{echo $PATH}
\item
Programm in explizitem Verzeichnis aufrufen: \lstinline[style=cmd]{/bin/ls -l}
\item
Programm im aktuellen Verzeichnis aufrufen: \lstinline[style=cmd]{./hello}
\bigskip
\addtolength{\leftskip}{1cm}
\item[MS-DOS:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen\\
\emph{oder\/} sich im aktuellen Verzeichnis befinden.
\smallskip
\item[Unix:]
Ausführbare Programme werden gefunden,\\
wenn sie im \lstinline[style=terminal]{PATH} stehen.
\smallskip
\textarrow\ Vermeiden von Ausnahmen
\pause
\smallskip
Das aktuelle Verzeichnis (\lstinline[style=terminal]{.})
\emph{kann\/} im \lstinline[style=terminal]{PATH} stehen,\\
muß dies aber nicht\only<2>{ --\\
und sollte es aus Sicherheitsgründen auch nicht}.
\end{itemize}
\end{frame}
\subsectionnonumber{U.3\quad Dateisysteme}
\begin{frame}
\showsubsectionnonumber
\begin{itemize}
\item
Dateien listen: \lstinline[style=cmd]{ls}\\
langes Listenformat: \lstinline[style=cmd]{ls -l}\\
rückwärts nach Zeit sortiert: \lstinline[style=cmd]{ls -lrt}
\item
Datei ausgeben: \lstinline[style=cmd]{cat hello.c}
\item
Datei anzeigen: \lstinline[style=cmd]{less hello.c}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Arbeitsverzeichnis anzeigen: \lstinline[style=cmd]{pwd}\\
\item
Arbeitsverzeichnis wechseln: \lstinline[style=cmd]{cd script}\\
(\emph{kein\/} Programm, sondern Shell-Befehl)
\item
übergeordnetes Verzeichnis: \lstinline[style=cmd]{cd ..}
\item
eigenes \newterm{Home-\/}Verzeichnis: \lstinline[style=cmd]{cd}
\item
Wurzelverzeichnis: \lstinline[style=cmd]{cd /}
\item
wieder zurück: \lstinline[style=cmd]{cd -}
\end{itemize}
\pause
\begin{lstlisting}[style=terminal]
cassini/home/peter/bo/2013ss/net/script> ¡cd /usr/bin¿
cassini/usr/bin> ¡cd ../lib¿
cassini/usr/lib> ¡cd¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Dateien kopieren (\emph{copy\/}): \lstinline[style=cmd]{cp}
\item
Dateien verschieben/umbenennen (\emph{move\/}): \lstinline[style=cmd]{mv}
\item
Dateien löschen (\emph{remove\/}): \lstinline[style=cmd]{rm}
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/home/peter> ¡cp -p foo/test.txt¿
cp: missing destination file operand after `foo/test.txt'
Try `cp --help' for more information.
cassini/home/peter> ¡cp -p foo/test.txt .¿
cassini/home/peter> ¡mv test.txt bla.txt¿
cassini/home/peter> ¡cat bla.txt¿
Dies ist ein Test.
cassini/home/peter> ¡rm bla.txt¿
cassini/home/peter>
\end{lstlisting}
\medskip
Aktuelles Verzeichnis: \lstinline[style=cmd]{.}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{grep}: Dateien durchsuchen
\end{itemize}
\begin{lstlisting}[style=terminal,xleftmargin=-3pt]
cassini/.../ainf/20131031.0> ¡grep printf *.c¿
philosophy.c: printf ("The answer is %d.\n", answer ());
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Datenträger in Verzeichnis \newterm{einhängen\/}: \lstinline[style=cmd]{mount}
\end{itemize}
\begin{lstlisting}[style=terminal]
cassini/home/peter> ¡ls /media/sd-card/¿
cassini/home/peter> ¡mount /media/sd-card¿
cassini/home/peter> ¡ls /media/sd-card/¿
DCIM NIKON001.DSC
cassini/home/peter> ¡umount /media/sd-card¿
cassini/home/peter> ¡ls /media/sd-card/¿
cassini/home/peter>
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{Zugriffsrechte}
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
phoenix/home/peter/bo/2013ws/ainf/20131031.0> ¡ls -l¿
...
-rw-r--r-- 1 peter peter 1539 Nov 29 2012 pruzzel-1.c
\end{lstlisting}
\endgroup
\begin{onlyenv}<2>
\begin{picture}(0,1)
\color{red}
\put(0.3,0){\vector(0,1){1.0}}
\put(0.3,0){\vector(2,1){2.1}}
\put(0,-0.1){\makebox(0,0)[tl]{Benutzer (u -- \emph{user\/}) darf lesen und schreiben}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<3>
\begin{picture}(0,1)
\color{red}
\put(0.77,0){\vector(0,1){1.0}}
\put(0.77,0){\vector(3,1){3.1}}
\put(0,-0.1){\makebox(0,0)[tl]{Gruppe (g -- \emph{group\/}) darf lesen}}
\end{picture}
\end{onlyenv}
\begin{onlyenv}<4>
\begin{picture}(0,1)
\color{red}
\put(1.37,0){\vector(0,1){1.0}}
\put(0,-0.1){\makebox(0,0)[tl]{alle anderen (o -- \emph{other\/}) dürfen lesen}}
\end{picture}
\end{onlyenv}
\medskip
\pause[5]
\begin{itemize}
\item
Zugriffsrechte ändern:\\
\lstinline[style=cmd]{chmod o-r pruzzel-1.c} -- Lesezugriff entziehen\\
\lstinline[style=cmd]{chmod g+w pruzzel-1.c} -- Schreibzugriff gewähren\\
\lstinline[style=cmd]{chmod 640 pruzzel-1.c} -- auf \lstinline[style=terminal]{-rw-r-----} setzen
\end{itemize}
\pause
\begin{picture}(0,0)
\color{red}
\put(6.275,0.5){\makebox(0,0)[tl]{%
\begin{math}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 6}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 4}%
\underbrace{\rule{0.7em}{0pt}}_{\textstyle 0}
\end{math}}}
\end{picture}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{ausführbare\/} Dateien
\end{itemize}
\begingroup
\small
\begin{lstlisting}[style=terminal,gobble=6,xleftmargin=-3pt]
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡cat test¿
ls -l systech-20131008.*
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡chmod +x test¿
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡ls -l test¿
-rwxr-xr-x 1 peter peter 25 Okt 6 16:45 test
cassini/home/peter/bo/2013ws/systech/20131008.0> ¡./test¿
-rw-r--r-- 1 peter peter 4120 Okt 6 16:44 systech-20131008.aux
...
\end{lstlisting}
\endgroup
\pause
\begin{itemize}
\item
ausführbare Textdateien: \newterm{Skripte}
\pause
\smallskip
hier: ausführbare Textdatei mit Shell-Befehlen\\
(ohne spezielle Kennung): Shell-Skript
\pause
\smallskip
Kennung: 1.\ Zeile enthält \lstinline[style=terminal]{#!} und den Interpreter,\\
z.\,B.\ \lstinline[style=terminal]{#!/bin/bash}\\
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\newterm{Symbolische Verknüpfungen -- symbolic links}
\smallskip
Verweis auf die eigentliche Datei\\
\textarrow\ Wenn man die Datei löscht, zeigt der Link ins Leere.
\smallskip
Verknüpfung anlegen: \lstinline[style=cmd]{ln -s datei link}\\
(Richtung: wie bei \lstinline[style=cmd]{cp})
\smallskip
Beispiel: \lstinline[style=cmd]{ln -s opengel-magic-double.c opengl-magic.c}
\medskip
\item
\newterm{Harte Verknüpfungen -- hard links}
\smallskip
Dieselben Daten auf dem Datenträger\\
sind unter mehreren Namen verfügbar.\\
\textarrow\ Wenn man einen löscht, sind die Daten noch da.
\smallskip
Anwendungsbeispiel: Snapshot-Backup
\smallskip
Bei Verzeichnissen: \newterm{hard links\/} halten die Verzeichnisstruktur zusammen
\begin{itemize}
\item eigentlicher Name
\item \lstinline{.} von sich selbst aus
\item \lstinline{..} von Unterverzeichnissen aus
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{find}: Dateien anhand ihrer Eigenschaften suchen
\end{itemize}
\small
\begin{lstlisting}[style=terminal,xleftmargin=-7pt]
$ ¡find . -name "*orbit-x*"¿
./20131031.0/orbit-x.c
./20131031.0/orbit-x1.c
./20131031.0/orbit-x
./20131107.0/orbit-x.c
./20131107.0/orbit-x1.c
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x¿
./20131031.0/orbit-x
./20131107.0/orbit-x
$ ¡find . -name "*orbit-x*" -perm /u+x -exec ls -l {} \;¿
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131031.0/orbit-x
-rwxr-xr-x 1 peter peter 15831 Okt 31 13:19 ./20131107.0/orbit-x
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.4\quad Ein- und Ausgabeströme}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Standard-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist ein Test." > test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
\end{lstlisting}
\pause
\smallskip
\begin{itemize}
\item
Standard-Ausgabe an Datei anhängen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Dies ist noch ein Test." >> test.txt¿
$ ¡cat test.txt¿
Dies ist ein Test.
Dies ist noch ein Test.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Fehler-Ausgabe in Datei umleiten
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡cat gibtsnicht.txt > fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
$ ¡cat fehler.txt¿
$ ¡cat gibtsnicht.txt 2> fehler.txt¿
$ ¡cat fehler.txt¿
cat: gibtsnicht.txt: No such file or directory
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
Standard-Eingabe aus Datei lesen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡bc¿
bc 1.06.95
Copyright [...] 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
¡2 + 2¿
4
$ ¡echo "2 + 2" > test.bc¿
$ ¡bc < test.bc¿
4
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.5\quad Pipes}
\begin{frame}[fragile]
\showsubsectionnonumber
Standard-Ausgabe von Programm A\\
wird zu Standard-Eingabe von Programm B
\smallskip
\begin{lstlisting}[style=terminal]
$ ¡echo "2 + 2" | bc¿
4
\end{lstlisting}
\smallskip
\textarrow\ sehr mächtiger "`Baukasten"'
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{sed}: \emph{stream editor}\\
Suchen und Ersetzen (und noch viel mehr)
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡echo "Schlimmer geht nimmer." | sed -e 's/nim/im/g'¿
Schlimmer geht immer.
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{itemize}
\item
\lstinline[style=cmd]{grep}: Standard-Eingabe durchsuchen
\end{itemize}
\begin{lstlisting}[style=terminal]
$ ¡ls | grep slides¿
pgslides.sty
$ ¡ls *.pdf | grep -v fig¿
logo-hochschule-bochum-cvh-text.pdf
logo-hochschule-bochum.pdf
NPN_transistor_basic_operation.pdf
rtech-20131002.pdf
$ ¡ls -l $(ls *.pdf | grep -v fig)¿
-rw-r--r-- 1 peter peter 14488 Sep 2 21:02 logo-hochschule-bochum-cvh-text.pdf
-rw-r--r-- 1 peter peter 31581 Dez 26 2011 logo-hochschule-bochum.pdf
-rw-r--r-- 1 peter peter 8538 Okt 2 2012 NPN_transistor_basic_operation.pdf
-rw-r--r-- 1 peter peter 6753149 Okt 1 22:59 rtech-20131002.pdf
\end{lstlisting}
\end{frame}
\subsectionnonumber{U.6\quad Verzweigungen und Schleifen}
\begin{frame}[fragile]
\showsubsectionnonumber
\begin{lstlisting}[style=terminal]
$ ¡if grep Pipes test.txt; then echo "gefunden"; \
else echo "nicht gefunden"; fi¿
nicht gefunden
$ ¡for x in foo bar baz; do echo $x; done¿
foo
bar
baz
\end{lstlisting}
\end{frame}
\end{document}
cassini/home/peter/bo/2025ss/bs/20250324> tar xzf /home/peter/bo/2012ws/systech/material/linux-0.01.tar.gz
cassini/home/peter/bo/2025ss/bs/20250324> cat $(find linux -type f) | wc -l
10239
cassini/home/peter/bo/2025ss/bs/20250324> rm -r linux/
cassini/home/peter/bo/2025ss/bs/20250324> ls
bs-20250324.pdf pgslides.sty unix-20250324.snm
bs-20250324.tex unix-20250324.aux unix-20250324.tex
fotos unix-20250324.log unix-20250324.toc
logo-hochschule-bochum-cvh-text-v3.pdf unix-20250324.nav unix-20250324.vrb
logo-hochschule-bochum-de-narrow.pdf unix-20250324.out
Operating_system_placement-de.pdf unix-20250324.pdf
cassini/home/peter/bo/2025ss/bs/20250324> which ls
/usr/bin/ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l /usr/bin/ls
-rwxr-xr-x 1 root root 151344 20. Sep 2022 /usr/bin/ls
cassini/home/peter/bo/2025ss/bs/20250324> ls -l
insgesamt 392
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324> ls -a
. unix-20250324.aux
.. unix-20250324.log
... unix-20250324.nav
bs-20250324.pdf unix-20250324.out
bs-20250324.tex unix-20250324.pdf
fotos unix-20250324.snm
logo-hochschule-bochum-cvh-text-v3.pdf unix-20250324.tex
logo-hochschule-bochum-de-narrow.pdf unix-20250324.toc
Operating_system_placement-de.pdf unix-20250324.vrb
pgslides.sty
cassini/home/peter/bo/2025ss/bs/20250324> ls -l -a
insgesamt 400
drwxr-xr-x 2 peter peter 4096 24. Mär 14:18 .
drwxr-xr-x 4 peter peter 4096 24. Mär 08:01 ..
-rw-r--r-- 1 peter peter 0 24. Mär 14:17 ...
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324> ls -la
insgesamt 400
drwxr-xr-x 2 peter peter 4096 24. Mär 14:18 .
drwxr-xr-x 4 peter peter 4096 24. Mär 08:01 ..
-rw-r--r-- 1 peter peter 0 24. Mär 14:17 ...
-rw-r--r-- 1 peter peter 111583 24. Mär 08:34 bs-20250324.pdf
-rw-r--r-- 1 peter peter 42617 24. Mär 08:34 bs-20250324.tex
lrwxrwxrwx 1 peter peter 30 14. Mär 2023 fotos -> /home/peter/Photos/vorstellung
lrwxrwxrwx 1 peter peter 48 24. Mär 08:11 logo-hochschule-bochum-cvh-text-v3.pdf -> ../common/logo-hochschule-bochum-cvh-text-v3.pdf
lrwxrwxrwx 1 peter peter 46 24. Mär 08:12 logo-hochschule-bochum-de-narrow.pdf -> ../common/logo-hochschule-bochum-de-narrow.pdf
lrwxrwxrwx 1 peter peter 43 17. Apr 2016 Operating_system_placement-de.pdf -> ../common/Operating_system_placement-de.pdf
lrwxrwxrwx 1 peter peter 22 13. Apr 2018 pgslides.sty -> ../common/pgslides.sty
-rw-r--r-- 1 peter peter 6806 24. Mär 14:14 unix-20250324.aux
-rw-r--r-- 1 peter peter 58120 24. Mär 14:14 unix-20250324.log
-rw-r--r-- 1 peter peter 4242 24. Mär 14:14 unix-20250324.nav
-rw-r--r-- 1 peter peter 1200 24. Mär 14:14 unix-20250324.out
-rw-r--r-- 1 peter peter 128817 24. Mär 14:15 unix-20250324.pdf
-rw-r--r-- 1 peter peter 0 24. Mär 14:14 unix-20250324.snm
-rw-r--r-- 1 peter peter 19360 24. Mär 14:14 unix-20250324.tex
-rw-r--r-- 1 peter peter 589 24. Mär 14:14 unix-20250324.toc
-rw-r--r-- 1 peter peter 272 24. Mär 14:14 unix-20250324.vrb
cassini/home/peter/bo/2025ss/bs/20250324>