summaryrefslogtreecommitdiff
path: root/misc/pres_ipc_en.tex
diff options
context:
space:
mode:
Diffstat (limited to 'misc/pres_ipc_en.tex')
-rw-r--r--misc/pres_ipc_en.tex120
1 files changed, 120 insertions, 0 deletions
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}