BeOS-by-Robert-Robinson-2005

Download Report

Transcript BeOS-by-Robert-Robinson-2005

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
Figure 3 – BeOS Architecture
<[email protected]>
• 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
– 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