Changeset 70f97c8 for doc/theses
- Timestamp:
- Jul 3, 2023, 1:12:51 PM (2 years ago)
- Branches:
- master
- Children:
- 96ea77a
- Parents:
- 00b046f (diff), 1ae3ac46 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- doc/theses/colby_parsons_MMAth
- Files:
-
- 4 edited
-
Makefile (modified) (2 diffs)
-
glossary.tex (modified) (1 diff)
-
local.bib (modified) (1 diff)
-
text/channels.tex (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/colby_parsons_MMAth/Makefile
r00b046f r70f97c8 6 6 TeXLIB = .:style:text:${Macros}:${Build}:../../bibliography: 7 7 LaTeX = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error -output-directory=${Build} 8 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex -terse8 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex 9 9 10 10 MAKEFLAGS = --no-print-directory --silent # … … 117 117 # Must have *.aux file containing citations for bibtex 118 118 if [ ! -r ${basename $@}.aux ] ; then ${LaTeX} ${basename $@}.tex ; fi 119 -${BibTeX} ${Build}/${basename $@}119 ${BibTeX} ${Build}/${basename $@} 120 120 # Some citations reference others so run again to resolve these citations 121 121 # ${LaTeX} ${basename $@}.tex -
doc/theses/colby_parsons_MMAth/glossary.tex
r00b046f r70f97c8 35 35 \newabbreviation{rtti}{RTTI}{\Newterm{run-time type information}} 36 36 \newabbreviation{fcfs}{FCFS}{\Newterm{first-come first-served}} 37 \newabbreviation{lifo}{LIFO}{\Newterm{last-in first-out}} 38 \newabbreviation{fifo}{FIFO}{\Newterm{first-in first-out}} 37 39 \newabbreviation{toctou}{TOCTOU}{\Newterm{time-of-check to time-of-use}} 38 40 -
doc/theses/colby_parsons_MMAth/local.bib
r00b046f r70f97c8 27 27 pages={11--20}, 28 28 year={2017} 29 }30 31 @phdthesis{Delisle22,32 author={{Delisle, Thierry}},33 title={The \textsf{C}$\mathbf{\forall}$ Scheduler},34 year={2022},35 publisher="UWSpace",36 url={http://hdl.handle.net/10012/18941}37 }38 39 @article{Hoare78,40 title={Communicating sequential processes},41 author={Hoare, Charles Antony Richard},42 journal={Communications of the ACM},43 volume={21},44 number={8},45 pages={666--677},46 year={1978},47 publisher={ACM New York, NY, USA}48 }49 50 @mastersthesis{Beach21,51 author={{Beach, Andrew James}},52 title={Exception Handling in \textsf{C}$\mathbf{\forall}$},53 year={2021},54 publisher="UWSpace",55 url={http://hdl.handle.net/10012/17617}56 29 } 57 30 -
doc/theses/colby_parsons_MMAth/text/channels.tex
r00b046f r70f97c8 9 9 This model is an alternative to shared-memory concurrency, where threads communicate directly by changing shared state. 10 10 11 Channels were first introduced by Kahn~\cite{Kahn74} and extended by Hoare~\cite{ Hoare78} (CSP).11 Channels were first introduced by Kahn~\cite{Kahn74} and extended by Hoare~\cite{CSP} (CSP). 12 12 Both papers present a pseudo (unimplemented) concurrent language where processes communicate using input/output channels to send data. 13 13 Both languages are highly restrictive. … … 47 47 48 48 In general, the order values are processed by the consumer does not affect the correctness of the producer-consumer problem. 49 For example, the buffer can be LIFO, FIFO, or prioritized with respect to insertion and removal.49 For example, the buffer can be \gls{lifo}, \gls{fifo}, or prioritized with respect to insertion and removal. 50 50 However, like MX, a buffer should ensure every value is eventually removed after some reasonable bounded time (no long-term starvation). 51 51 The simplest way to prevent starvation is to implement the buffer as a queue, either with a cyclic array or linked nodes. … … 53 53 \section{First-Come First-Served} 54 54 As pointed out, a bounded buffer requires MX among multiple producers or consumers. 55 This MX should be fair among threads, independent of the FIFObuffer being fair among values.55 This MX should be fair among threads, independent of the \gls{fifo} buffer being fair among values. 56 56 Fairness among threads is called \gls{fcfs} and was defined by Lamport~\cite[p.~454]{Lamport74}. 57 57 \gls{fcfs} is defined in relation to a doorway~\cite[p.~330]{Lamport86II}, which is the point at which an ordering among threads can be established. … … 68 68 Currently, only the Go programming language provides user-level threading where the primary communication mechanism is channels. 69 69 Experiments were conducted that varied the producer-consumer algorithm and lock type used inside the channel. 70 With the exception of non-\gls{fcfs} or non- FIFOalgorithms, no algorithm or lock usage in the channel implementation was found to be consistently more performant that Go's choice of algorithm and lock implementation.70 With the exception of non-\gls{fcfs} or non-\gls{fifo} algorithms, no algorithm or lock usage in the channel implementation was found to be consistently more performant that Go's choice of algorithm and lock implementation. 71 71 Performance of channels can be improved by sharding the underlying buffer \cite{Dice11}. 72 However, the FIFOproperty is lost, which is undesirable for user-facing channels.72 However, the \gls{fifo} property is lost, which is undesirable for user-facing channels. 73 73 Therefore, the low-level channel implementation in \CFA is largely copied from the Go implementation, but adapted to the \CFA type and runtime systems. 74 74 As such the research contributions added by \CFA's channel implementation lie in the realm of safety and productivity features.
Note:
See TracChangeset
for help on using the changeset viewer.