BeOS, the Be Operating System Robert Robinson CS 550-1
What Is BeOS? Coded from scratch 1990: Be, Inc. formed 1996: 1st public release Ran on Be’s proprietary hardware, BeBox 1997: Be quits the hardware business
BeOS History 1998: Release 4, the money-maker Runs on PowerPC, x86, more 2000: Release 5, “the demise” “Personal Edition”; 512MB partition limit 2001: Be bought by Palm, Inc. 2001: BeOS R5.1 leaked to public Today: Haiku (changed from OpenBeOS) and YellowTab
BFS, the Be File System Much of structure borrowed from UNIX Journaling Reduces data loss Eliminates need for scandisk or fsck Rich metadata model Database-like approach to file retrieval
Memory Management Memory Model Implementation at the Microkernel level Figure 3 – BeOS 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 BeOS 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 BeOS Kinds of Threads Pervasive multi-threading Teams Kinds of Threads Real-time & time-sharing listener and image threads
CPU Scheduler Thread priority numbers: 1-120. Levels 1-99: assigned to time-sharing threads. Levels 100-120: reserved for real-time threads. Time-sharing threads are scheduled according to their priority number and a logarithmic scale of 2. 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 given the processor after every time quantum (3 milliseconds in BeOS). Execution on multiple processors Time-sharing threads must always yield to real-time threads. This makes BeOS a streamlined OS for media applications requiring real-time performance.
Deadlock Problem: Dropping of messages Solution: Port Problem: Manipulation of data by another process during execution. Solution: Semaphores Problem: Semaphores Slowness Solution: Benaphores
Thread States Running Thread has processor Ready Thread is waiting for processor Receiving Thread is in receive_data() call Sleeping Thread is in snooze() call Suspended Thread is first created or suspended Waiting Thread is waiting to get processor