Ignore:
Timestamp:
Aug 5, 2022, 4:18:02 PM (2 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, master, pthread-emulation
Children:
62c5a55
Parents:
511a9368
Message:

Filled in several citations and did some of the todos

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/thierry_delisle_PhD/thesis/text/practice.tex

    r511a9368 r8040286  
    6060To achieve this goal requires each reader to have its own memory to mark as locked and unlocked.
    6161The read acquire possibly waits for a writer to finish the critical section and then acquires a reader's local spinlock.
    62 The write acquire acquires the global lock, guaranteeing mutual exclusion among writers, and then acquires each of the local reader locks.
     62The write acquires the global lock, guaranteeing mutual exclusion among writers, and then acquires each of the local reader locks.
    6363Acquiring all the local read locks guarantees mutual exclusion among the readers and the writer, while the wait on the read side prevents readers from continuously starving the writer.
    64 
    6564Figure~\ref{f:SpecializedReadersWriterLock} shows the outline for this specialized readers-writer lock.
    6665The lock in nonblocking, so both readers and writers spin while the lock is held.
    67 \todo{finish explanation}
     66This very wide sharding strategy means that readers have very good locality, since they only ever need to access two memory location.
    6867
    6968\begin{figure}
     
    138137
    139138\subsection{Event FDs}
    140 Another interesting approach is to use an event file descriptor\cit{eventfd}.
     139Another interesting approach is to use an event file descriptor\cite{eventfd}.
    141140This Linux feature is a file descriptor that behaves like \io, \ie, uses @read@ and @write@, but also behaves like a semaphore.
    142141Indeed, all reads and writes must use a word-sized values, \ie 64 or 32 bits.
     
    218217\end{figure}
    219218
    220 The next optimization is to avoid the latency of the event @fd@, which can be done by adding what is effectively a binary benaphore\cit{benaphore} in front of the event @fd@.
     219The next optimization is to avoid the latency of the event @fd@, which can be done by adding what is effectively a binary benaphore\cite{schillings1996engineering} in front of the event @fd@.
    221220The benaphore over the event @fd@ logically provides a three state flag to avoid unnecessary system calls, where the states are expressed explicit in Figure~\ref{fig:idle:state}.
    222221A \proc begins its idle sleep by adding itself to the idle list before searching for an \at.
Note: See TracChangeset for help on using the changeset viewer.