16.12.2012 Views

A Technical History of Apple's Operating Systems - Mac OS X Internals

A Technical History of Apple's Operating Systems - Mac OS X Internals

A Technical History of Apple's Operating Systems - Mac OS X Internals

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Mac</strong> <strong>OS</strong> X <strong>Internals</strong> (www.osxbook.com) 79<br />

The glue code mapped <strong>Mac</strong> <strong>OS</strong> operations to UNIX system calls. The MAE<br />

engine and associated data were mapped into memory using the mmap() system<br />

call. If the host platform supported copy-on-write, substantial portions <strong>of</strong> MAE<br />

could be shared between its multiple instances.<br />

MAE made heavy use <strong>of</strong> processor caches, performing best on machines with<br />

large caches. It cached both instructions and data. Examples <strong>of</strong> instruction cache use<br />

by MAE included the following.<br />

• Native code to support the 680x0 glue and dynamic compilation<br />

• Native code to emulate instructions<br />

• Dynamically compiled code to emulate instructions<br />

Examples <strong>of</strong> data cache use by MAE included the following.<br />

• Native data to support the 680x0 glue and dynamic compilation<br />

• Dispatch table 47 for mapping 680x0 opcodes to native emulation code<br />

• 680x0 instructions emulated by MAE<br />

• 680x0 data for <strong>Mac</strong> <strong>OS</strong> system code and the Toolbox<br />

• Graphics framebuffer<br />

MAE was discontinued on May 14, 1998.<br />

MAS<br />

Apple had announced another emulation-based <strong>Mac</strong>-on-Unix solution called<br />

<strong>Mac</strong>intosh Application Services (MAS). Unlike MAE, MAS supported both 680x0-based<br />

and PowerPC-based <strong>Mac</strong>intosh s<strong>of</strong>tware on PowerPC-based Unix systems such as<br />

AIX.<br />

47 The dispatch table was indexed by the 16-bit 680x0 opcode. It was perhaps the most aggressive<br />

cache user among all <strong>of</strong> MAE’s components.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!