[BACK]Return to overview.html CVS log [TXT][DIR] Up to [local] / prex-old / doc / html / doc

Annotation of prex-old/doc/html/doc/overview.html, Revision 1.1.1.1

1.1       nbrk        1: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                      2: <html>
                      3: <head>
                      4:   <title>Prex Technology Overview</title>
                      5:   <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
                      6:   <meta name="keywords" content="Prex, embedded, real-time, operating system, RTOS, open source, free">
                      7:   <meta name="author" content="Kohsuke Ohtani">
                      8:   <link rel="stylesheet" type="text/css" href="../default.css" media="screen">
                      9:   <link rel="stylesheet" type="text/css" href="../print.css" media="print">
                     10: </head>
                     11: <body>
                     12: <div id="top">
                     13: </div>
                     14: <div id="middle">
                     15:
                     16: <table id="content" cellpadding="0" cellspacing="0">
                     17:   <tbody>
                     18:
                     19:     <tr>
                     20:       <td id="header" colspan="2" valign="top">
                     21:         <table width="100%" border="0" cellspacing="0" cellpadding="0">
                     22:         <tr>
                     23:           <td id="logo">
                     24:             <a href="http://prex.sourceforge.net/">
                     25:             <img alt="Prex logo" src="../img/logo.gif" border="0"
                     26:             style="width: 281px; height: 56px;"></a>
                     27:           </td>
                     28:           <td id="brief" align="right" valign="bottom">
                     29:             An Open Source, Royalty-free,<br>
                     30:            Real-time Operating System
                     31:           </td>
                     32:         </tr>
                     33:         </table>
                     34:       </td>
                     35:     </tr>
                     36:
                     37:     <tr>
                     38:       <td id="directory" style="vertical-align: top;">
                     39:       <a href="http://prex.sourceforge.net/">Prex Home</a> >
                     40:       <a href="index.html">Document Index</a> >
                     41:       Technology Overview
                     42:     </tr>
                     43:     <tr><td class="pad" colspan="2" style="vertical-align: top;"></td></tr>
                     44:
                     45:     <tr>
                     46:       <td id="main" style="vertical-align: top;">
                     47:       <h1>Prex Technology Overview</h1>
                     48:
                     49: <i>Version 1.1, 2005/09/01</i>
                     50:
                     51: <h3>Table of Contents</h3>
                     52: <ul>
                     53:   <li><a href="#component">Prex Components</a></li>
                     54:   <li><a href="#microkernel">Microkernel</a></li>
                     55:   <li><a href="#driver">Device Drivers</a></li>
                     56:   <li><a href="#server">System Servers</a></li>
                     57:   <li><a href="#lib">Emulation Libraries</a></li>
                     58:   <li><a href="#loader">Boot Loader</a></li>
                     59: </ul>
                     60: <br>
                     61:
                     62: <h2 id="component">Prex Components</h2>
                     63: <p>
                     64: The following figure illustrates the Prex components.
                     65: </p>
                     66: <img alt="Prex Overview" src="img/overview.gif" border="1"
                     67: style="width: 600px; height: 416px;"><br>
                     68:
                     69: <i><b>Figure 1. Prex Components</b></i>
                     70: <p>
                     71: The Prex microkernel provides only fundamental functions to abstract
                     72: a processor and minimum hardware. In addition, it provides some real-time
                     73: support functions for a real-time task.
                     74: The microkernel also provides standard kernel services
                     75: for the device drivers.
                     76: There exists a strict interface for the thin layer called
                     77: as "Architecture Dependent Layer" in the microkernel.
                     78: </p>
                     79: <p>
                     80: The other basic OS functions like process, file system, networking etc.,
                     81: are provided by system server tasks.
                     82: There is no characteristic difference between server tasks and normal tasks.
                     83: The tasks will communicate with other by using IPC message via a microkernel.
                     84: Prex will also provide some interface emulation libraries for an application
                     85: interoperability.
                     86: Although the server tasks are required to run UNIX processes, a native
                     87: real-time task can work without any system servers.
                     88:
                     89: </p>
                     90:
                     91: <h2 id="microkernel">Microkernel</h2>
                     92:
                     93: The design policies for the Prex kernel are as follows:
                     94: <ul>
                     95:   <li><b>Simple &amp Small</b>: Move OS functions to user mode as much as possible.</li>
                     96:   <li><b>Easy to Port</b>: Define common interface for various processor architectures.</li>
                     97:   <li><b>POSIX Support</b>: Provide minimum kernel support for POSIX.</li>
                     98:   <li><b>Real-time Capable</b>: Execute native real-time tasks directory on the Prex kernel.</li>
                     99: </ul>
                    100:
                    101: Kernel has responsibility to handle the following items.
                    102: <ul>
                    103:   <li><b>Object</b> - holds a queue of messages.</li>
                    104:   <li><b>Message</b> - is used to communicate between threads.</li>
                    105:   <li><b>Task</b> - is a container which holds threads, memory maps, and objects.</li>
                    106:   <li><b>Thread</b> - is a minimum execution unit including processor's register state.</li>
                    107:   <li><b>Scheduler</b> - decides which thread can use processor.</li>
                    108:   <li><b>Virtual Memory</b> - provides memory protection, virtual address mapping.</li>
                    109:   <li><b>Timer</b> - manages timer lists for applications &amp drivers.</li>
                    110:   <li><b>Exception</b> - is a hardware interrupt or event from processor.</li>
                    111:   <li><b>Device</b> - provides common interface to access device drivers.</li>
                    112:   <li><b>Synchronize Object</b> - supports mutexes, condition variables, semaphores.</li>
                    113:   <li><b>System</b> - provides some useful system functions. e.g. statistics, log, time etc.</li>
                    114: </ul>
                    115:
                    116: <h2 id="driver">Device Drivers</h2>
                    117: <p>
                    118: Prex device drivers work in kernel mode.
                    119: All device drivers are stored in one single driver module, and this is
                    120: separated from the kernel module.
                    121: The driver module is linked with the kernel at boot time, and all device
                    122: drivers are initialized at that time.
                    123: </p>
                    124: <p>
                    125: The interface between the kernel and drivers are defined clearly as
                    126: "Driver Kernel Interface (DKI)". The kernel provides the following services
                    127: for device drivers.
                    128: </p>
                    129: <ul>
                    130:   <li>Device object service</li>
                    131:   <li>Kernel memory allocation</li>
                    132:   <li>Physical page allocation</li>
                    133:   <li>Interrupt handling service</li>
                    134:   <li>Scheduler service</li>
                    135:   <li>Timer service</li>
                    136:   <li>Debug service</li>
                    137: </ul>
                    138:
                    139: <h2 id="server">System Servers</h2>
                    140: <p>
                    141: The Prex tasks can communicate with each other by sending message to the
                    142: specific object, as illustrated below.
                    143: </p>
                    144:
                    145: <img alt="Microkernel bus" src="img/ipc.gif" border="1"
                    146: style="width: 482px; height: 333px;"><br>
                    147:
                    148: <i><b>Figure 2. Prex message passing</b></i>
                    149:
                    150: <p>
                    151: Prex provides some standard server tasks to support generic OS functions
                    152: that are removed from the kernel. The server tasks include:
                    153: </p>
                    154: <ul>
                    155:   <li>Process server</li>
                    156:   <li>File system server</li>
                    157:   <li>Exec server</li>
                    158:   <li>Network server</li>
                    159:   <li>Boot server</li>
                    160: </ul>
                    161: <p>
                    162: A server task will create its object named like "fs", "proc", or "exec"
                    163: in the kernel object name space.
                    164: Each user mode task will send a message to these objects in order to use
                    165: the server services.
                    166: </p>
                    167: <p>
                    168: A server task can re-send the received message to another task.
                    169: This mechanism can allow servers to "forward" the specific message
                    170: to another server.
                    171: For example, the proxy server will forward a received message to
                    172: the remote proxy server via network.
                    173: </p>
                    174:
                    175: <h2 id="lib">Emulation Libraries</h2>
                    176: <p>
                    177: Prex provides some libraries to emulate POSIX interfaces. They will include
                    178: standard UNIX system calls, pthread, and real-time extension.
                    179: The typical works of these libraries are to pack the application's
                    180: request into a message, and send it to the appropriate server.
                    181: It will encapsulate the message structure defined by each server task.
                    182: For example, an application can use fork() system call as a library routine,
                    183: which will automatically send the message to the process server.
                    184: So, there is no need to modify the source code of the existing UNIX
                    185: applications to run it on Prex.
                    186: </p>
                    187:
                    188: <img alt="OS Emulation" src="img/emulate.gif" border="1"
                    189: style="width: 485px; height: 331px;"><br>
                    190: <i><b>Figure 3. OS Emulation</b></i>
                    191:
                    192: <p>
                    193: The emulation libraries can be made not only for POSIX
                    194: but also for API of other OS. This allows Prex to support the execution
                    195: of various different OS applications without changing the system servers.
                    196: The developers will benefit from the source level compatibility of
                    197: existing applications.
                    198: </p>
                    199:
                    200: <h2 id="loader">Boot Loader</h2>
                    201: <p>
                    202: Prex provides the OS boot loader if it is required on the target platform.
                    203: The boot loader will support the following minimum functions:
                    204: </p>
                    205: <ul>
                    206:   <li><b>Minimum Setup:</b> Program some essential registers for processor
                    207:       or hardware. e.g. disabling interrupts</li>
                    208:   <li><b>Boot Information:</b> Collect some boot information if it needed. e.g. memory size</li>
                    209:   <li><b>Program Loading:</b> Copy some programs to RAM if it is needed. e.g. kernel, driver,
                    210:     boot tasks etc.</li>
                    211: </ul>
                    212: <p>
                    213: Since the boot mechanism depends on the hardware of each system,
                    214: its design is not strictly defined.<br>
                    215: Note: It's better to use existing boot loader if possible.
                    216: </p>
                    217:
                    218:       </td>
                    219:     </tr>
                    220:     <tr>
                    221:       <td id="footer" colspan="2" style="vertical-align: top;">
                    222:         <a href="http://sourceforge.net">
                    223:         <img src="http://sourceforge.net/sflogo.php?group_id=132028&amp;type=1"
                    224:         alt="SourceForge.net Logo" border="0" height="31" width="88"></a><br>
                    225:         Copyright&copy; 2005-2007 Kohsuke Ohtani
                    226:       </td>
                    227:     </tr>
                    228:
                    229:   </tbody>
                    230: </table>
                    231:
                    232: </div>
                    233: <div id="bottom"></div>
                    234:
                    235: </body>
                    236: </html>

CVSweb