BeOS AJ Schuster Robert Robinson Nicole Chung Brian Hoffman.

Post on 18-Jan-2016

217 views 0 download

Transcript of BeOS AJ Schuster Robert Robinson Nicole Chung Brian Hoffman.

BeOS

AJ SchusterRobert Robinson

Nicole ChungBrian Hoffman

What Is BeOS?

• Not a UNIX derivative

• Be, Inc. formed in 1990

• First public release in 1996– Ran on proprietary hardware: BeBox

• 1997: Be quits the hardware business

BeOS on x86

• 1998: Release 4 retails for US$70– Runs on PowerPC, x86, more

• 2000: Release 5 “Personal Edition”– 512MB partition limit

• 2001: Be bought by Palm, Inc.

• Today: OpenBeOS

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

• Memory Model

• Implementation at the Microkernel level

Figure 3 – BeOS Architecture<jon@rupture.net>

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 theMicrokernel 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• 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 BeOS.

• 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 time-sharing 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 BeOS 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 StatesRunning Thread receives attention from the

computer

Ready 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