From c16201b16c8feda9e936f6373aa00c4ef535ea8a Mon Sep 17 00:00:00 2001 From: This isn't my name <a@b.com> Date: Wed, 4 Nov 2020 20:59:03 +0100 Subject: [PATCH] Added unix history --- bash_course/exercisesheet/sheet.pdf | 4 +- bash_course/exercisesheet/sol.pdf | 4 +- bash_course/guide/guide.pdf | 4 +- bash_course/pres/firstslide.md | 7 +- bash_course/pres/pres.md | 63 ++- bash_course/pres/pres.pdf | 4 +- unix_history/.gitattributes | 2 + unix_history/build.sh | 7 + unix_history/firstslide.md | 3 + unix_history/header.tex | 133 ++++++ unix_history/img/bk.jpg | 3 + unix_history/img/kt_and_dr.jpg | 3 + unix_history/img/logo_blue.pdf | 3 + unix_history/img/logo_white.pdf | 3 + unix_history/img/pdp7-oslo.jpg | 3 + unix_history/img/unix_tl.png | 3 + unix_history/pres.md | 613 ++++++++++++++++++++++++++++ unix_history/pres.pdf | 3 + unix_history/template.tex | 189 +++++++++ 19 files changed, 1024 insertions(+), 30 deletions(-) create mode 100644 unix_history/.gitattributes create mode 100755 unix_history/build.sh create mode 100644 unix_history/firstslide.md create mode 100644 unix_history/header.tex create mode 100644 unix_history/img/bk.jpg create mode 100644 unix_history/img/kt_and_dr.jpg create mode 100644 unix_history/img/logo_blue.pdf create mode 100644 unix_history/img/logo_white.pdf create mode 100644 unix_history/img/pdp7-oslo.jpg create mode 100644 unix_history/img/unix_tl.png create mode 100644 unix_history/pres.md create mode 100644 unix_history/pres.pdf create mode 100644 unix_history/template.tex diff --git a/bash_course/exercisesheet/sheet.pdf b/bash_course/exercisesheet/sheet.pdf index c5ab2ac..3308028 100644 --- a/bash_course/exercisesheet/sheet.pdf +++ b/bash_course/exercisesheet/sheet.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c84aa49bd05c1e9ca49eeeaf67dacb59c46fab3337ab3815caf02c149cc925ed -size 260700 +oid sha256:68ff9b1889e472804798bf4be84ecdbbe03d195c5f0703c7162f2656cd8cf8bf +size 260697 diff --git a/bash_course/exercisesheet/sol.pdf b/bash_course/exercisesheet/sol.pdf index 79bc581..4d3ce97 100644 --- a/bash_course/exercisesheet/sol.pdf +++ b/bash_course/exercisesheet/sol.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:db55526cde1aa91bfc1e53aaaea372547d53c8126c77c2ee3b07b0acac932218 -size 185033 +oid sha256:e39d7bd3bed022438b0aa7e7b428715b8eb32998219e83e7f28e57e0c95dc32e +size 184950 diff --git a/bash_course/guide/guide.pdf b/bash_course/guide/guide.pdf index ca202a2..19a9494 100644 --- a/bash_course/guide/guide.pdf +++ b/bash_course/guide/guide.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dc1b477ea8dcee973c35edd022b73c1c2bd27fb892d0bf122454de6b734ccd36 -size 356322 +oid sha256:42fe1c28a3d1c3d03986351fa0dd90b9939186498420dd9e09fea7a3c4154245 +size 356312 diff --git a/bash_course/pres/firstslide.md b/bash_course/pres/firstslide.md index 621565a..a3d5496 100644 --- a/bash_course/pres/firstslide.md +++ b/bash_course/pres/firstslide.md @@ -1,8 +1,5 @@ # Welcome to the Bash Workshop! - * If you prefer to work on your own, already know programming or are confident in your abilities, please **sit in the back**. - -<!-- --> - - * If you prefer guided exercises, are completely new to programming, or want to have your hands held, please **sit in the front**. +* Please turn of your camera for the lecture part of the course, we only have 2GB of RAM on this server +* If there are any technical problems, let me know! diff --git a/bash_course/pres/pres.md b/bash_course/pres/pres.md index 58e8f27..c9ecdf1 100644 --- a/bash_course/pres/pres.md +++ b/bash_course/pres/pres.md @@ -1,6 +1,6 @@ --- author: -- Aline Abler +- Nicolas König title: Bash Workshop --- @@ -78,19 +78,19 @@ title: Bash Workshop ### Meaning of strings - echo Hello World + ls my file -* `echo`, `Hello` and `World` are single strings +* `ls`, `my` and `file` are single strings * The first string becomes the command, all following become *arguments* <!-- --> - echo 'Hello World' + ls 'my file' -* Here, `Hello World` is just one string +* Here, `my file` is just one string -### Repeat after me +### Remember! \bigtext{Every word is a single argument unless you use quotes.} @@ -111,7 +111,7 @@ title: Bash Workshop [[1==3]] -* Bash's answer: +* Bash's answer: bash: [[1==3]]: command not found @@ -119,7 +119,7 @@ title: Bash Workshop [[ 1 == 3 ]] -### Repeat after me +### Remember! \bigtext{If there's brackets, you probably need spaces.} @@ -151,7 +151,7 @@ title: Bash Workshop * What bash sees 0 - + ### Why is that important? * *&&*, *||*, *if* and *while* all act based on the return value of something @@ -207,10 +207,41 @@ becomes rm "$var" -### Repeat after me: +### Remember! \bigtext{If there's a dollar, you probably need quotes!} +## Piping + +### Glueing programs together + +* Pipes allow us to connect different programs +* The output of one program is used as the input for another + +### Glueing programs together + + du -b + +lists the size of all directories within the current one + + sort -n + +sorts the input numerically. So + + du -b | sort -n + +gives us a list of all subdirectories sorted by size. + +### Glueing programs together + + ls -l | cut -d' ' -f3 | sort | uniq + +Complicated functionality can be created from very simple programs. + +### Remember! + +\bigtext{If you want to connect programs, you probably want pipes!} + # What bash is used for ## The whole point of bash @@ -252,22 +283,20 @@ becomes ## What happens now? ### Hands on! +#### Guided exercises +* Solve easy exercises in plenum +* Tailored to complete beginners + #### Self-driven exercises * Self study using a guide * Try some of our exercises * Choose the exercises you find interesting! No need to go in order. -#### Guided exercises -* Solve easy exercises in plenum -* Tailored to complete beginners -* Please sit in the front - ### Course material * These slides, exercise sheet and bash guide: \ \soft{http://thealternative.ch} -* Please leave some feedback! \ - \soft{http://feedback.thealternative.ch} <!-- --> * \soft{Theme by} Christian Horea, [CC BY](https://creativecommons.org/licenses/by/4.0/) +* \soft{Original Presentation by} Aline Abler diff --git a/bash_course/pres/pres.pdf b/bash_course/pres/pres.pdf index c7f5f61..e1437be 100644 --- a/bash_course/pres/pres.pdf +++ b/bash_course/pres/pres.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d74d8674d327fb920d754b3d604cf302e7b664061dd7551c95a85828c00edbe4 -size 592303 +oid sha256:ca689be717fbd28a61caecd2ea00f8d4c55611dc83729a579e509e151ebb5d4d +size 639860 diff --git a/unix_history/.gitattributes b/unix_history/.gitattributes new file mode 100644 index 0000000..5b178db --- /dev/null +++ b/unix_history/.gitattributes @@ -0,0 +1,2 @@ +img/ filter=lfs diff=lfs merge=lfs -text +img/* filter=lfs diff=lfs merge=lfs -text diff --git a/unix_history/build.sh b/unix_history/build.sh new file mode 100755 index 0000000..c474c9f --- /dev/null +++ b/unix_history/build.sh @@ -0,0 +1,7 @@ +#!/bin/bash +echo "Building pdf..." +pandoc -t beamer --template template.tex --listings pres.md -o pres-part.pdf --pdf-engine pdflatex \ + && pandoc -t beamer --template template.tex --listings firstslide.md -o firstslide.pdf --pdf-engine pdflatex \ + && pdfunite firstslide.pdf pres-part.pdf pres.pdf \ + && rm firstslide.pdf pres-part.pdf \ + && echo "Build successful" diff --git a/unix_history/firstslide.md b/unix_history/firstslide.md new file mode 100644 index 0000000..753ac05 --- /dev/null +++ b/unix_history/firstslide.md @@ -0,0 +1,3 @@ +# Welcome to the History of Unix Spotlight Talk! + +* If there are any technical problems, let me know! diff --git a/unix_history/header.tex b/unix_history/header.tex new file mode 100644 index 0000000..e9dd259 --- /dev/null +++ b/unix_history/header.tex @@ -0,0 +1,133 @@ +\usepackage[T1]{fontenc} %pipes don't display properly without this +\usepackage[utf8]{inputenc} +\usepackage{listings} +\usepackage{color} +\usepackage{datapie} +\usepackage{multicol} +\usepackage{siunitx} %pretty measurement unit rendering +\usepackage{hyperref} %enable hyperlink for urls +\usepackage{caption} % needed to tweak caption size + + +\usefonttheme[onlymath]{serif} +\setcounter{MaxMatrixCols}{20} + +\DeclareSIUnit\pixel{px} + +\usecolortheme[RGB={37,68,113}]{structure} +\usetheme{Dresden} + +\newenvironment{figurehere} +{\def\@captype{figure}} +{} +\makeatother + +%commands to exclude sections from miniframes +\makeatletter +\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry +\def\beamer@writeslidentry@miniframesoff{% + \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally + {%else + % removed \addtocontents commands + \clearpage\beamer@notesactions% + } +} +\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson} +\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff} +\beamer@compresstrue +\makeatother + + +%various gray colors +\definecolor{slg}{gray}{0.25} +\definecolor{lg}{gray}{0.55} +\definecolor{vlg}{gray}{0.73} +\definecolor{tlg}{gray}{0.9} + +%TheAlt colors +\definecolor{ldorange}{HTML}{F18A20} +\colorlet{ldbright}{ldorange!70!white} % tinted version of orange, used in miniframes +\definecolor{ldblue}{HTML}{254471} + +%reduce caption font size: +\captionsetup{font={scriptsize,color=lg}} + +%do not prepend numbering/lettering to figures/subfigures +\captionsetup{labelformat=empty} %do not prepend letters to figure captions + +%Apply TheAlt colors to theme + % section titles in top navigation bar +\setbeamercolor{section in head/foot}{parent=palette tertiary,fg=ldorange} +\setbeamertemplate{section in head/foot shaded}{\color{ldbright}\usebeamertemplate{section in head/foot}} + % miniframes (little navigation circles) +\setbeamercolor*{mini frame}{fg=ldorange,bg=ldbright} +\setbeamertemplate{mini frame in other section}[default][0] +\setbeamertemplate{mini frame in other subsection}[default][0] + % others +\setbeamercolor{author in head/foot}{fg=white} +\setbeamercolor{subsection in head/foot}{fg=white} +\setbeamercolor{caption name}{fg=vlg} +\setbeamercolor{caption}{fg=vlg} +\setbeamercolor{frametitle}{fg=ldblue} + +\setbeamertemplate{caption}{\raggedright\insertcaption\par} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{bibliography item}[text] + +\definecolor{mygreen}{rgb}{0,0.6,0} +\definecolor{mygray}{rgb}{0.5,0.5,0.5} +\definecolor{mymauve}{rgb}{0.58,0,0.82} + +\lstdefinestyle{custombash}{ + belowcaptionskip=1\baselineskip, + captionpos=, + breaklines=true, + frame=L, + xleftmargin=\parindent, + language=bash, + showstringspaces=false, + basicstyle=\scriptsize\ttfamily, + rulecolor=\color{tlg}, + backgroundcolor=\color{tlg}, + fillcolor=\color{tlg}, + rulesepcolor=\color{tlg}, + commentstyle=\itshape\color{purple!60!black}, + keywordstyle=\bfseries\color{ldorange!80!black}, + %keywordstyle=\bfseries\color{green!40!black}, + identifierstyle=\color{blue}, + stringstyle=\color{orange}, +} + +\lstset{language=Bash,style=custombash,caption={Descriptive Caption Text},label=DescriptiveLabel} + +\title{Bash Workshop} +\author{Aline Abler} + +\institute{\includegraphics[width=0.35\textwidth]{img/logo_blue.pdf}} + + +\renewcommand{\emph}[1]{\textcolor{ldorange}{#1}} +\newcommand{\soft}[1]{\textcolor{lg}{#1}} +\newcommand{\textt}[1]{\textcolor{blue}{\texttt{#1}}} +\newcommand{\bigtext}[1]{\centering\Huge \textbf{\textcolor{ldorange}{#1}}} + +%shortcut to insert small logo in footline +\def\logo{% + \resizebox{!}{3ex}{\includegraphics{img/logo_white.pdf}} +} + +% Define a custom footline that includes our logo +\setbeamertemplate{footline} +{% + \begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot} + \usebeamerfont{title in head/foot}% + \insertshorttitle\hfill\insertframenumber + \end{beamercolorbox} + \begin{beamercolorbox}[wd=\paperwidth,ht=3.5ex,dp=1.625ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot} + \usebeamerfont{author in head/foot} + \raisebox{0.5ex}{\insertshortauthor}\hfill\raisebox{-0.5ex}{\logo} + \end{beamercolorbox} +} + diff --git a/unix_history/img/bk.jpg b/unix_history/img/bk.jpg new file mode 100644 index 0000000..13e3971 --- /dev/null +++ b/unix_history/img/bk.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de9cded98acae0306226ea6c74afda8d2291215865ded5d466bdf31c80f9edb2 +size 150634 diff --git a/unix_history/img/kt_and_dr.jpg b/unix_history/img/kt_and_dr.jpg new file mode 100644 index 0000000..fe76b31 --- /dev/null +++ b/unix_history/img/kt_and_dr.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbc80d22f33a4ea04d8605e59bc3872a36bcb1a68313e66d1f51d6f7b1c18f4 +size 180098 diff --git a/unix_history/img/logo_blue.pdf b/unix_history/img/logo_blue.pdf new file mode 100644 index 0000000..29c5db1 --- /dev/null +++ b/unix_history/img/logo_blue.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e667dfa9893e57bf4a1cb570ea9f0dabd28a68c62a9a83acd2cdb8d9ba3c2e +size 7990 diff --git a/unix_history/img/logo_white.pdf b/unix_history/img/logo_white.pdf new file mode 100644 index 0000000..8612e1f --- /dev/null +++ b/unix_history/img/logo_white.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc40701fd114bfc3de7cfad2403f7ab488e590183b6bac28a75e2f0052aaea0 +size 7931 diff --git a/unix_history/img/pdp7-oslo.jpg b/unix_history/img/pdp7-oslo.jpg new file mode 100644 index 0000000..127d812 --- /dev/null +++ b/unix_history/img/pdp7-oslo.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85867f6e670c7600ac6bc778f2be215e31f89cc1c7d0330db9f108d16b011181 +size 272805 diff --git a/unix_history/img/unix_tl.png b/unix_history/img/unix_tl.png new file mode 100644 index 0000000..3b64187 --- /dev/null +++ b/unix_history/img/unix_tl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e4b2a8bd11df6421fe3954aaced922f919a22fccf78ac90442fb2f3f22bbb6c +size 77546 diff --git a/unix_history/pres.md b/unix_history/pres.md new file mode 100644 index 0000000..ba130ec --- /dev/null +++ b/unix_history/pres.md @@ -0,0 +1,613 @@ +--- +author: +- Nicolas König +title: A Short History of Unix + +--- + +# What is Unix? + +## What is Unix? + +### + +\bigtext{What is Unix?} + +### The Definition + +A system can call itself *Unix* if it conforms to the *Single Unix Specification* maintained by *The Open Group*. + +<!-- + Talk about standardization later +--> + +### Difference between Unix and Linux + +Unix is an interface description, Linux is an OS + +- Linux's syscall interface doesn't provide all the required functions +- Also, to be complient, many more things have to be provided + - header files + - struct definitions + - even shell & command line utilities +- More on that later + +### Current Unixs + +- MacOS +- AIX +- Only one Linux distributions (EulerOS)! + - All of them still adhere to the standards very closely + +<!-- + Doing the conformance tests is expansive +--> + +# The Early Days + +## The Early Days + +### + +\bigtext{The Early Days} + +## Context for the creation + +### Bell Labs + +* Part of telephone-monopoly company AT&T +* very "free" research culture + * The choice of research topic was largely decided by the researchers +* 9 Nobel price winners! + + +### Multics + +* "MULTiplexed Information and Computing Service" +* Collaboration between Bell Labs, General Electric and the MIT +* Successor to MIT's Compatible Time Sharing System (CTSS) + + +<!-- + With modern eyes: Very weird features + Grand unified memory, no distinction between files and "normal" memory + both called resounding success and an utter failure +--> + +### Thompson, Kerningham, Ritchi + +```{=latex} +\begin{figure} + \centering + \includegraphics[width=0.5\textwidth]{img/kt_and_dr.jpg} +\end{figure} +``` + +### Thompson, Kerningham, Ritchi + +```{=latex} +\begin{figure} + \centering + \includegraphics[width=0.6\textwidth]{img/bk.jpg} +\end{figure} +``` + +<!-- + Kerningham & Ritchi both worked on Mutlics +--> + +### The PDP-7 + +* 8K 18-bit words memory +* ca. 570 kHz +* Produced by the Digital Equipment Cooperation (DEC) + +### The PDP-7 + +\begin{figure} + \includegraphics[width=0.5\linewidth]{img/pdp7-oslo.jpg} + \caption{A restored PDP-7} +\end{figure} + +<!-- + Weak computer + No interest in buying a new one after Multics disaster + Used for Circuit desing, but most of the time free +--> + +## The First Unix + +### A Game + +\centering +First, there was a Game + + + +### An IO-Scheduler + +\centering +Then, an IO-Scheduler + +<!-- + Disk inside was too fast + Needed a program to put data on it +--> + +### An Operating System + +\bigtext{"At some Point I realized I was just three weeks away from an operating system."} + +<!-- + Still missing 3 (exec,) editor, shell, assembler + Wife away 3 weeks -> one week per programm +--> + +### The Unix Philosophy + +\bigtext{Make each program do one thing well} + +### The Unix Philosophy + +\centering +If you only have this little memory, you can't make your programs complex! + +\centering +It turned out, that this is a good idea in general + +## Released Unix Versions + +### The First Edition + +Released in Nov. 1971 + +* Supported the PDP-11 +* relatively feature-rich +* already included a Fortran compiler + +<!-- + Story on how they got the PDP-11 + Patent applications! + Name comes from the manual, development very fast + hand-inserted patches when it was send out + "Love, Ken" +--> + +### Common Utilities + +* A lot of commonly known utilities already included in the first release + * `cd`, `chown`, `ls`, `cp`, `dc`, `ln`, `su`, `who`, ... + +### The Third Edition + +Released in Feb. 1973 + +* Included a C compiler +* Included first implementation of pipes + +### The C Programming Language + +* Heavily influenced by BCPL +* Designed as a system programming language +* The language still looked slightly different + * The Dialect is known as K&R-C +* Publicised in the book "The C Programming Language" by Kerningham & Ritchi + +### The C Programming Language + +```c +foo(a, b) + int a; + int *b; +{ + return a + *b; +} +``` +### Fourth Edition + +Released in Nov. 1973 + +* The first edition almost completely written in C + * Made portability possible +* Typically licensed with source code (and for a nominal fee) + +### Seventh Edition + +Released in Jan. 1979 + +* Many new tools still in use today + * `awk`, `make`, `sed`, `tar` +* Included the first version of the Bourne Shell (`sh`) +* Included a fully featured Fortran77 Compiler + +### A story of overwhelming success + +The number of installed Systems rapidly increased + +- 2. Edition (Jun. 1972): 10 systems inside AT&T +- 5. Edition (Jun. 1974): 50 systems inside AT&T + +By 1977, it was running on 500 sites, including 125 Universities + +<!-- + Mind how large systems where at that time! +--> + +# The Unix War + +## The Unix War + +### + +\bigtext{The Unix War} + +## The two large competitors + +### Berkley Software Distribution (BSD) + +* Thompson was a visiting Professor at UCal in the year 1975/1976 + +There, many new tools and features where developed + + * the editor `vi` + * `sendmail` + * a Pascal Compiler + +Then, with 3BSD (1979), a full Unix distribution was released + +<!-- + Worth mentioning: + - the Berkley Fast File System +--> + +### BSD + +They also wrote a port to DEC's new VAX architecture + +- Added support for Virtual memory + +<!-- + C paid off! + + Might not be clear today, but DEC was __big__ back then. + VAX and Unix where so far intertwined that "Not all the world's a VAX" made + it into the "10 commandments for C programmers" + + The only other two ports existing was an intercal (7&8)/32 ports +--> + +### 4.2BSD + +Released in 1983 + +- Added sockets and a complete TCP/IP-stack + +<!-- + THE defining feature for BSD-Linux +--> + + +### System V + +In 1982, antitrust legislation forces AT&T to break up + +- Lifts the ban on selling software + +<!-- + Baby Bells! +--> + +### System V + +\centering +AT&T immideatly proceeded to bundle Unix for commercial use and released System V in 1983 + +<!-- + Not the first commercial AT&T Unix release, 1981 System III (a lot of the + legal stuff had already been settled) +--> + +### System V Release 1 (SVR1) + +- Added an extensive interprocess communication API +- Also included many features from BSD + - `curses` + - `vi` + +### Derivatives of the Two + +There where many derivatives by different companies. + +For BSD: + +- SunOS +- Xenix + +and for System V: + +- HP-UX +- AIX + +<!-- + Even Microsoft made their own! +--> + +### Derivatives + +```{=latex} +\begin{figure} + \includegraphics[width=0.8\linewidth]{img/unix_tl.png} +\end{figure} +``` + +### System V Release 4 (SVR4) + +- The most successful release of System V +- Result of a unification drive between several Unix vendors +- Added a lot of features from all over the Unix world + - `ksh` + - ELF file format + - TCP/IP-support + +### X/Open + +The drive for unification was formalized in the formation of the X/Open consortium + +- It was supposed to provide compatibility guides and standards +- Would later go on to acquire the rights to the Unix name + +BSD, out of fear over the influence of AT&T & Sun, founded its own alternative, the +Open Software Foundation. + +* AT&T then founded, as an answer, Unix International. + +<!-- + When I'm saying BSD, I mean people using BSD + OSF != FSF, carefull +--> + +### Differences + +There were huge differences between these two distributions + +Both technical + +- System V `STREAM` (introduced with SRV3) vs. Berkley `socket` + +and culturally + +- "long-haired Berkley" vs. "short-haired AT&T" + +<!-- + Example: AT&T: System V: Consider it Standard + BSD Leute 4.2 > V + +--> + +### Differences + +\centering +The differences between the two are still found all throughout UNIX! + +### Differences + +From bigger + +* System V used `/usr/bin` and `/usr/sbin`, Berkley `/bin` and `/sbin` + +to smaller things + +* The `ps` command takes two kinds of arguments + * `ps aux`: BSD-style arguments + * `ps -eL`: System V style + +### 1-800-ITS-UNIX + +Berkley System Distribution, inc. (BSDi) was formed 1991 + +- immediately sued by AT&T (1992) + - Usage of the Unix trademark + - Illegal distribution of AT&T source code +- Settled out of court in favor of BSDi (1994) + +<!-- + Every story of the history of Unix should mention the law suits + almost all AT&T code stripped in previous releases + in the end, AT&T lost, only a few source files had to be removed and a few more given attribution +--> + +<!-- + +# The Ascend of Linux + +## The Early Days + +### The GNU project + +### Linus Torvalds + +### The Email + +--> + +# Standards + +## Standards + +### + +\bigtext{Standards} + +## Early Standardisation + +### The ANSI-C Standard + +* drive for standardization started in the early 1980s +* Many new features added + * `void`, function prototypes, type qualifiers,... + +Finally released by ANSI as *X3.159-1989*, it usually called ANSI-C or C89 + +<!-- + Released in 1989, as the name says +--> + +### Posix.1 + +* "Portable Operating System Interface" + -x for Unix +* standardizes the interface C programs use to interact with the OS +* can be implemented by any OS! +* Standadized by *ISO/IEC 9945-1:1990* + +<!-- + I'll quickly skip over Posix.2, which defined a whole bunch of things about the + execution eviroment such as the interface to the C compiler and shell utilitties +--> + +### Posix.1b/c + +There where two important extensions for the standard + +- Posix.1b\ + realtime extensions +- Posix.1c \ + posix threads + +Eventually leading to *ISO/IEC 9945-1:1996*, a revised version of *Posix.1* + +<!-- + You will see these when looking through man pages! + Interestingly, these real time extensions are different from SRV4s! +--> + +### The Open Group + +- Formed in 1996 from a merger between X/Open and the Open Software Foundation +- Inherited the rights to the Unix name from X/Open +- Continued X/Opens standarization + +<!-- + Remmeber X/Open from before +--> + +### X/Open Portability Guide + +X/Open (and later The Open Group) released portability guides (XPG) + +- based upon Posix and typical practices +- The guides where later renamed to "Single Unix Specification" (SUS) +- *XPG4* and *XPG5* (later *SUSv1* and *SUSv2*) where the two most influential standards + - Conformance required to call something Unix! + +<!-- + Remember X/Open from before? + X/Open turned into The Open Group after the Open Software +--> + +### Posix.1-2001/SUSv3 + +in 1999, The Open Group and the ISO/IEC Joint Technical Committee 1 collaborated on a new standard + +- Meant to unify SUSv2 and Posix +- Eventually resulted in *Posix.1-2001* / *ISO/IEC 9945:2002* / *SUSv3* + - most commonly referred to as *SUSv3* +- 3700 Pages! + +### Posix.1-2001/SUSv3 + +Split in four part + +- *Base Definition*\ + Concepts, Definitions, Contents of headers +- *System Interfaces*\ + Specification of various functions (1123 in total) +- *Shell and Utilities*\ + Specifies the shell and utilities (160) +- *Rational*\ + Contains explanations and justifications + +### Posix.1-2008 / SUSv4 + +- The newest standard +- Not many changes relative to the previous standard + +## Weird Features + +### + +\centering +A few weird features of earlier distributions made it into the standards + +### gets() + +```c +char *gets(char *); +``` + +Reads a line from stdin. + +- No way to tell gets the length of the buffer! + +### hsearch() + +```c +#include <search.h> + +int hcreate(size_t nel); +// The two available actions are FIND and ENTER +ENTRY *hsearch(ENTRY item, ACTION action); +void hdestroy(void); +``` +Does anyone notice something weird? + +### insque() + +```c +#include <search.h> + +void insque(void *elem, void *prev); +void remque(void *elem); +``` + +These functions require you to pass in structs with a certain layout! + +<!-- + They also do only have the job, the other have you have to do yourself + Direct wrapper around `incque` instruction on VAX machines +--> + +### Prefixed struct fields + +```c +struct addrinfo { + int ai_flags; + int ai_family; + /* ... */ + struct addrinfo *ai_next; + }; +``` + +Why are the fields in these structs prefixed? + +- K&R-C just threw struct fields in the global namespace! + +### Shared Memory + +There are two (incompatible) shared memory implementations! + +- System V-style: `shmget` +- Posix Style: `shm_open` + +# Conclusions + +## Conclusions + +### Conclusions + +\centering +We know know both what Unix is and where it comes from + +### + +\centering +Thank you for listening! Any questions? diff --git a/unix_history/pres.pdf b/unix_history/pres.pdf new file mode 100644 index 0000000..c401b01 --- /dev/null +++ b/unix_history/pres.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:550b852140278fd7d403202e3d74420c0078bd780b7fa49be154e92013bd9a9d +size 1765639 diff --git a/unix_history/template.tex b/unix_history/template.tex new file mode 100644 index 0000000..899e92d --- /dev/null +++ b/unix_history/template.tex @@ -0,0 +1,189 @@ +\documentclass[aspectratio=169,12pt]{beamer} +\usepackage{lmodern} +\usepackage[T1]{fontenc} %pipes don't display properly without this +\usepackage[utf8]{inputenc} +\usepackage{listings} +\usepackage{color} +\usepackage{datapie} +\usepackage{multicol} +\usepackage{siunitx} %pretty measurement unit rendering +\usepackage{hyperref} %enable hyperlink for urls +\usepackage{caption} % needed to tweak caption size +\usepackage{subcaption} + +\newcommand{\passthrough}[1]{#1} + +\usefonttheme[onlymath]{serif} +\setcounter{MaxMatrixCols}{20} + +\DeclareSIUnit\pixel{px} + +\usecolortheme[RGB={37,68,113}]{structure} +\usetheme{Dresden} + +\newenvironment{figurehere} +{\def\@captype{figure}} +{} +\makeatother + +%commands to exclude sections from miniframes +\makeatletter +\let\beamer@writeslidentry@miniframeson=\beamer@writeslidentry +\def\beamer@writeslidentry@miniframesoff{% + \expandafter\beamer@ifempty\expandafter{\beamer@framestartpage}{}% does not happen normally + {%else + % removed \addtocontents commands + \clearpage\beamer@notesactions% + } +} +\newcommand*{\miniframeson}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframeson} +\newcommand*{\miniframesoff}{\let\beamer@writeslidentry=\beamer@writeslidentry@miniframesoff} +\beamer@compresstrue +\makeatother + + +\providecommand{\tightlist}{% + \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} + + +%various gray colors +\definecolor{slg}{gray}{0.25} +\definecolor{lg}{gray}{0.55} +\definecolor{vlg}{gray}{0.73} +\definecolor{tlg}{gray}{0.9} + +%TheAlt colors +\definecolor{ldorange}{HTML}{F18A20} +\colorlet{ldbright}{ldorange!70!white} % tinted version of orange, used in miniframes +\definecolor{ldblue}{HTML}{254471} + +%%Theme colors +%\definecolor{thgreen}{HTML}{A1A92C} +%\definecolor{thmauve}{HTML}{97284D} + +%Theme colors +\definecolor{thgreen}{HTML}{539727} +\definecolor{thmauve}{HTML}{572272} + +%reduce caption font size: +\captionsetup{font={scriptsize,color=lg}} + +%do not prepend numbering/lettering to figures/subfigures +\captionsetup{labelformat=empty} %do not prepend letters to figure captions + +%Apply TheAlt colors to theme + % section titles in top navigation bar +\setbeamercolor{section in head/foot}{parent=palette tertiary,fg=ldorange} +\setbeamertemplate{section in head/foot shaded}{\color{ldbright}\usebeamertemplate{section in head/foot}} + % miniframes (little navigation circles) +\setbeamercolor*{mini frame}{fg=ldorange,bg=ldbright} +\setbeamertemplate{mini frame in other section}[default][0] +\setbeamertemplate{mini frame in other subsection}[default][0] + % others +\setbeamercolor{author in head/foot}{fg=white} +\setbeamercolor{subsection in head/foot}{fg=white} +\setbeamercolor{caption name}{fg=vlg} +\setbeamercolor{caption}{fg=vlg} +\setbeamercolor{frametitle}{fg=ldblue} + +\setbeamertemplate{caption}{\raggedright\insertcaption\par} +\setbeamertemplate{navigation symbols}{} +\setbeamertemplate{bibliography item}[text] + +\definecolor{mygreen}{rgb}{0,0.6,0} +\definecolor{mygray}{rgb}{0.5,0.5,0.5} +\definecolor{mymauve}{rgb}{0.58,0,0.82} + +\lstdefinestyle{custombash}{ + belowcaptionskip=1\baselineskip, + captionpos=, + breaklines=true, + frame=L, + xleftmargin=\parindent, + language=bash, + morestring=[b]', + morekeywords=[2]{sudo,zypper,notify-send,feh,youtube-dl,sort,tee,head,tail,shuf,mpv,find,convert,xrandr,curl,wget,grep,xdotool,rm,cp,mv,touch,bash,chmod,mkdir,rsync,mplayer,mpv,xdotool,jshon}, + showstringspaces=false, + basicstyle=\scriptsize\ttfamily, + rulecolor=\color{tlg}, + backgroundcolor=\color{tlg}, + fillcolor=\color{tlg}, + rulesepcolor=\color{tlg}, + commentstyle=\itshape\color{thmauve!60!black}, + keywordstyle=\bfseries\color{thgreen}, + identifierstyle=\color{ldblue}, + stringstyle=\color{thmauve} +} + +\lstset{ + style=custombash, + caption={Descriptive Caption Text}, + label=DescriptiveLabel +} + +$if(title)$ +\title{$title$} +$endif$ +$if(subtitle)$ +\subtitle{$subtitle$} +$endif$ +$if(author)$ +\author{$for(author)$$author$$sep$ \and $endfor$} +$endif$ + +\institute{\includegraphics[width=0.35\textwidth]{img/logo_blue.pdf}} +\date{$date$} + +\renewcommand{\emph}[1]{\textcolor{ldorange}{#1}} +\let\oldtextbf\textbf +\renewcommand{\textbf}[1]{\textcolor{ldorange}{\oldtextbf{#1}}} +\newcommand{\soft}[1]{\textcolor{lg}{#1}} +\newcommand{\textt}[1]{\textcolor{blue}{\texttt{#1}}} +\newcommand{\bigtext}[1]{\centering\Huge \textbf{\textcolor{ldorange}{#1}}\normalsize} + +%shortcut to insert small logo in footline +\def\logo{% + \resizebox{!}{3ex}{\includegraphics{img/logo_white.pdf}} +} + +% Define a custom footline that includes our logo +\setbeamertemplate{footline} +{% + \begin{beamercolorbox}[wd=\paperwidth,ht=2.5ex,dp=1.125ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot} + \usebeamerfont{title in head/foot}% + \insertshorttitle\hfill\insertframenumber + \end{beamercolorbox} + \begin{beamercolorbox}[wd=\paperwidth,ht=3.5ex,dp=1.625ex,% + leftskip=.3cm,rightskip=.3cm plus1fil]{author in head/foot} + \usebeamerfont{author in head/foot} + \raisebox{0.5ex}{\insertshortauthor}\hfill\raisebox{-0.5ex}{\logo} + \end{beamercolorbox} +} + +\begin{document} + +$if(title)$ +\frame{\titlepage} +$endif$ + +$for(include-before)$ +$include-before$ + +$endfor$ + +$if(toc)$ +\begin{frame} +\tableofcontents[hideallsubsections] +\end{frame} + +$endif$ + +$body$ + +$for(include-after)$ +$include-after$ + +$endfor$ + +\end{document} -- GitLab