Continued with introduction of OS assignment 3.

parent 9efab91b
......@@ -36,6 +36,8 @@ breaklines=false
\begin{document}
\definecolor{darkgray}{rgb}{0.95,0.95,0.95}
\maketitle
\tableofcontents
......@@ -61,9 +63,9 @@ procesboom. De meest gebruikte manier om een nieuwe process te starten is:
terug van het aangemaakte kindproces. In de taal C zou dat er zo uit
kunnen zien:
\begin{lstlisting}[numbers=none]
\begin{lstlisting}[numbers=none,backgroundcolor=\color{darkgray}]
if( (cpid = fork()) < 0 )
perror("Fork() failure");
perror("fork() failure");
else if( cpid == 0 )
child_process();
else
......@@ -113,13 +115,23 @@ digraph pipe {
}
\end{dot2tex}
Een unidirectionele pipe wordt in POSIX-compatible besturingssystemen met
\texttt{pipe()} aangemaakt. Dat geeft een array van file descriptors terug die
naar de uiteinden van de pipe gaan. In de meeste gevallen zal het ouderproces
schrijven naar het kindprocess en dan sluit het ouderproces \texttt{pipefd[0]}
en het kindproces sluit \texttt{pipefd[1]} met \texttt{close()}. Vervolgens
schrijft het ouderproces data met \texttt{write()} naar \texttt{pipefd[1]} en
het kindproces leest dan met \texttt{read()} de data uit \texttt{pipefd[0]}.
Als het kindproces data naar het ouderproces wil sturen, draaien \texttt{0} en
\texttt{1} van de file descriptors om.
Ook is er een functie, genaamd \texttt{mkfifo()}, die het mogelijk maakt om
een pipe aan het bestandsysteem te koppelen. Hiermee kunnen twee processen
communiceren door de output/input te schrijven naar een ``bestand''. Dit bestand
wordt niet op de hardeschijf opgeslagen, maar enkel aan het bestandssysteem
gekoppeld. Voorbeeld van een named pipe:
\begin{lstlisting}[numbers=none]
\begin{lstlisting}[numbers=none,backgroundcolor=\color{darkgray}]
mkfifo --mode=0666 /tmp/sql_dump
gzip --stdout -d file.gz > /tmp/sql_dump
\end{lstlisting}
......@@ -127,7 +139,7 @@ gzip --stdout -d file.gz > /tmp/sql_dump
\noindent
en dan kan er in bijvoorbeeld MySQL gelezen worden door:
\begin{lstlisting}[numbers=none]
\begin{lstlisting}[numbers=none,backgroundcolor=\color{darkgray}]
LOAD DATA INFILE '/tmp/sql_dump' INTO TABLE table_name;
\end{lstlisting}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment