Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Copland (operating system)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Copland design=== Copland was designed to consist of the Mac OS on top of a [[microkernel]] named [[Nukernel]], which would handle basic tasks such as application startup and memory management, leaving all other tasks to a series of semi-special programs known as ''servers''. For instance, networking and file services would not be provided by the kernel itself, but by servers that would be sending requests through [[Inter-process communication|interapplication communications]].{{sfn|Francis|1996|p=32}} The Copland system as a whole consists of the combination of Nukernel, various servers, and a suite of application support libraries to provide implementations of the well-known classic Macintosh programming interface.{{sfn|Dierks|1995}} Application services are offered through a single program known officially as the Cooperative Program Address Space.{{sfn|Francis|1996|pp=41-45}} Mac programs run much as they do under System 7, as cooperative tasks that use the non-[[Reentrant (subroutine)|reentrant]] Toolbox calls. Copland provided much improved stability for applications running compared to System 7 β "the system wonβt crash as it can in System 7. Instead, because the Copland microkernel tracks all resources (such as, tasks, timers, and areas), it can reclaim them when it terminates the process associated with your application.".<ref name="ReferenceA">Copland Technical Overview, Apple Developer Press 1995</ref> A worst-case scenario is that an application in the CPAS environment crashes, taking down the entire environment with it. This does not result in the system as a whole going down, however, and the Cooperative Program Address Space environment is automatically restarted.{{sfn|Francis|1996|p=}}{{page needed|date=March 2024}} In addition, Copland provides pre-emptive scheduling of tasks where "the Process Manager gives each primary task the opportunity to be preemptively scheduled by the microkernel."<ref name="ReferenceA"/> [[File:Copland organization.svg|thumb|right|The Copland runtime architecture includes purple boxes showing threads of control, and the heavy lines show different memory partitions. In the upper left the blue boxes are running several System 7 applications, and the toolbox code supporting them (green). Two headless applications are running in their own spaces, providing file and web services. At the bottom are the OS servers in the same memory space as the kernel, indicating colocation.]] New applications, written with Copland in mind, are able to directly communicate with the system servers and thereby gain many advantages in terms of performance and scalability. They can also communicate with the kernel to launch separate applications or threads, which run as separate processes in [[protected memory]], as in most modern operating systems.<ref>{{Cite news |last=Markoff |first=John |date=1996-12-23 |title=Why Apple Sees Next as a Match Made in Heaven |url=https://www.nytimes.com/1996/12/23/business/why-apple-sees-next-as-a-match-made-in-heaven.html |access-date=2024-03-07 |work=The New York Times |language=en-US |issn=0362-4331}}</ref> These separate applications cannot use non-reentrant calls like QuickDraw, however, and thus could have no user interface. Apple suggested that larger programs could place their user interface in a normal Macintosh application, which then start worker threads externally.{{sfn|Dierks|1995}} Copland is fully [[PowerPC]] (PPC) native. System 7 had been ported to the PowerPC with great success; some parts of the system run as PPC code. There is enough 68k code left in the system to be run in emulation, and especially user applications, however that the operating system must map some data between the two environments. In particular, every call into the Mac OS requires a mapping between the interrupt systems of the 68k and PPC. Removing these mappings would greatly improve general system performance. At WWDC 1996, engineers claimed that system calls would execute as much as 50% faster.{{sfn|Francis|1996|p=9, 18}} Copland is also based on the then-recently defined [[Common Hardware Reference Platform]], or CHRP, which standardized the Mac hardware to the point where it could be built by different companies and can run other operating systems ([[Solaris (operating system)|Solaris]] and [[IBM AIX|AIX]] were two of many mentioned). This was a common theme at the time; many companies were forming groups to define standardized platforms to offer an alternative to the "[[Wintel]]" platform that was rapidly becoming dominant β examples include [[88open]], [[Advanced Computing Environment]], and the [[AIM alliance]].{{sfn|Francis|1996|p=9}} The fundamental challenge of Copland's development and adoption was getting all of these functions to fit into an ordinary Mac. System 7.5 already uses up about 2.5 [[megabyte]]s (MB) of RAM, which is a significant portion of the total RAM in most contemporaneous machines. Copland is a hybrid of two systems, as its native foundation also hosts the Cooperative Program Address Space application environment as well as Copland native Server tasks. Copland thus uses a [[Mach (kernel)|Mach]]-inspired memory management system and relies extensively on [[Shared library|shared libraries]],{{sfn|Francis|1996|pp=19, 20}} with the goal of being about 50% larger than 7.5.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)