[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     ! 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