# Changeset b9537e6 for doc/theses/thierry_delisle_PhD/thesis/text/io.tex

Ignore:
Timestamp:
Oct 30, 2020, 12:35:59 PM (2 years ago)
Branches:
arm-eh, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
f7e4f8e8
Parents:
223a633
Message:

A whole bunch of thesis work and existing work

File:
1 edited

### Legend:

Unmodified
 r223a633 \chapter{I/O} \chapter{User Level \glsxtrshort{io}} As 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. \section{Existing options} Since \glsxtrshort{io} operations are generally handled by the \subsection{\texttt{epoll}, \texttt{poll} and \texttt{select}} \subsection{Linux's AIO} \begin{displayquote} AIO is a horrible ad-hoc design, with the main excuse being "other, less gifted people, made that design, and we are implementing it for compatibility because database people - who seldom have any shred of taste - actually use it". But AIO was always really really ugly. \begin{flushright} -- Linus Torvalds\cit{https://lwn.net/Articles/671657/} \end{flushright} \end{displayquote} Interestingly, in this e-mail answer, Linus goes on to describe a true \textit{asynchronous system call} interface'' that does [an] arbitrary system call X with arguments A, B, C, D asynchronously using a kernel thread'' in some kind of arbitrary \textit{queue up asynchronous system call} model''. This description is actually quite close to the interface of the interface described in the next section. \subsection{\texttt{io\_uring}} A very recent addition to Linux, \texttt{io\_uring}\cit{io\_uring} is a framework that aims to solve many of the problems listed with the above mentioned solutions. \subsection{Extra Kernel Threads} \subsection{Extra Kernel Threads}\label{io:morethreads} Finally, 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}. \subsection{Discussion}