From 0f172d0b022f1a2ec3d7465eb7272828ee083f6e Mon Sep 17 00:00:00 2001 From: John Ogness Date: Tue, 19 Dec 2017 10:46:32 +0100 Subject: import presentations from devel/jogness Several presentations are available only in devel/jogness. Add them to master to allow easy access to any trainer. misc/pres_best_en: best practice guidelines misc/pres_ipc_en: overview of linux ipc mechanisms misc/pres_minicoredumper_en: minicoredumper features misc/pres_zynq_en: describe the zynq architecture Signed-off-by: John Ogness --- misc/pres_ipc_en.tex | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 misc/pres_ipc_en.tex (limited to 'misc/pres_ipc_en.tex') diff --git a/misc/pres_ipc_en.tex b/misc/pres_ipc_en.tex new file mode 100644 index 0000000..d5f93f0 --- /dev/null +++ b/misc/pres_ipc_en.tex @@ -0,0 +1,120 @@ +\input{configpres} + +\section{Inter-Process Communication (IPC)} + +\title{Inter-Process Communication (IPC)} +\maketitle + +\begin{frame} +\frametitle{half-duplex unix pipes} +\begin{itemize} +\item file descriptor based +\item read()/write() +\item byte stream +\item private +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{named pipes} +\begin{itemize} +\item file descriptor based +\item read()/write() +\item byte stream +\item named in filesystem +\item protected by filesystem permissions +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{unix domain sockets} +\begin{itemize} +\item file descriptor based +\item read()/write() or recvmsg()/sendmsg() +\item byte stream or packets +\item named in filesystem +\item protected by filesystem permissions +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{netlink} +\begin{itemize} +\item file descriptor based +\item recvmsg()/sendmsg() +\item packets +\item protected by CAP\_NET\_ADMIN capability +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{message queues} +\begin{itemize} +\item uses special message queue descriptors +\item mq\_receive()/mq\_send() or msgrcv()/msgsnd() +\item packets +\item named in filesystem +\item protected by user/group/other permissions +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{shared memory} +\begin{itemize} +\item mmap() +\item shared raw data (no copies) +\item named in filesystem +\item protected by filesystem permissions +\item requires "manual" queue implementation (if queues needed) +\item efficient notification/synchronization with condvar/mutex +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{d-bus} +\begin{itemize} +\item uses special handles (object/bus model) +\item remote procedure calls (rpc) +\begin{itemize} +\item request/response (calls) +\item publish/subscribe (events) +\end{itemize} +\item rpc-function data parameters +\item protected by interface configurations +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{semaphores} +\begin{itemize} +\item uses special semaphore identifiers +\item semop() +\item no data +\item named in filesystem +\item protected by filesystem permissions +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{signals} +\begin{itemize} +\item no data +\item protected by user permissions +\item runs in userspace interrupt context +\item complicated to implement correctly +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{inotify} +\begin{itemize} +\item file descriptor based +\item no data +\item named in filesystem +\item protected by filesystem permissions +\item like signals but no interrupt context +\item events missed if not listening +\end{itemize} +\end{frame} + +\input{tailpres} -- cgit v1.2.3