Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
OS-9
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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}}
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
OS-9
(section)
Add topic