Limited CPU Usage

OrderOne Scalable Embedded performs all its core activities in a single process that has only a single OS thread. There are multiple user threads in this core process that are cooperatively threaded.

Cooperative threading means that a thread must explicitly yield before execution will pass to another thread. Cooperative threading is commonly used in low power embedded devices for several reasons:

  • very fast context switching
  • extremely low latency, high speed message passing
  • explicit control over the scheduler
  • reduced cpu usage

The OS has no knowledge of these cooperative threads. It sees the process as having only a single thread. All activities that have the potential to block or delay are handled using asynchronous communication. There are no busy waits or blocking until information is returned.

This single process forks into two other processes that are then nice’d to a very low priority. These forked processes handle the Diffie-Hellman computations and system shell interaction respectively. Communication with these processes is via asynchronous socket communication.