add existing documentation
This commit is contained in:
41
doc/protocols.txt
Executable file
41
doc/protocols.txt
Executable file
@@ -0,0 +1,41 @@
|
||||
vim: shiftwidth=3
|
||||
|
||||
Rosetta Operating System: Protocols
|
||||
===================================
|
||||
|
||||
1 Introduction
|
||||
--------------
|
||||
|
||||
Due to its nature as a message-passing operating system, a standard
|
||||
"langauge" is needed in order to allow different components of the system
|
||||
to communicate with each other. This document describes the communication
|
||||
layer built on top of kernel IPC primitives to facilitate the fast transfer
|
||||
of structured data between components.
|
||||
|
||||
|
||||
2 Design Goals
|
||||
--------------
|
||||
|
||||
The key consideration for Protocols is low-overhead and speed. All system
|
||||
functionality is accessed via sending messages, so any speed or memory costs
|
||||
incurred will affect the performance of the entire system.
|
||||
|
||||
In addition, Protocols should be language-agnostic. Two components written
|
||||
in two different programming languages should be able to communicate as long
|
||||
as they both understand the same protocol.
|
||||
|
||||
|
||||
3 Overview
|
||||
----------
|
||||
|
||||
Protocols is a very thin layer overtop of Mango ports. It provides a
|
||||
declarative language for describing message layouts in a language-agnostic
|
||||
format, and a tool for generating concrete implementations of protocols in
|
||||
various programming languages.
|
||||
|
||||
Protocols makes heavy use of Mango's I/O vectors facility to avoid performing
|
||||
any dynamic memory allocation or unnecessary copying of data. As often as
|
||||
possible, any parameters you pass to a protocol function will be copied
|
||||
directly into the address space of the recipient. This makes Protocols
|
||||
essentially free to use.
|
||||
|
||||
Reference in New Issue
Block a user