# source:doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex@5569a31

Last change on this file since 5569a31 was 5569a31, checked in by Thierry Delisle <tdelisle@…>, 3 years ago

Merged changes proposed by peter and added citations

• Property mode set to 100644
File size: 38.5 KB
Line
1\documentclass[11pt]{article}
2\usepackage{fullpage}
3\usepackage[T1]{fontenc}
4\usepackage[utf8]{inputenc}
5\usepackage{xspace}
6\usepackage{xcolor}
7\usepackage{graphicx}
8\usepackage{epic,eepic}
9\usepackage{listings}                   % for code listings
10\usepackage{glossaries}
11\usepackage{textcomp}
12% cfa macros used in the document
13\input{common}
14
15\setlist{topsep=6pt,parsep=0pt}         % global reduce spacing between points
16\newcommand{\uC}{$\mu$\CC}
18\setlength{\abovecaptionskip}{5pt plus 3pt minus 2pt}
453However, as a full-featured library it includes much more than I need and could conflict with other features of \CFA unless significant effort is made to merge them together.
454
455\paragraph{Event Engine}
456Laying on top of the asynchronous interface layer is the event engine.
457This engine is responsible for multiplexing (batching) the synchronous I/O requests into asynchronous I/O requests and demultiplexing the results to appropriate blocked user threads.
458This step can be straightforward for simple cases, but becomes quite complex when there are thousands of user threads performing both reads and writes, possibly on overlapping file descriptors.
459Decisions that need to be made include:
460\begin{enumerate}
461\item
462whether to poll from a separate kernel thread or a regularly scheduled user thread,
463\item
464what should be the ordering used when results satisfy many requests,
465\item
466how to handle threads waiting for multiple operations, etc.
467\end{enumerate}
468
469\paragraph{Interface}
470Finally, for these non-blocking I/O components to be available, it is necessary to expose them through a synchronous interface because that is the \CFA concurrent programming style.
471The interface can be novel but it is preferable to match the existing POSIX interface when possible to be compatible with existing code.
472Matching allows C programs written using this interface to be transparently converted to \CFA with minimal effort.
473Where new functionality is needed, I will create a novel interface to fill gaps and provide advanced features.
474
475
476% ===============================================================================
477% ===============================================================================
478\section{Discussion}
479
480
481% ===============================================================================
482% ===============================================================================
483\section{Timeline}
484
485
486% B I B L I O G R A P H Y
487% -----------------------------
488\cleardoublepage
489\phantomsection         % allows hyperref to link to the correct page