% LaTeX2e
% `Das Filesystem FAT, Modul Betriebssysteme 2009'
% 17. April 2009, Peter Schmid
% RCS-Id: $Id: ldap.tex,v 1.1 2008/10/31 08:22:35 pschmid Exp $

%\documentclass{beamer}
\documentclass[handout]{beamer}

\mode<presentation>
{
  \usetheme{Warsaw}

  \setbeamercovered{transparent}
}

\usepackage[german]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{alltt}

%\setbeameroption{show notes}

%---------------------------------------------------------------------

\title{Das Filesystem FAT}

\author{Peter Schmid}

\institute[HSZ-T] 
{
  Hochschule f\"u{}r Technik Z\"u{}rich\\
  Studiengang Informatik
}

\date[modbs08]{17.4.2009}

\pgfdeclareimage[height=0.5cm]{university-logo}{fig/hsz-logo}
\logo{\pgfuseimage{university-logo}}

%---------------------------------------------------------------------

\begin{document}

\begin{frame}

  \titlepage

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}{Outline}

  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}

% ---------------------------------------------------------------------

\section{Einf"uhrung}

\subsection{Wieso FAT?}

\begin{frame}
  \frametitle{Wieso FAT?}

  \begin{itemize}
  \item<1-> Sehr einfaches Filesystem auf Basis Linked Allocation.
  \item<2-> Wird noch immer breit eingesetzt, z.B. auf
    USB-Memorysticks, Flashspeicher f"ur Kameras, Handys usw.
  \item<3-> Gut dokumentiert.
  \item<4-> Zeigt auch auf, wie sich die Massenspeicher und die
    Betriebssysteme ge"andert haben.
  \end{itemize}
  
\end{frame}



% ---------------------------------------------------------------------

\subsection{Geschichtlicher R"uckblick}

\begin{frame}
  \frametitle{Geschichtlicher R"uckblick}

  \begin{itemize}
  \item<1-> Urspr"unglich 1976/77 f"ur \emph{Microsoft Standalone Disk
    BASIC} entwickelt (Bill Gates / Marc McDonald). F"ur QDOS
    1980 eingesetzt.
  \item<2-> War Hauptunterschied zwischen CP/M und MS-DOS und
    hauptverantwortlich f"ur den Erfolg von MS-DOS.
  \item<3-> Die Eintr"age in der \textbf{F}ile \textbf{A}llocation
    \textbf{T}able waren zuerst nur 12 bit lang. Bei gr"osseren Disks
    wurden diese auf 16 (ca. 1987, DOS 3.31) und 32 bit (ca. 1996,
    Windows 95 OSR2) angepasst.
  \item<4-> Die L"ange der Dateinamen waren auf 8 Zeichen und 3 Zeichen
    f"ur die Erweiterung (8.3 Schema) beschr"ankt.
  \item<5-> Mit Einf"uhrung von VFAT konnten die Dateinamen bis 255
    Zeichen lang werden (Windows 95).
  \end{itemize}
\end{frame}
  

% ---------------------------------------------------------------------

\section{Leistungsmerkmale}


\subsection{FAT12}


\begin{frame}
  
  \frametitle{FAT12}
 
  \begin{itemize}
  \item<1-> Wird eigentlich nur noch bei Floppies verwendet
  \item<2-> Max 32 MB
  \item<3-> Hierarchische Verzeichnisse waren nicht vorgesehen.
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\subsection{FAT16}

\begin{frame}
  
  \frametitle{FAT16}

  \begin{itemize}
  \item<1-> Wenn heute von FAT gesprochen wird, meint man meistens FAT16.
  \item<2-> Max Volume Size: 2 GiB
  \item<3-> Max Cluster Count: 65'517 
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\subsection{FAT32}

\begin{frame}
  
  \frametitle{FAT32}

  \begin{itemize}
  \item<1-> Max file size: 4 GiB 
  \item<2-> Max cluster count: 268'435'437 ($2^{28}-19$)
  \item<3-> Max Volume Size: 2 TiB
  \end{itemize}
 
\end{frame}

% ---------------------------------------------------------------------

\section{Aufbau am Beispiel FAT16}

\subsection{Partitionen}

\begin{frame}
  
  \frametitle{Partitionen}

  \begin{itemize}
  \item<1-> Ein FAT-Filesystem kann ganze Harddisk oder eine
    Partition belegen.
  \item<2-> Urspr"unglich kannte DOS nur eine Partition pro Disk. Die
    anderen Partitionen waren f"ur andere Betriebssysteme.
  \item<3-> War auf 4 Partitionen beschr"ankt (4 prim"are Partitionen).
  \item<4-> Heute kann man eine Partition (sog. erweiterte Partition)
    selbst wieder partitionieren (logische Partitionen).
  \item<5-> Unter Linux heisst eine Disk z.B. \texttt{/dev/hda}, eine
    Partition \texttt{/dev/hda1}.
  \item<5-> Kennzeichnung Partition: 0x04, 0x06, 0x0E
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\subsection{Bereiche}

\begin{frame}
  
  \frametitle{Bereiche}

  \begin{itemize}
  \item<1-> Reserved Sectors
    \begin{itemize}
    \item<1-> Boot Sector (512 Bytes)
    \item<1-> more reserved sectors (n * 512 Bytes)
    \end{itemize}
  \item<2-> File Allocation Table
    \begin{itemize}
    \item<2-> Table 1
    \item<2-> Table 2 (copy)
    \end{itemize}
  \item<3-> Root Directory
  \item<4-> Data Region (Clusters)
  \end{itemize}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Boot Sector}

F"ur Zahlen gr"osser 255 wird f"ur die Notation Little Endian verwendet.

\begin{tabular}{|l|l|l|}
\hline
\textbf{Offset} & \textbf{Length} & \textbf{Description} \\
\hline
\hline
0x0b & 2 & Bytes per sector (512) \\
\hline
0x0d & 1 & Sectors per cluster  \\
\hline
0x0e & 2 & Reserved sector count \\
\hline
0x10 & 1 & Number of file allocation tables. \\
\hline
0x11 & 2 & Max. number of root directory entries \\
\hline
0x13 & 2 & Total sectors \\
\hline
0x36 & 8 & FAT file system type (e.g. FAT16) \\
\hline
0x1FE & 2 & Boot sector signature (0x55 0xAA) \\
\hline
\end{tabular}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{File Allocation Table}

\begin{tabular}{|l|l|}
\hline
\textbf{Value}  & \textbf{Description} \\
\hline
\hline
0x0000 & Free Cluster \\
\hline
0x0001 & Reserved value; do not use \\
\hline
0x0002 - 0xFFEF & Used cluster; value points to next cluster\\
\hline
0xFFF0 - 0xFFF6 & Reserved values; do not use \\
\hline
0xFFF7 & Bad sector in cluster or reserved cluster \\
\hline
0xFFF8 - 0xFFFF & Last cluster in file \\
\hline
\end{tabular}

\end{frame}

% ---------------------------------------------------------------------

\begin{frame}
  
  \frametitle{Root Directory}

Jeder Eintrag ist 32 Bytes gross. Anzahl Eintr"age in Bootsector definiert.

\begin{tabular}{|l|l|l|}
\hline
\textbf{Offset} & \textbf{Length} & \textbf{Description} \\
\hline
0x00 & 8 & DOS file name (padded with spaces) \\
0x08 & 3 & DOS file extension (padded with spaces) \\
0x0b & 1 & File Attributes \\
0x0d & 1 & Create time, fine resolution: 10ms units \\
0x0e & 2 & Create time. The hour, minute and second \\
0x10 & 2 & Create date (year, month and day) \\
0x12 & 2 & Last access date (year, month and day) \\
0x16 & 2 & Last modified time \\ 
0x18 & 2 & Last modified date \\ 
0x1a & 2 & First cluster \\
0x1c & 4 & File size in bytes \\
\hline
\end{tabular}




\end{frame}

% ---------------------------------------------------------------------


\begin{frame}
  
  \frametitle{DOS file name, First Byte}
\begin{tabular}{|l|l|}
\hline
\textbf{Value} & \textbf{Description} \\
\hline
\hline
0x00 & Entry is available and no subsequent entry is in use \\
\hline
0x05 & Initial character is actually 0xE5 \\
\hline
0x2E & 'Dot' entry; either '.' or '..' \\
\hline
0xE5 & Entry has been previously erased and is available. \\
\hline
\end{tabular}


\end{frame}

% ---------------------------------------------------------------------







\end{document}
