Be OS AJ Schuster Robert Robinson Nicole Chung
Be. OS AJ Schuster Robert Robinson Nicole Chung Brian Hoffman
What Is Be. OS? • Not a UNIX derivative • Be, Inc. formed in 1990 • First public release in 1996 – Ran on proprietary hardware: Be. Box • 1997: Be quits the hardware business
Be. OS on x 86 • 1998: Release 4 retails for US$70 – Runs on Power. PC, x 86, more • 2000: Release 5 “Personal Edition” – 512 MB partition limit • 2001: Be bought by Palm, Inc. • Today: Open. Be. OS
BFS (Be File System) • Structure based on standard *NIX hierarchy • Earliest general-purpose journaling file system – Similar to transaction support in databases – Eliminates need for scandisk or fsck
Memory Management Figure 3 – Be. OS Architecture <jon@rupture. net> • Memory Model • Implementation at the Microkernel level
Memory Model • Virtual Memory Addresses (mapping dynamic memory) – Shared by threads and processes – Can be locked into RAM • Object-Oriented Design • Full Memory Protection • Symmetric Multi-Processing (SMP)
Implementation at the Microkernel Level • Be. OS Threads and Objects • Communication between Threads – Message Handling with BLooper – Ports (FIFO message repositories) – Semaphores (data protected locks) – Benaphores (Increased efficiency in data protection)
Internal Data Structures • Structures Used in Process Management – Thread creation – Thread execution and control – Thread termination • Structures Used in Memory Management – BLooper (Interface between objects & threads) – Semaphores, Ports, and Images • Structures Used in File Management – Bfile – Bdirectory
Threads • Multi-threaded Architecture of Be. OS – Pervasive multi-threading – Teams • Kinds of Threads – Real-time & time-sharing – listener and image threads
CPU Scheduler • • • There are two types of threads: real-time and time-sharing. Each thread is assigned a priority number 1 -120. Levels 1 -99 are assigned to time-sharing threads. Levels 100 -120 are reserved for real-time threads. Time-sharing threads are scheduled according to their priority number and a logarithmic scale of 2. – A thread with priority number 6 would be 26 or 64. – A thread with priority number 8 would be 28 or 256. • So a thread with a priority number greater by 2 is four times as likely to be chosen to execute.
CPU Scheduler (continued) • • • A new time-sharing thread is chosen every “scheduler quantum. ” A “scheduler quantum” is set to 3 milliseconds in Be. OS. Multiple processors are a little more complicated but follow the same principle. – No time-sharing thread should keep a real-time thread from executing. A real-time thread can be executing on the first processor while a timesharing thread executes on another processor. If a real-time thread wakes or enters the scheduling queue if there is no processor available to it then the time-sharing thread with lowest priority is kicked back onto the queue and the real-time thread takes its place. Time-sharing threads always yield to real-time threads. This makes Be. OS a streamlined OS for media applications requiring real-time performance.
Deadlock • Ports – act as a message queue • Semaphores – prevent race situations and situations where multiple instructions must execute without interference • Benaphores – combination of an atomic variable and a semaphore
Thread States Running Ready Thread receives attention from the computer Thread is waiting for its turn to run Receiving Thread is in receive_data() call Asleep Thread is in snooze() call Suspended Thread is first created or suspended Waiting Thread is waiting to get a semaphore
- Slides: 13