1729 |
\end{comment} |
\end{comment} |
1730 |
|
|
1731 |
|
|
1732 |
\section{Process Management} |
\section{The POSIX personality} |
1733 |
|
|
1734 |
|
The Hurd offers a POSIX API to the user by default. This is |
1735 |
|
implemented in the GNU C library which uses the services provided by |
1736 |
|
the Hurd servers. Several system servers support the C library. |
1737 |
|
|
1738 |
|
|
1739 |
|
\subsection{Process Management} |
1740 |
\label{proc} |
\label{proc} |
1741 |
|
|
1742 |
The \texttt{proc} server implements Unix process semantics in the Hurd |
The \texttt{proc} server implements Unix process semantics in the Hurd |
1755 |
\end{comment} |
\end{comment} |
1756 |
|
|
1757 |
|
|
1758 |
\subsection{Signals} |
\subsubsection{Signals} |
1759 |
|
|
1760 |
Each process can register the thread ID of a signal thread with the |
Each process can register the thread ID of a signal thread with the |
1761 |
\texttt{proc} server. The proc server will give the signal thread ID |
\texttt{proc} server. The proc server will give the signal thread ID |
1814 |
interface (which allows you to manipulate the environment variables |
interface (which allows you to manipulate the environment variables |
1815 |
and \texttt{auth} capability of a running task, etc). |
and \texttt{auth} capability of a running task, etc). |
1816 |
|
|
1817 |
|
|
1818 |
\section{Exec} |
\subsubsection{The \texttt{fork()} function} |
1819 |
|
|
1820 |
|
To be written. |
1821 |
|
|
1822 |
|
|
1823 |
|
\subsubsection{The \texttt{exec()} function} |
1824 |
|
|
1825 |
The exec() operation will be done locally in a task. Traditionally, |
The exec() operation will be done locally in a task. Traditionally, |
1826 |
exec() overlays the same task with a new process image, because |
exec() overlays the same task with a new process image, because |
1904 |
idea. The details will depend a lot on the actual implementation. |
idea. The details will depend a lot on the actual implementation. |
1905 |
|
|
1906 |
|
|
1907 |
\section{Unix Domain Sockets} |
\subsection{Unix Domain Sockets} |
1908 |
|
|
1909 |
In the Hurd on Mach, there was a global pflocal server that provided |
In the Hurd on Mach, there was a global pflocal server that provided |
1910 |
unix domain sockets and pipes to all users. This will not work very |
unix domain sockets and pipes to all users. This will not work very |
1940 |
shared pflocal server, one per user. |
shared pflocal server, one per user. |
1941 |
|
|
1942 |
|
|
1943 |
\section{Pipes} |
\subsection{Pipes} |
1944 |
|
|
1945 |
Pipes can be either implemented using Unix Domain Sockets, or maybe |
Pipes are implemented using \texttt{socketpair()}, that means as |
1946 |
even using shared memory for extra performance. |
unnamed pair of Unix Domain Sockets. The \texttt{pflocal} server will |
1947 |
|
support this by implementing pipe semantics on the socketpair if |
1948 |
|
requested. |
1949 |
|
|
1950 |
\begin{comment} |
\begin{comment} |
1951 |
Either a shared lock has to be used (implemented inside the physical |
It was considered to use shared memory for the pipe implementation. |
1952 |
memory server), or the shared memory protocol must be able to deal |
But we are not aware of a lock-free protocol using shared memory |
1953 |
with multiple concurrent readers and writers. |
with multiple readers and multiple writers. It might be possible, |
1954 |
|
but it is not obvious if that would be faster: Pipes are normally |
1955 |
|
used with \texttt{read()} and \texttt{write()}, so the data has to |
1956 |
|
be copied from and to the supplied buffer. This can be done |
1957 |
|
efficiently in L4 even across address spaces using string items. In |
1958 |
|
the implementation using sockets, the \texttt{pflocal} server |
1959 |
|
handles concurrent read and write accesses with mutual exclusion. |
1960 |
\end{comment} |
\end{comment} |
1961 |
|
|
1962 |
|
|
1963 |
\section{Filesystem Translators} |
\subsection{Filesystems} |
1964 |
|
|
1965 |
|
\subsubsection{Directory lookup across filesystems} |
1966 |
\label{xfslookup} |
\label{xfslookup} |
1967 |
|
|
1968 |
The Hurd has the ability to let users mount filesystems and other |
The Hurd has the ability to let users mount filesystems and other |