source: doc/theses/thierry_delisle_PhD/thesis/text/io.tex @ bace538

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since bace538 was bace538, checked in by Peter A. Buhr <pabuhr@…>, 3 years ago

proofread Thierry's chapter 2 and 3, update latex formatting, add bibliography entries

  • Property mode set to 100644
File size: 2.0 KB
Line 
1\chapter{User Level \glsxtrshort{io}}
2As mentionned in Section~\ref{prev:io}, User-Level \glsxtrshort{io} requires multiplexing the \glsxtrshort{io} operations of many \glspl{thrd} onto fewer \glspl{proc} using asynchronous \glsxtrshort{io} operations. Various operating systems offer various forms of asynchronous operations and as mentioned in Chapter~\ref{intro}, this work is exclusively focuesd on Linux.
3
4\section{Existing options}
5Since \glsxtrshort{io} operations are generally handled by the
6
7\subsection{\lstinline|epoll|, \lstinline|poll| and \lstinline|select|}
8
9\subsection{Linux's AIO}
10
11
12
13\begin{displayquote}
14        AIO is a horrible ad-hoc design, with the main excuse being "other,
15        less gifted people, made that design, and we are implementing it for
16        compatibility because database people - who seldom have any shred of
17        taste - actually use it".
18
19        But AIO was always really really ugly.
20
21        \begin{flushright}
22                -- Linus Torvalds\cit{https://lwn.net/Articles/671657/}
23        \end{flushright}
24\end{displayquote}
25
26Interestingly, in this e-mail answer, Linus goes on to describe
27``a true \textit{asynchronous system call} interface''
28that does
29``[an] arbitrary system call X with arguments A, B, C, D asynchronously using a kernel thread''
30in
31``some kind of arbitrary \textit{queue up asynchronous system call} model''.
32This description is actually quite close to the interface of the interface described in the next section.
33
34\subsection{\texttt{io\_uring}}
35A very recent addition to Linux, @io_uring@\cit{io\_uring} is a framework that aims to solve many of the problems listed with the above mentioned solutions.
36
37\subsection{Extra Kernel Threads}\label{io:morethreads}
38Finally, if the operating system does not offer any satisfying forms of asynchronous \glsxtrshort{io} operations, a solution is to fake it by creating a pool of \glspl{kthrd} and delegating operations to them in order to avoid blocking \glspl{proc}.
39
40\subsection{Discussion}
41
42
43\section{Event-Engine}
44
45
46\section{Interface}
Note: See TracBrowser for help on using the repository browser.