Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
OS-9
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Technology== ===Modern and archaic design=== OS-9 (especially the 68k version and thereafter) clearly distinguishes itself from the prior generation of embedded operating systems in many aspects. * Runs on 8-bit, 16-bit, and [[32-bit CPU]]s. * Clear separation between [[user mode]] and supervisor (kernel) mode. * Dynamic use of individually and separately built software components (executable program images and [[kernel module]]s) rather than a [[Static library|statically linked]] single monolithic image. * Unix-like process name-space model (not [[Memory model (computing)|memory model]]) and user shell program. * Clear separation between hardware independent (e.g. file managers) and hardware dependent (e.g. [[device driver]]s) layers. When compared with more modern operating systems: * The kernel is written entirely in [[assembly language]] (OS-9/68K version only) and [[C (programming language)|C]] (portable version to other architectures) using simple internal data structures, reducing flexibility and improvement scope while improving determinability required for [[real-time operating system]]s. * Performance was also affected for some operations, but assembly language helped with the speed issue. * Systems without a [[memory management unit]] (MMU) have no memory protection against illegal access, nor per-process memory protection, while systems with an MMU can have memory protection enabled. The module controlling the MMU can be included or omitted by the system integrator to enable or disable memory protection. This allows OS-9 to run on older systems which do not include an MMU. * Older versions of OS-9 do not support [[POSIX threads]], while all OS-9 supported processors support POSIX threads. * No [[Symmetric multiprocessing|SMP]] support for multiple sockets, cores, or hardware threads in the same OS-9 instance (can run as a RTOS on one of the cores of dual core processors like [[Core Duo]] and [[Core 2 Duo]], when [[Linux]] is running on the other core doing general purpose tasks). ===Task scheduling=== OS-9's real-time kernel allows multiple independent applications to execute simultaneously through task switching and inter-process communication facilities. All OS-9 programs run as processes containing at least one lightweight process (thread) but may contain an effectively unlimited number of threads. Within a process, these lightweight processes share memory, I/O paths, and other resources in accordance with the POSIX threads specification and API. OS-9 schedules the threads using a fixed-priority preemptive scheduling algorithm with round-robin scheduling within each priority. Time slicing is supported. The priority levels can be divided into a range that supports [[Aging (scheduling)|aging]] and a higher-priority range that uses strict priority scheduling. Each process can access any system resource by issuing the appropriate OS-9 service request. At every scheduling point, OS-9 compares the priority of the thread at the head of the active queue to the priority of the current thread. It context switches to the thread on the active queue if its priority is higher than the current processes' priority. Aging artificially increases the effective priority of threads in the active queue as time passes. At defined intervals, time slicing returns the current thread to the active queue behind other threads at the same priority. ===Kernel modules=== * Kernel β Contains task switching, memory allocation, and most non-I/O calls * IOMAN β Handles I/O calls to various file managers and drivers. *File managers basic set: ** SCF, Serial files (serial devices) ** RBF, Random block (disk devices) ** SBF, Sequential block (tape Devices) ** NFM, NULL devices (USB and other devices) ** MFM, Message ** SPF, Stacked Protocol devices ( Networking) ** PCF, PC [[File Allocation Table|FAT]] files ** PIPEMAN, [[Pipeline (software)|Pipe]] manager ** Modman - Memory module directories * SSM β System security (MMU handling) * Cache β Cache handling, * VectXXX β Vector / PIC handler * FPU β [[Floating point emulation]] * Align β Address alignment fault handler ===Commands=== The following list of [[command (computing)|commands]] is supported by the OS-9 shell. '''Shell built-in commands''' {{div col|colwidth=9em|small=yes}} * chd * chx * [[kill (command)|kill]] * w * [[wait (command)|wait]] * [[setenv]] * [[unsetenv]] * setpr * [[login|logout]] * profile * ex * -e * -ne * -p * -p=<str> * -np * -t * -nt * -v * -nv * -x * -nx {{div col end}} '''Utilities for operating system functions''' {{div col|colwidth=9em|small=yes}} * attr * [[copy (command)|copy]] * [[date (command)|date]] * deiniz * [[del (command)|del]] * deldir * dsave * dump * [[echo (command)|echo]] * fixmod * free * ident * iniz * link * list * load * makdir * mdir * merge * mfree * pd * [[pr (Unix)|pr]] * printenv * [[ps (Unix)|procs]] * [[ren (command)|rename]] * save * [[Unix shell|shell]] * setime * [[sleep (command)|sleep]] * [[tee (command)|tee]] * tmode * [[touch (command)|touch]] * unlink {{div col end}} '''System management utilities''' {{div col|colwidth=9em|small=yes}} * [[backup]] * [[fsck|dcheck]] * devs * [[format (command)|format]] * frestore * fsave * irqs * [[login]] * os9gen * tsmon * xmode {{div col end}} '''General utilities''' {{div col|colwidth=9em|small=yes}} * binex * build * cfp * [[cmp (Unix)|cmp]] * code * [[compress]] * count * edt * exbin * expand * [[grep]] * [[help (command)|help]] * [[Make (software)|make]] * [[qsort]] * [[tr (Unix)|tr]] * [[emacs|umacs]] {{div col end}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)