Apple HTC patent lawsuit : Exhibits A - E
Transcript of Apple HTC patent lawsuit : Exhibits A - E
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
1/179
EXHIBIT A
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 1 of 42
http://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BD -
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
2/179
1700602
__ MLUNITED STATES DEPARTMENT OF COMMERCE
United States Patentand
TrademarkOffice
May 16 2008
THIS IS TO CERTIFY THAT ANNEXED HERETO IS TRUE COPY FROM
THE RECORDS OF THIS OFFICE OF
U.S PATENT 5519867
ISSUE DATE May 21 1996
By Authority of the
Under Secretary of Commerce for Intellectual Property
and Director of the United States lemark Office
Offi
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 2 of 42
http://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BDhttp://blogs.findlaw.com/courtside/?referral=BD -
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
3/179
OBJECT-ORIENTED MULTITASKING
SYSTEM
Inventors Christopher Moeller Los Altos
Eugenic Bolton Sunnyvale Daniel
Cheraikoff Palo Alto Russell
Nakano Sunnyvale all of Calif
Assignee Taligent Inc Cupertino Calif
Notice The tenn of this patent shall not extend
beyond the expiration date of Pat No
5379432
Appl No 94673
Filed Jul 19 1993
list Cl.6 GO6F 9/40
U.S Cl 395700
Field of Search 395/650 700
References Cited
4821220 4/1989 Duisberg 364/578
4885717 12/1989 Beck et al 364/900
4891630 1/1990 Friedman et al 340/706
4953080 8/1990 Dysart et al 364/200
5041992 8/1991 Cunningham et al 364/518
5050090 9/1991 Golub et al 364/478
5060.276 10/1991 Morris et al 382/8
5075848 12/1992 Lai et al 3951425
5093.914 3/1992 Coplien et al 395/700
5119475 6/1992 Smith et al 395/156
5125091 6/1992 Staas Jr et al 395/650
5133075 7/1992 Risch 395/800
5136705 8 /1 99 2 S tu hh s et al 395/575
5151987 9/1992 Abraham et al 395/575
5181162 1/1993 Smith et al 364/419
5379432 1/1995 Orton et al 395/700
5404529 4/1 995 Chernihoff et al 395/700
OTHER PUBLICATIONS
Proc of the Summer 1988 Usenix Conf 20 Jun 1988 San
Francisco US pp 113 Using the Toolkit or How to
Write Widget by McCormack et al
New Directions for Unix Proc Autumn 1988 EUUG Conf
Oct 1988 Cascais Portugal pp 2537 Berna
beuAuban et al CloudsA Distributed ObjectBased
Operating System Architecture and Kernel Implementa
tion
Primary ExaminerAlvin Oberley
Assistant ExaminerJohn Chavis
Attorney Agent or FirmKeith Stephens
ABSTRACT
Anapparatus
forenabling an object-oriented application to
access in an object-oriented manner procedural operating
system having native procedural interface is disclosed The
apparatusincludes computer and memory component in
the computer code library is stored in the memory
component The code library includes computer program
logic implementing an object-oriented class library The
object-oriented class library comprises related object-ori
ented classes for enabling the application to access in an
object-oriented manner services provided by the operating
system The object-oriented classes include methods for
accessingthe
operating system services using procedural
function calls compatible with the native procedural inter
face of the operating system The computer processes
object-oriented statements contained in the application and
defined by the class library by executing methods from the
class library corresponding to the object-oriented state
ments The object-oriented application includes support for
multi-tasking
53 Claims 17 Drawing Sheets
United States Patent
Moeller et al
1 11 11 1 11 11 11 1 III 1 11 11 1 11 11 11111 10111111 1 11 11 1 11 11 1 11 11 11 11 11 III 11111 liii
USOO5S 19867A
Patent Number 5519867
Date of Patent May 21 1996
U.S PATENT DOCUMENTS
CODE
LIBRARY
110
CLAss
UBRARY
402
ThREAD cLAssEsj_.A04
TA5KCLA55E5
VIRTUAL MEMORY
CLASSEs.40E
pc cLAssEsk410
sYNCHRONIZATION
k412CLAsSEs
SCHEDUUNS
f4I4CLASsES
FAULT CLASSESk4b6
MACHINE CLASSES
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 3 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
4/179
130A
0-
13213DB
129
28-J WRAPPER1
F1
k.- 134
114
104
116
102
-112
03
OPERATING SYSTEM DEVICE DRIVERS
MICROiNSTRUCTION CODE
j106RAM 108
CODE__11ib0LIBRARY
/118
INPUT
DEVICE
120 124126
TI ___DATA
DISPLAY
IPRINTERSTORAGE
DATA STORAGE 122
MEDIUM
ICODELIBRARY
FIGURE
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 4 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
5/179
U.S Patent May 21 1996 Sheet of 17 5519867
LOCATE IN PROGRAMOBJECT-OR ENTEDSTATEMENT ACCESSINGOPERATING SYSTEM
EXECUTE PROCEDURALFUNCTION CALL
206
208
__ 210
202
START 204
TRANSLATE OBJECTORI ENTED STATEM ENT
TO PROCEDURAL
FUNCTION CALLCOMPATIBLE WITH
PROCEDURAL INTERFACEOF OPERATING SYSTEM
DONE 212
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 5 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
6/179
U.S Patent May 21 1996 Sheet of 17 5519867
3\
304
METHOD CODE IN
TASK ADDRESSSPACE
312
ACCESS LIBRARY SERVERAND COPY METHOD CODEFROM CODE LIBRARY TO
TASK ADDRESS SPACE
316
318
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 6 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
7/179
U.S Patent May 21 1996 Sheet of 17 5519867
SYNCH RON IZATION
CLASSES
MACHINE CLASSES
..A06
..%/41
j418
-.420
CLASS
LIBRARY
402
THREAD CLASSES -404
CODE
LIBRARY
110
TASK CLASSES
VIRTUAL MEMORY
CLASSES
IPC CLASSES
12SCHEDULING
CLASSES
FAULT CLASSES
SECURITY CLASSES
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 7 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
8/179
512
518
Figure
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 8 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
9/179
601
disposition
start address
length
Figure
TlaskHandle
622
TMemoryObject
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 9 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
10/179
702
712
Figure
710
714
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 10 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
11/179
Figure
802
start address
length
disposition
TMemorySu rrogate
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 11 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
12/179
Figure
Handle Handle
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 12 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
13/179
1002
1004
Figure10
1006 1008
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 13 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
14/179
1102
11
1104
118
1110
1116
1114
Figure 11
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 14 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
15/179
U.S Patent May 21 1996 Sheet 12 of 17 5519867
Figure 12
1202
1205
1210
1212
1220
1218
1230
KraiipossiTh
68KfyJ
1226 1228
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 15 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
16/179
1302
1304
1326
1310
1312
1324
1314
Figure 13
1316
1318
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 16 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
17/179
U.S Patent May 21 1996 Sheet 14 of 17 5519867
iz
CD
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 17 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
18/179
1502
1506
1504
1508
T386ThreadState_...-i
532
1512
1514
1524
1516
1526
1528
1518
FIGURE 15
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 18 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
19/179
1614
Figure 16
1602
1604
1608
1618
1612
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 19 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
20/179
1702label
1704
--
label
label
Figure17
uses for interface
uses for implementation
inherits compatible type
1710
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 20 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
21/179
5519867
OBJECT-ORIENTED MULTiTASKINGThe fact that objects are encapsulated produces another
SYSTEM important fringebenefit that is sometimes referred to as data
a bstr action Abstr action is theprocess by which complex
portion of the disclosure of this patent application
ideas and s tr uc tu re s a re made more understandable by the
contains material which is subject to copyright protectionremoval of detail and the generalization of their behavior
From software perspective abstraction is in many ways the
The copyright owner has no objection to the facsimileantithesis of hard-coding Consider software wmdowmg
reproduction by anyone of the patent disclosure as itexample if every detail
of every window that appears on
appears in the Patent and TrademarkOffice
patentfiles or
users screen in graphical user interface GUI-based
records but otherwise reserves all copyright nghts whatso-program had to
have all of its state and behavior hard-coded
everinto program then both the program and the windows i
Field Of The Invention contains would lose almost all of their flexibility By
Thepresent
invention relates generally to object-oriented abstracting the concept of window into window object
computing environments and more particularly to system object-oriented systems permit the programmer to think only
and method for providing an object-oriented interface for 15 about the specific aspects that make particular window
p ro ce du ra l o pe ra ting system uniqueBehavior shared by all windows such as the ability
Background Of the Invention tobe dragged and moved can be shared by all window
Object-oriented technology OOT which generally objectsincludes o bject- or ie nted a na lysis OOA object-oriented This leads to a no th er b asic component of OOT which isdesign COD and object-oriented programming OOP is 20 the cla ss class includes set of data attributes plus seearning its place as one of the most important new tech- of allowable operations that is methods on
t he d at a
nologies in software development COT has already begun attributes Each object is an instance of some class As
to prove its ability to create significant increasesin
pro-natural outgrowth of encapsulation and abstraction OO
granimer productivity and in program maintainability By supportsinheritance class called subclass may b
engendering an environment in which data and the proce- 25 derived from a no th er cla ss calledbase class parent
dures that operate on t he d at a a re combined into packages class etcwherein the subclass inherits the d ata attributes
called objects and by adopting r ule tha t demands that and methods ofthe base class The subclass may specialize
objects communicate with one another only through well- the base class by adding code which overridest he d at a
defined messaging paths OOT removes much of the com- and/or methods of the base class or which adds new data
plexity of traditional procedure-oriented programming 30 attributes and methods Thus inheritance represents
The following paragraphs present brief overview of mechanism by which a bs tr ac ti on s a re made increasingly
some of the more imp or ta nt a sp ects of OOT More detailed concrete as s ub cl as se s a re created for greater levels o
discussions of COT are available in many publicly available specialization Inheritance is primary con tr ib utor to the
documents including Object Oriented Design With Appli- increased programmer efliciency provided by COP Inherit
cations by Grady Beech Benjamin/Cummings Publishing 35 ancemakes it possible for developers to minimize the
Company 1991 and Object-Oriented Requirements Analy-amount of new code they have t o w ri te t o create applica
sis and Logical Design by Donald Firesmith John Wileytions By providing significant portion of the functionality
Sons Inc 1993 The basic component of OOT is the needed for particular task classes in the inheritance
object An object includes and is characterized by set of h ie ra rc hy gi ve the programmer head start to program
data also called attributes and set of operations called 40 designand creation One
potentialdrawback to an object
methods that can operate on the data Generally an objects orientedenvironment lies in the
proliferationof objects tha
data may change only through the operationof the objects must exhibit behavior which is similar and which one would
methods like to use as single message name to describe Consider
method in an object is invoked by passing message for example an o bject- or ie nted g ra ph icalenvironment if
to the object this processis called message passing The 45 Draw message is sent to Rectangle object the Rectangle
message specifies method name and an argumentlist object responds by drawing shape with four sides
When the object receives the message code associated with Triangle object on the o th er hand responds by drawing
the named method is executed with the formal parameters of shape with three sides Ideally the object thatsends th
the method bound to the corresponding values in the argu- Draw message remains unaware of either the typeof
object
ment list Metho ds a nd message passing in COT are analo- so to which the message is addressed or of how that objecttha
gous to procedures and procedure calls in procedure-on-r ec ei ve s t he message will draw itself in response
If th
ented software environments However while procedures ideal can be achieved then it will be relatively simple to ad
operate to modify and return passed parameters methods new kind of shapelater for example hexagon and leave
operateto modify the internal state of the associated objects the code sending the Draw message completely unchanged
by modifying the data contained therein The combination ss In conventional procedure-oriented languages such
of data and methods in objects is called encapsulation linguistic approachwould wreak havoc In COT environ-
Perhaps the greatest single benefitof encapsulation is the ments the concept of polymorphism enables this to be done
fact tha t the sta te of any object can onlybe
changed bywith
impunityAs one
consequencemethods can be written
well-defined methods associated with that object When the that generically tell other objects to do somethingwithou
behavior of an object is confined tosuch well-defined 60
requiringthe sending object to have any knowledge at
a
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 21 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
22/179
to communicate with other processes or to schedule the
execution of process
Most conventional operating systems are procedure-
oriented and include native procedural interfaces Conse
quentty the services provided by these operating systems
can only be accessed by using the procedures defined by
theftrespective procedural interfaces
If program needs to
access service provided by one of these procedural oper
at.ing systems t he n t he program must include statement to
make theappropriate operating system procedure call This to
is the case whether the software program is object-oriented
procedure-oriented rule based etc Thus conventional
operating systems provide procedure-oriented environments
in which to develop and execute software Some of the
advantages of OOT are lost when an object-oriented pro
gram is developed and executed in procedure-oriented
environment This is true since all accesses to the proce
duraloperating system must
beimplemented using proce
dure calls defined by the operating systems native proce
dural interface Consequently some of the modularity
maintainabilityand
reusability advantages associated with
object-oriented programs are lost since it is not possible to
utilize classes objectsand other OOT features to their
fullest extent possible
One solutio n to this problem is to develop object-ori
entedoperating systems having native object-oriented inter
faces While thisultimately may be the best solution it
currentlyis not practical solution
s in ce t he resources
required to modify all of the major procedural operating
systems would be enormous Also such modification of 30
theseprocedural operating systems would render useless
thousands of procedure-oriented software programs There
fore what is needed is mechanism for enabling an object-
oriented application to interact in an object-oriented manner
with procedural operating system having native proce- 35
dural interface
SUMMARY OF THE INVENTION
Thepresent
invention is directed to system and method40
of enabling an object- or iented application to access in an
object-oriented manner procedural operating system hav
ing native procedural interface The system includes
computer and memory component in the computer code
library is stored in the memory component The code library
includes computer program logic implementing an object-
oriented classlibrary
Theobject-oriented
classlibrary com
prises related object-orientedclasses for
enablingthe appli
cation to access in an object-oriented manner services
provided by the operating system The object-oriented
classes include methods for accessing the operating system
services using procedural function calls compatible w it h t he
native procedural inter fa ce o f the operating system The
system also includes means for processing object-oriented
statements contained in the application and defined by the
class library by executing methods from the class library
corresponding to the object-oriented statements
Preferably the class library includes
thread classes for enabling an application to access in 60
an object-oriented manner operating system services to
virtual memory classes for enabling an application
access in an object-oriented manner operating system se
vices to access and manipulate virtual memory in com
puter
interprocess communication IPC classes fo
enabling an application to access in an object-oriented
manner operating system services to communicate wi
other threads during run-time execution of the application
computer
synchronixation classes for enabling an application
access in an object-oriented manner operating system se
vices to synchronize execution of threads
scheduling classes for enabling an application
access in an object-oriented manner operating system se
vices to schedule execution of threads
fault classes for enabling an application to access in a
object-oriented manner operating system services to process
system and user-defined processor faults and
20 machine classes for enabling an application to access
in an object-oriented manner operating system services
define and modify host and processor sets
Further features and advantages of the present inventio
as well as the structure and operation of various embod25
ments of the present invention are described in detail below
with reference to the accompanying drawings and in th
claims In the drawings identical reference numbers indicate
ide ntical o r functionally similar elements
BRIEF DESCRIPTEON OF THE DRAWINGS
The present inventionwill
be described with reference
the accompanying drawings wherein
HG illustrates block diagram of computer platformin which wrapper of the present invention operates
HG is high-level f lo w c ha rt illustrating the operationof the
present invention
FIG is more detailed flowchart illustrating the opera
tion of thepresent invention
HG is block diagram of code library containing a
object-oriented class libraryof the
present invention
FIG is class diagram of thread and task classes of th
present invention
HG is class diagram of virtual memory classes of th
present invention
HGS 79 are class diagrams of interprocess communi
cation classes of thepresent invention
HG 10 is class diagram of synchronization classesthe present invention
HG 11 is class diagram of scheduling classes of th
present invention
FIGS 12is are class diagrams of fault classes of th
present invention
HG 16 is class diagram of host and processor s
machine classes of the present invention and
HG 17 illustrates well-known icons for representingclass relationships and cardinality in class diagrams
DETAILED DESCRIPTION OF THE
5519867
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 22 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
23/179
present invention emulates an object-oriented software envi
ronment on computer platform having procedural oper
ating system More particularly the present invention is
directed to system and method of enabling an object-
oriented application to access in an object-oriented manner
p ro ce du ra l o pe ra ting system having native procedural
interface duringrun-time execution of the application in
computer The present invention is preferably partof the
run-time environment of the computer in which the appli
cation executes In this patent application the present inven
tion is sometimes called an object-oriented wrapper since it
operatesto wrap p ro ce du ra l o pe ra ting system
with an
object-oriented software layer such that an object-oriented
application can access the operating system in an object-
oriented manner
FIG illustrates block diagram of computer platform
102 in which wrapper 128 129 of the present invention
operates It should be noted that the present invention
alternatively encompasses the wrapper 128 129in combi
n at io n w it h t he computer platform102 The computer plat
form 102 includes hardware components 103 such as20
random access memory RAM 108 and central processingunit CPU 106 It should be noted that the CPU 106 may
represent single processor but preferably represents mul
tiple processors operatingin
parallelThe computer platform
102 also includes peripheral devices which are connected to
the hardware components 103 These peripheral devices
include an input device or devices such as keyboard
mouse light pen etc data storage device 120 such as
hard disk or floppy disk display 124 and printer126
The datastorage
device 120 may interact with removable 30
datastorage
medium 122 such as removable hard disk
magnetic tape cartridge or floppy disk depending onthe
type of data storage device used The computer platform 102
also includes p ro ce du ra l o pe ra ting system 114 having
nativeprocedural
interface not shown The procedural
interface includes procedural functionswhich are called to
access services provided by the operating system 102
The computer platform 102 further includes device driv
ers 116 and may include microinstructionc ode 112 also
called firmware As indicated in FIG in performing their 40
required f un ct io ns t he d ev ic e drivers116 may interact with
the operating system 114 Application programs 130 132
134 described further below preferably interact with the
device drivers 116 v ia t he operating system 114 but may
alternativelyinteract directly with the device drivers 116 It 45
should be noted that theoperating system 114 may represent
substantiallyfull-function
operating system such as the
Disk Operating System DOS and the UNIX operating
system However the operating system 114 may represent
other typesof
operating systems For purposes of the present
invention the only requirement is that the operating system
114 be p ro ce du ra l o pe ra ting system having native
procedural interface Preferably the operating system 114
representslimited functionality p ro ce du ra l o pe ra ting sys
tem such as the Mach micro-kernel developed by CMIJ
which is well-known to those skilled in the relevant art For
illustrative purposes onlythe
presentinvention shall be
d escr ib ed h er ein with reference tothe Mach micro-kernel In
preferred embodiment of the present invention the com
p uter p la tfor m102 is an International Business Machines
theapplication programs 130 132
134 are adapted t
execute in different operating environments For exampl
theapplication programs 130A and 130B may be adapted t
operate in an object-oriented environment The application
program 132 may be adapted to operate in Microsof
Windows environment an IBM PSI2 environment or Unix
environment As will be appreciated by those skilled in th
relevant artthe
application programs 130A 130B and 13
cannot interact directly with the operating system 114 unless
theoperating system 114 implements an environment i
which the application programs 130A 130B and 132 ar
adapted to operate For example if the application 132
adapted to operate in the iBM PSI2 environment then th
application 132 cannot directly interact with the operating
system 114 u nless the operating system 114 is the IBM PS/2
operating system or compatible If the application pro
grams 130A and 130B are adapted to operate in an object
oriented environment t he n t he applications 130A 130B
cannotdirectly
interact with theoperating system 114 since
the operating system 114 has procedural inter fa ce In th
example shown in FIG the application 134 is adapted t
operatein the computing environment created by the ope
ating system 114 and the re fo re the application 134 is show
as being connected directly to the operating system 114
The wrapper 128 is directed to mechanism for providing
the operating system 114 with an object-oriented interface
The wrapper 128 e na bl es t he o bject- or ie nted a pp lica tion s
130A 130B to directly access in an object-oriented manner
the procedural operating system 114 during run-time exec
t io n o f the applications 130A 130B on the computer pla
form 102 The wrapper 129 is conceptuallysimilar to th
wrapper 128 The wrapper 129 provides an IBM PS/
interface for the operating system 114 such that the app
cation 132 c an directly access in PS/2 manner the proc
dural operating system 114 assuming that the application
132 is adapted to operate in the IBM PS/2 environment Th
discussion of thepresent
invention shall be limited herein
the wrapper 128 which provides an object-oriented inte
face to p ro ce du ra l o pe ra ting system having native
proceduralinterface
The wrapper 128 is preferably implemented as cod
library 110 which is stored in the RAM 108 The code librar
110 may also be stored in the data storage device 120 and/o
the data storagemedium 122 The c ode library 110 imp
ments an object-oriented class library 402 see FIGaccordance with the present invention the object-oriented
class library 402 includes related object-oriented classes fo
enabling an o bject- or ie nted a pp lica tion such as the app
cations 130A and 130B to access in an object-oriented
manner services provided by the operating system 114 Th
object-oriented classes comprise methods which include
proceduralfunction calls compatible with the n ative proce
dural interface of theoperating system 114 Object-oriented
statements defined by the object-oriented class library 40
such as object-oriented statements which invoke one
more of the methods of the class library 402 are insertabl
into the application130 to e na bl e t he application 130
access in an object-oriented manner the operating syste
services during r un -tim e e xe cu tion of the application 130 o
60 the computer platform 102 The object-orientedclass
libra
5519867
10
35
50
55
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 23 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
24/179
during mn-time This is explained in greaterdetail below
Since the computer program logic of the code library 110 is
not linked to application programs the computer program
logic can be modified at any time without having to modify
recompile and/or relink the application programs as long as
the inter fa ce to the code library 110 does not change As
noted above the present invention shall be describedherein
with reference to the Mach micro-kernel although the use of
thepresent
invention to wrap other operating systems falls
within the scope of the present invention
The Mach micro-kernelprovides
users with number of
services with are grouped into the following categories
threads tasks virtual memory interprocess communication
IPC scheduling synchronization fault processing and
host/processor set processing The class library 402 of the
presentinvention includes
setof related classes for each of
the Mach servicecategories Referring
to FIG the class
library 402 includes
thread classes 404 for enabling an application to
access in an object-oriented manner operating system ser
vices to spawn control and obtain information relating to
threads
task classes 406 for enabling an application to access
in an object-oriented manner operating system services to
reference and control tasks wherein the tasks each repre
sents an execution environment for threads respectively
a ss oc ia ted w it h t he tasks
virtual memory classes 408 for enabling an application
to access in an object-oriented manner operating system
services to access and manipulate virtual memory in
computer
IPC classes 410 for enabling an application to access
in an object-oriented manner operating system services to
communicate with o th er processes during run-time execu
tion of the application in computer
synchronizationclasses 412 for enabling an applica
tio n to access in an object-oriented manner operating system
services to synchronizeexecution of threads
schedulingclasses 414 for enabling an application to
access in an object-oriented manner operating system ser
vices to schedule execution of threads
fault classes 416 for enabling an application to access
in an object-oriented manner operating system services to
process system and user-defined processor faults and
machine classes 418 for enabling an application to
access in an object-oriented manner operating system ser
vices to define and modify host and processor sets
The class library 402 may include additional classes for
other service categoriesthat are offered by Mach in the
future For example security s ervice s a re currently being
developed for Mach Accordingly the class library 402 may
also include securityclasses 420 for enabling an application
to access in an object-oriented manner operating system
securityservices As will be appreciated the exact number
andtype
of classes included in the class library 402 depends
on the implementation of the underlying operating system
OperationalOverview of Preferred Embodiment
substantive stepof the flow chart 202 an object-oriente
statement which accesses service provided by the o
ing system 114 is located in the application 130A during
execution of the application 130A on the computer pla
102 The object-oriented statement is defined by the ob
o rien te d c la ss library 402 For example the object-oriente
statement may reference method defined by one o
classes of the class library 402 The following steps des
the manner in which the statement is executed by
computer platform 102
Instep 208 the object-oriented statement is translated
procedural function call compatible with the native
cedural inter fa ce o f the operating system 1 14 a nd c
sponding to the object-oriented statement In perfor
15
step 208 the statement is translated to the computer pro
logic from the code library 110 which implements
method referenced in the statement As noted above
method includes at least one procedural function call w
is compatible with the native procedural interface o
20operating system 114 In step 210 the procedural func
call from step 208 is executed in the computer platform
to thereby cause the operating system 114 to provid
service on behalf of the application 130A Step 2
performed by executing the method discussed in step
25thereby causing the procedural
function call to be invo
The operation of preferred embodiment shall no
described in more detail with reference to FIG w
illustrates detailed operational flowchart 302 o
present invention Again the present invention is descr
in the context of executing the object-oriented applica
130A on the computer platform 102 More particularly
present invention is described in the context of executin
single object-oriented statement of the object-oriented
cation 130A on the computer platform 102 The applica
130A includes statements which access services provide
theoperating system 114 and it is assumed that
s ta te me nts a re d efin ed by the class library 402 in
words the programmer c re ated the application130A
reference to the class library 402 As will be discusse
greater detail below the executable entity in the
micro-kernel is called thread The processing organiza
entityin the Mach micro-kernel is called task
includes one or more threads which may execute in
lel and an address space which represents block of v
memory in which the tasks threads can execute A
time there may be multiple tasks active on the com
platform 102 When executing on the computer platf
102 the application 130A could represent an entire
having one or more threads or could represent
threads which are part of task in this case the task w
have other threads which may or may not be r elated
operationof the
application 130A The scope of the pr
inventionencompasses the case
when the application
is an entire task or just few threads of task
ss Referring now to FIG in step 308 it is determ
whether the computer program logic also called com
code from the code library 110 which implements
method referenced in the statement is present in the
address space associated with the application 130A
60 computer program logic is present in the task address
then t 316 is processed described below If the
5519867
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 24 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
25/179
related to the wrapper 128 wherein eachof the code
libraries i nc lud e t he computer program logic for one ofthe
object-orientedclasses of the cla ss library 402 As those
skilled inthe relevant art will appreciate there may also be
other code libraries not shown completely unrelated to the
wrapper 128
Associated with the code libraries are library servers each
of which manages the resources of designatedcode library
processing entity which desires access tothe computer
program logicof code library makes request to
the code
library s library server The request may includefor
example description of thedesired computer program
logicand d estina tion a dd re ss to which the computer
program logicshould be sent The library server processes
the request by accessing the desired computer program logic 15
from the code library and sending thedesired computer
program logicto the a re a of memory designated by
the
destination address The structure and operation of library
serve rs a re well known to those skilled in the relevant art
Thus in step 310 it is determined whetherthe library server 20
associated with the code library 110 which c on ta in s t he
relevant computer program logicis known Step 310 is
performed for example by referencing libraryserver table
which identifies the known library servers and the code
libraries which they service If the library serveris known
then step314 is processed discussed below Otherwise
step312 is processed In step 312
the library server asso
cia te d with the code library 110 is identified The identityof
the library server may be apparent for examplefrom the
content of the object-oriented statement whichis being
30
processed
After the library servera ss oc ia te d w it h t he code library
110 is ide ntifie d o r if the library server was already known
then step 314 is processedIn
step 314 requestis sent to
the library server askingthe
libraryserver to copy the
computer program logic associatedwith the method refer
ence in the statement to the task address space Upon
completion of step 314 the library serverhas copied the
requested computer program logic tothe task address space
Preferably the code library 110is shared library That is 40
the code library 110 may be simultaneouslyaccessed by
multiple threads However preferablythe computer pro
gram logic of thecode library 110 is physically stored
in
only one physical memory area The library server virtually
copies computer program logic from the code library 110 to
task address spaces That isinstead of physically copying
computer program logic from one partof physical memory
to another the library server places in the task address space
pointer tothe physical memory area containing
the rel
evant computer program logicIn step 316 the computer 50
program logicassociated with the object-oriented statement
is executed on the computer platform102 As noted above
in the case where the object-oriented statement accessesthe
operating system 114 the computer program logicassoci
ated with the method contains at least one procedural 55
function call which is compatible with the native procedural
interface of the operating system 114 Thus by executingthe
methods computer program logic the proceduralfunction
call is invoked and executed thereby causingthe operating
system 114 to provide theservice on behalf of the applica- 60
10
particular compiler which compilesthe application program
130A For example the run-time conventions may specify
that when an instruction accessing an operating system
service is encountered corresponding code from the code
library 110 should be transferred to the task a dd re ss space
via the associated library server andexecuted Compiler
run-Lime conventions are generally well kno wn Aswill be
appreciated run-time conventions are specificto the par
ticular compilers used The run-time conventions for use
with the present invention and with particular compiler
would be apparent to one skilled in the art b as ed o nthe
disclosure of the presentinvention contained herein par
ticularly tothe disclosure associated with t he f lo w c ha rt 302
in FIG As described above the wrapper 128 of the
presentinvention is implemented as
code library 110
which includes computer program logic implementingthe
object-orientedclass library 402 Alternatively the wrapper
128 maybe
implementedas hardware mechanism which
essentially operatesin accordance with the flow chart 302 of
FIG to translate object-oriented statements defined bythe
class library 402 in application programsto procedural
function calls compatible with the procedural interfaceof
the operating system 114 Or the wrapper 128 may be
implemented as backgroundsoftware
process operatingon
the computer platform102 which captures all accesses
to the
operating system 114 made by object-oriented statements
defined by the class library 402 andwhich translates the
accesses to proceduralfunction calls compatible with the
procedural inter fa ce o f the operating system114 Other
implementations of the wrapper128 will be apparent to
those skilled in the relevant artbased on the disclosure of the
present invention containedherein
Mach Services
This section provides an overview ofthe abstractions and
services provided by the Machmicro-kernel The services
are describedfor each of the major areas of the Mach
micro-kernel As noted above these include threads tasks
virtual memory IPC scheduling synchronizationservices
hardware faults and host/privilege services also called
machine services The Mach micro-kernel is further dis
cussed in many publicly available documents including
Loepere editor Mach Kernel Principles Open Software
Foundation and Carnegie Mellon University DrafiIndus
trial Specification September1992 and November 1992
Loepere editor Mach Kernel Interfaces Open Software
Foundation and Carnegie Mellon University DraftIndus
trial Spec jfication September1992 and November 1992
Loepere editor Mach ServerWriters Guide Open
Software Foundation and Carnegie Mellon UniversityDraft
Industrial Specification September1992 and November
1992 Loepere editor Mach ServerWriters Inter
faces Open Software Foundation and CarnegieMellon
University Draft Industrial Specification September1992
and November 1992 Silberschatz Peterson Galvin
Operating System Concepts Addison-Wesley July1992
and Tanenbaum Modern Operating Systems Prentice
Hall 1992
Threads
5519867
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 25 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
26/179
10
15
20
25
30
35
40
11
5519867
12
other data that make up its contextthread is always in one Tasks
of several scheduling states executing ready to execute orThe basic organizational entity in Mach for which
blocked for some reason Threads are intended to be light
weight execution entities This is to encouragethe program-
resources are managed is known as task Tasks have many
mer to make use of multiple threads in applications thusobjects and attributes a ssocia te d with them
taskfunda
introducing more concurrency into the system thanhas been
mentally comprises three things task contains multiple
threads which are the executable entities in the systemfound in traditional operating systems Although threads are
t as k a ls o has an address space which represents virtual
not without some cost they really are fairly minimal and thememory in which its threads can execute And task has
typical application or serverin Mach environment can take
port name space which represents the valid IPC ports
advantage of this capability through which threads can communicate with other threads
Threads do have some elements associated with them in the system Each of these fundamental objects in task is
however The containing task and address space as well as discussed in greater detail in the following sections Note
the execution state have already been discussed Eachthat task is not of itself an executable entity in Mach
thread has scheduling policy which determines when and However tasks cancontain threads which are the execution
how o ften the threa d will be g iven p ro ce ssor on which toentities task has number of other entities associated with
run The scheduling services are discussed in moredetail in
it b esid es the fundamental ones noted above Several of
later sectionClosely
tied to the scheduling policy ofthese entities have to do with scheduling decisions the kernel
thread is the optional processor set designationwhich can needs to make for
the threads contained by the task The
be used in systems with multiple processors to more closelyscheduling parameters processor set designation and host
control the assignment of threads to processorsfor poten-
information all contribute to the scheduling of the tasks
threads task also has number of distinguished interprotially greater application performance As indicated before
cess commumcation ports that serve certain pre-definedan address space task can con ta in zero or more threads
functions Ports and other aspects of interprocess commuwhich execute concurrently The kernel makes no assump-
nication are discussed at length in latersection For now
lions about the relationship of the threads in an address spaceit is sufficient to know that port resou rces a re accumulated
or indeed in the entire system Ratherit schedules and
over time in task Most of these are managed explicitly by
executes the threads accordingto the scheduling parameters the programmer The distinguished ports mentioned
above
associated with t he m a nd the available processor resourcesgenerally have to do with establishing connections to several
in the system In particular there is no arrangement e.g important functions in the system Mach supplies three
hierarchical of threads in an address spaceand no assump- special ports with each task The first is the task self port
tions about how the y a re to interact with each otherIn order
which can be used to ask the kernel to perform certain
to control the o rd er of execution and the coordination of operations on the task The second special port is the
threads to some useful end Mach provides several synchro- bootstrap port which can b e u se d for anything itsOS
nization mechanisms The simplest and coarsest mecha- environment-specific but generally serves tolocate other
nism is thread-level suspend and resume operations Each services The third special port that each task hasis the host
thread has suspend count which is incremented and name port which a ll ow s t he t as k to obtaincertain informa
decremented by these operations thread whose suspendtion about the ma ch in e o n which it is running Additionally
count ispositive
remains blocked until the count goes to Mach supplies several registered ports with each taskthat
zero allow the threads contained in the task to communicatewith
Finer synchronization can b e obtained through the use ofcertain higher-level servers in the system e.g the Network
syn ch ro niza tion o bjects semaphores or monitors and con-Name Server the Service Server and the Environment
ditions which allow variety of different synchronizationServer
styles to be used Threads can also interact via inter-process Two o the r u se fu l s et s of ports existfor each task that
communication
IPCEach of these services is described in 45 allow fault processing and
programstate sampling to be
more detail in lat er sections Basic operations ex is t t o performed The fault ports of task provide common place
support creation termination and gettingand setting for processor faults encountered by
threads in the task to be
attributes for threads Several other control operations exist processed Fault processing is described more fullyi n l ate r
on threads that can be performed by any thread that has section The PC sample port allows profilingtoo ls to
repeat-
send right to the intended threads control port Threads can so edly monitor t he ex ec ut io n s ta te of thethreads in the task
be terminated explicitly They can also be interrupted from Many operations are possiblefor tasks Tasks can be created
the various possiblewalt situations and caused to resume and terminated Creation of new task involves specifying
execution with an indication that they were interrupted some existing task as prototype for the initial contents of
Threads can also be wired which means that they are the address space of the new task task can also be
marked as privileged with respect to kernel resources i.e 55 terminated which causes all of the containedthreads to be
they can consume physical memory when free memory is terminated as well Thethreads contained in task can b e
scarce This is used for threads in the default page-out path enumerated and informationabout the threa ds can be
Finally threads also have several important lit ports more extracted Coarse-grain execution of task more precisely
preciselythe send or receive rights to these ports which are the threads in the task can b e controlled through suspend
used for certain functions In particular each thread has 60 and resume operations Each taskhas suspend count that
thread self t which can beused to perform certain is incremented and decremented by the suspend
and resume
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 26 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
27/179
Machsupports
sever al fea tu re s in its virtual memory
VM subsystem Both the external client interfaces as well
as the internal implementation offer featuresthat
arenot
found in many other operating systemsIn broadest terms
the Mach virtual memory system supports large sparsely
populated virtual address space for each of the tasks running
in the system Clients are provided with general services for
managing the composition of the a dd re ss space Some
aspects of the VM system are actually implemented by10
components that are outside of the micro-kernelwhich
allowsgreat flexibility
in tailoring certain policyfunctions to
different system environmentsThe internal architecture of
the Mach VM system has been divided into machine-
independent and machine-dependent modules for maximum 15
portability Porting to new processorIMMUarchitecture is
generally sma ll m atte r of implementing number of
functions that manipulate the b asichardware MMU struc
tures Mach has been ported to numberof different
processorarchitectures
attestingto the portability
of the20
overall kernel and the virtual memory system in particular
The address space of Machtask contains number of
virtual memory regions These regions are pieces ofvirtual
address space that have been allocated in various waysfor
use by the task They are the only locations where memory
can be legitimately accessed All references toaddresses
outside of the defined regions in the address spacewill result
in an improper memory reference f au lt vi rtu al memory
region has several interesting attributes It has page-
aligned starting address and size which must be multiple 30
of the system page size The pages in the region allhave the
same access protections these access protections can be
read-only read-write or execute The pages in regionalso
have the same inheritance characteristic which may beused
when new tusk is created from the cur re nt tusk The
inheritance characteristic for pages in region can be set to
indicate that new task should inherit read-write copy of
the region that it should inherit v irtual copyof the region
or that it should inherit no copy of the regionread-write
copy of region in new address space provides fully 40
shared mapping of the region betweenthe tasks while
virtual copy provides copy-on-write mappingthat essen
tially giveseach task its own copy of the region
but with
efficient copy-on-write sharing of the pages constitutingthe
region 45
Every virtual memory region is really mapping of an
abstract entity known as memory object memory object
is simply collection of datathat can be addressed in some
byte-wise fashion and about whichthe ker ne l m akes no
assumptions It is best thought of as some pure pieceof data 50
that can either be explicitly stored some place or c an b e
produced in some fashion as needed Manydifferent things
can serve as memory objects Somefamiliar examples
include files ROMs disk partitions or foats Memory
objectshave no Fe-defined operations or protocol
that they
are expected to follow The data contained in memory
object can only be accessed when it hasbeen t ied t o VM
region through mappingAfter
memory objecthas been
mapped to region t he d at a can be accessedvia normal
memory read and write loadand store operations 60
14
with the d ata from the corresponding byte addresses in the
associated memory object To accomplishthis the kernel
actually engages in well-defined and onerous protocol
with the pager whenever it needs to getdata for page faults
or when it needs to page-out data due to page replacements
This protocol which is known as the External Memory
Management Interface or EMMI a ls o h an dl es t he initial
ization sequences for memory objectswhen the y a re mapped
by client tusks and the termination sequences when any
associated memory regions are deallocated by client tasks
There c an b e any numberof
pagers running in the system
depending on which memory objects are in use bythe
various client tasks Pagers will typically be associatedwith
the various file systems that are mounted at given timefor
example Pagers could also exist to support certaindatabase
applicationswhich might have needs for operations beyond
what is supported by the file system Pagers could alsoexist
for certain servers that wish to supply data to their clients in
non-standard ways e.g generating the d ata computation-
ally rather than retrieving it from storage subsystem The
micro-kernel always expects to have certain distinguished
pager known as the default pager runningin the system The
default pager is responsiblefor managing the memory
objects associatedwith anonymous virtual memory such
stacks heaps etc Such memory is temporary and only of
use while client task is running As described above the
main entities in the Mach VM system are regions memory
objects and pagers Most clients howeverwill deal with
virtual memory through operations on rangesof memory
range c an b e portion of region orit could span multiple
con tigu ou s r eg io ns in the a dd re ss space Operations are
provided by Mach that allow users toallocate new ranges of
virtual memory in the address spaceand deallocate ranges as
desired Another important operation allows memory
object to be mapped into range of virtual memory as
described above Operations are also available to changethe
protections on ranges of memory change the inheritance
characteristics and wire or lock the pages of rangeinto
physical memory It is also possible to read rangesof
memory from another task or write into ranges inanother
task provided that the control port for the task isavailable
Additional services are available that allow t he u se r to
specify the expected reference pattern for range of
memory This c an b e u s ed bythe ker ne l as advice on ways
to adapt the page replacement policy todifferent situations
Yet another service is available to synchronize or flush the
contents of range of memory with the memory objects
backing it Finally ser vice s a re a va ilab le toobtain informa
tion aboutregions
and to enumerate the contents o f t usks
address space described in terms of the regions itcontains
InterprocessCommunication
Mach has four concepts that are central to its interprocess
communications facilities Ports Port Sets Port Rights and
Messages One of these concepts Port Rights is also used
by Mach as means to identify certain common resourcesin
the
system suchas threads tasks
memoryobjects etc.
Ports
13
Virtual Memory
5519867
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 27 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
28/179
5519867
15 16
sagesthat can be enqueued on the port limit on the Port rights have several attributes
associated with t
maximum size of message that can be sent to port and the type of the right send send-once receive port s
count of how many rights to the port arein e xisten ce Por ts dead name and reference count for each of the a
exist solely in the kernel and can only be manipulated via types of rights When task acquires rightfor
po
port rightswhich it already has send or receive rights the correspo
ing reference count for the associated port name is i
mentedport
name becomes dead name when
Port Rightsassociated
portis destroyed That is all port names r
senting send or send-once rights for port whose rec
thread can add message to ports message queue if right is deallocated become dead names task can req
it has send right to tha t port Likewiseit can remove notification when one of its rights becomes dead The ke
message from ports message queuei f i t has receive right keeps system-wide count of the number of s en d
to that port Port rights are considered to be resourcesof send-once rights for each port Any task that h ol ds r ec
task not an individual thread There can be many send rights right such as server can request notification message
toport held by many different tasks however
there cansent when this number goes to zero indicating that the re
onlybe one receive right to port In fact port is created no more senders clients for the port This is called
by allocating receive right and portis d es tr oy ed o nl y more senders notification The request must include
when the r eceive right is deallocated either explicitly or right forport
to which the notification should be se
implicitlywhen the task dies In addition the attributes of
port are manipulated through the receive right Multiple 20
threads on the same or different tasks can send to port at
the same time and multiple threads on the same task canets
receive fromport
at the same time Port rights act as Por t sets provide the ability to receive from collectio
permission or capability to send messages to or receive ports simultaneously That is receive rights can be adde
messages from port and thus they implementlow-level 25 port set such that when receive is done on the por
form ofsecurity
for the system Theowner of
portis the
message will be receivedfrom one of the ports in t he
task that h olds the r eceive right The only way for another The name of the r eceive right whose port provided
task to getsend right for port is i f i t is explicitly given message is reported by the receive operation
the righteither by the owner or b y a nytask that holds
valid send right for the port This is primarily done by 30
including the right in message and sending the message to Messa es
another task Giving task send right grants it permission
to send as many messages to the port asit wants There is Mach IPC message comprises
header a nd a n in
another kind ofport right
called send-once right that only data portion and optionally someout-of-line me
a ll ow s t he h ol de r to send one message to the port at which regions and port rights If the messagecontains neither
time the send-once right become invalid and cant be used rights nor out-of-line memory then itis said to be s
again Note that ownership of port can be transferred by message otherwise it is complex message s
sending the ports receive right in message toanother task message c on ta ln s t he message header directly
followe
Tasks acquire port rights either by creatingthem or the in-line data portion The message
header contain
receiving them in message Receive rights can onlybe 40 destination port send right an optional
send right to w
createdexplicitly by doing port allocate as described
reply may be sent usuallysend-once right and
above send rights can be created either explicitlyfrom an length of the d ata portion of the message
The in-line d
existingsend or receive right or implicitly while being
of variable length subject to maximum specified
transmitted in message send-once right canbe created per-port basis and is copied without interpretation
explicitly or implicitlyfrom receive
rightonly When 45 plex message
consists of message header with the
rightis sent in message the sender can specify
that the rightformat as for simple message followed by count
is either copied moved or new right created bythe send number of out-of-line memory regions
and ports dispos
operation Receive rights can only be movedof course arrays describing
the kemels processing of these reg
Whenright
is moved the sen de r loo se s the right and theand ports and arrays containing
the out-of-line descrip
r eceive r g ains it When copied the sender retains the right 50and the port rights
but copy of the right is createdand given to the receiver The port right disposition array
c on ta in s t he de
When created the sender provides receive right and new processing of the right i.ewhether it should be co
send or send-once right is created and given to the receiver made or moved to the target task The out-of-line me
When task acquires port right bywhatever means Mach disposition array specifies for each memory range wh
assignsit name Note that ports themselves are not named 55 or not it should be de-allocated when
the message is qu
but theirport rights are Despite
this fact the creators of and whether the memory should be copied into the recei
Mach decided to r efer to the name of port right with the tasks address space or mappedinto the receiving ad
termport name instead of the
obviousport right name This space via virtual memory copy-on-right mechanism
name is sca la r value 32-bits on Intel machines that is out-of-line d escr ip to rs spe cify the size address and
guaranteed unique only withintask which means that 60 ment of the out-of-line memory region When task rece
several tasks cou ld each have t name with the same message the header in-line data and d escr ip to r a rr ay
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 28 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
29/179
18
condition is true waiting thread is unblockedand th
re-acquires thelock before continuing execution thre
can also perform broadcast operation oncondition wh
unblocks all of the threads waiting for thatconditi
Optional time-outs can also be set on thec on di ti on w
operations tolimit the time thread will wait for
condition
Scheduling
Host and Processor Sets
17
Message TransmissionSemantics
5519867
Mach IPC is basically asynchronous in naturethread
sends message to port and oncethe message is queued
on the port the sending thread continues executionreceive
on portwill block if the re a re no messages queued on
the
port For efficiency there iscombined send/receive call that
wifi send message and immediatelyblock waiting for
message on specified reply port providingsynchronous
model timeout ca n b e set on all message operations 10
which will abort the operation if the messageis unable to be Since Mach is multiprocessor capable
itprovides for
sent or if no message isavailable to be received within the scheduling of threads
in multiprocessor environme
specified time period sendcall will block i f i t uses Mach defines processor sets
to group processorsand
send-right whose corresponding porthas reached its maxi- defines scheduling policies that can
be associated with th
mum number of messages If send uses send-onceright Mach provides two scheduling policies
timeshare and fi
the message is guaranteed tobe queued even if the port
ispriority
The timeshare policy is bas ed on the exponentia
full Message deliveryis reliable and messages are guar- average
of the threads usage of theCPU This policy
anteed to be received in the order they aresent Note that attempts to optimize
the time quantumbased on the num
there is special-case codein Mach which optimizes
for the of threads and processors The fixed priority policy does
synchronous model overthe asynchronous model the
fastest20
alter the prioritybut does round-robin scheduling on
IPC round-trip time isachieved by server doing receive threads
that are at the same priority thread can use
followed by repeated send/receivesin loop and the client
default scheduling policyof its processor set or explic
doing corresponding send/receivesin loop on its side use any
one of the scheduling policies enabledfor
processorset maximum priority can be setfor proces
Port Rights as Identifiers 25set and thread In Mach the lower the priority value
greater the urgency
Because the kernel guarantees boththat
port rightscannot
be counterfeited and that messages cannotbe misdirected or
Faults
falsified port rights provide veryreliable and secure
identifier Mach takes advantage of this by using port rightsThe Mach fault handling service s a re intended to pro
to representalmost everything
in the system including30
flexible mechanism for handling both standardand u
tasks threads memory objectsexternal
memorymanagers defined processor
faults The standard kernel facilities
permissions to do system-privileged operations processorthreads messages and ports are
used to provide the
allocationsand so on In addition since the
kernel can send handling mechanism This documentuses the word fa
and receive messages itself it representsitself as special where the Mach documentation uses
the word except
task the majority of the kernelservice s a re accessed via Such terminology has been changed
herein to disting
IPC messages insteadof system-call traps This
has allowed hardware faults from the exception mechanism of the
services to be migrated out of the kernel fairly easilywhere language Threads and
task have fault ports Theydiff
appropriatetheir inheritance rules and are expected to be used in sli
different ways Error handlingis expected to be done
Synchronization per-threadbasis and debugging is expected
to be handle
per-taskbasis Task fault ports are
inherited from pare
Currently Mach provides no direct supportfor synchro-
child tasks while thread fault ports are notinherited
nization capabilities However conventional operating sys- d efau lt to no handler Thread fault handlerstake preced
tems routinely provide synchronizationservices Such Syn-
over task fault handlers When thread causesfau
chronization services employ manywell-known
kerne l b lo cks the thread and sends fault message t
mechanisms such as semaphoresand monitors and condi-
threads fault h an di er v ia t he fault porthandler is
tions which are described below Semaphoresare syn-
that receives message fromthe fault port The mes
chronization mechanism which allows bothexclusive and
contains information about the fault the threadand the
shared access to resource Semaphores canbe acquired and
causing the fault The handler performsits function ac
released in either an exclusive orshared mode and they 50
ing tothe type of the fault
If appropriate the handler ca
can optionally specify thue-out periodson the acquire
and modify the e xe cu tion sta te of thethread that caused
operations Semaphores are optionallyrecoverable in the
fault Possible a ctio ns a reto cle ar the fault to terminate
sense that when thread thatis holding semaphore
thread or to pass the faultonto the task-level handler
terminates prematurely the countersassociated with the
are identified by types and data Machdefines
semaphore are adjustedand waiting threa ds a re
unblockedmachine-independent fault types that are supported
f
as appropriate Mach implementations e.g bad accessbad instruc
Monitors and con dition s a re syn ch ro niza tionmecha-
breakpoint etc. Otherfault types c an be implemen
nismwhich
implementsrelatively more disciplined and
dependent e.gf-line co-processor
violation etc.
safer style of synchronizationthan simple semaphores
monitor lock also called mutexis essentially binary 60
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 29 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
30/179
19
such information i nc lu de t he v er si onof the kernel or the
rightto gain access to the value
of the system clockAlmost
all other information is considered sensitive and higher
degree of privilege is required to getor manipulate the
information This added level of privilege is implied when
task holds send right to the host control port alsoknown
as the host privilege port This rightmust be given out very
carefully and selectively to tasksbecause having this right
enables task to do virtually e ve ryth in g p ossibleto the
kernel thus by-passing the security aspectsof the system
supported by theIPC services Various operations can be
performed withthis added privilege including altering
the
systems clock setting obtainingoverall performance and
resource usage statisticsfor the system and causing
the
machine to re-boot
Mach also exports the notions of processorsarid processor
sets which a llow tasks to more carefully specifywhen and
on what processorsits threads should execute Processors
andprocessor
sets can be enumerated and controlledwith
the h ost privilege port processor represents particular
processorin the system and processor
set represents
collection of processors Servicesexist t o create new pro
cessor sets and to add processors to setor remove them as
desired Services also exist to assign entire tasks or particu
lar threads to set Through these services programmer can
control on coarse grain when thethreads and tasks that
constitute an application actually getto execute This allows
programmer to specifywhen certain threads should be
executed in parallel in processor setThe default assign
ment for tasks and threads that do not explicitlyuse these
capabilitiesis to the system default processor set
which
generally contains any processorsin the system that arent
being used in o th er sets
Security
Mach may include other categoriesof services in addition
to those described above For example Mach mayinclude
services relating to security Inaccordance with the Mach
security services every task carries securit ytoken which
is scalar value that is uninterpreted by Mach There is
portcalle d the host security port
that is given to the bootstrap
task and passed on to the trusted securitysever tasks
security token can be set or changed by anytask that holds
sendright
to t he h os t security port while no special
permissions are needed to determinethe value of tasks
security token other than holdingthe tasks control port of
course At the time MachIPC message is received the
security token of the sender ofthe message is returned as one
of the output parameters to thereceive function Tasks that
hold the host security port can send messageand assign
different security token to that messageso that it appears to
have come from another task These services canbe used by
upper layersof the system to implement
various degrees of
security
Wrapper Class Library
This section provides an area-by-area descriptionof the
object-orientedinterface for the services provided by the
Mach micro-kernel This object-orientedint erface t o the
20
library 402 may includeadditional classes such as secu
classes 420 depending on the services provided by
underlying operating system114 Each area is describ
with class diagram and text detailingthe purpose
functionof each class Selected methods are presented
defined where appropriate the parameterlist of method
also provided Thus thissection provides complete op
tional definition and description of the wrapperclass lib
402 The implementation of the methodsof the wra
io class library 402 is discussed in latersection
The class diagrams are presented usingthe well-kno
Booch icons for representing class relationships andc
nalityThese Booch ico ns a re p re se nted in FIG 17
convenience purposes TheBooch i co ns a re discussed
15
Object Oriented Design With Applications byGrady Bo
referenced above The wrapper class library402 is pr
ably implemented usingthe well-known C-H- comp
programming language Howeverother programming
guages could alternativelyb e u se d Preferably the
20descriptions are grouped
into SPI System Programm
Interface API Application Programming Interface
nal and Noose methodsindicated by ifndef stateme
bracketingthe code in question or by comments
for N
methods SPI interfa ce s a re specific to the particular
25puter platform being used
For illustrative purposes
wrapper class library 402is
presented anddescribed h
with respect to computer platform operatingin accord
with the IBM MicroKernel which is based on Mach Ve
3.0 or compatible Personsskilled in the relevant art
30find it apparent to modify the
SPI classes to accommod
other computer platforms b as ed o nthe teachings conta
herein
API interfa ce s a re included in the wrapperclass li
402 regardless of the platform the systemis running on
Internal interfa ce s a re intended for use only bylow-
implementors The Noosemethods are provided sole
enable an application 130 operating with the wrapper1
communicate with an application 134 or servertha
writt en t o run on Mach 114 directly They provideacce
40the raw Mach facilities in such way that they
fail ou
of the intended object-oriented programmingmodel
lished by the wrapper 128Use of Noose methods is h
discouraged The SPI and API and perhapsthe Inte
classes and methods are sufficient to implement any
cation component or subsystem
Thread Classes
FIG is class diagram 501 of thethread classes 4 0
the task classes 406 The thread classes404 provi
object-oriented interface to the taskingand threading
tionality of Mach 114 number ofthe threa d cla sses
are handle classes so noted by their namewhich
that they representreference to the corresponding
entity The null constructors on thehandle classes cre
empty handle objectAn empty handle object
doe
initially correspond to any kernel entityitmust be
i zed vi a streaming an assignment or copy ope
Calling m et ho ds o n an emptyhandle will cause an exce
to be thrown Multiple copies ofhandle object c
made each of which point to the same kernel entity
so th
5519867
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 30 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
31/179
5519867
21 22
v id es t he mechanism for spawning new threads in the SetThreadSchedule constflhreadSchedule ne
system Control operations include killing suspending/re- chedulesets the scheduling object in the thread to
suming and doing death wat ch on it Constructing newSchedule object This allows one tocontrol the w
TFhreadHandle and passing in TThreadProgram object thread is scheduled
causes new thread to be constructed on the current task GetS cheduleState TThreadHandle theBloc
The first code run in the new threa d a re the Prepare anddOnThread allows one to query t he c ur re nt s ta te o
Run methods of the TThreadProgram object Destroyingthread thefllockedOnThread on which this thread
TrhreadHandle does not destroy the thread it representsblocked
There may also be cancel operation onthe TThreadllandle
object Note that each TThreaclllandle object containssend CancelWaitAndPostException const causes bloc
right tothe control
portfor the thread This information is
10kernel call to be unblocked and TKernelException
not exported by the interface in general but because it doesthrown in the thread this
containport right
the only stream objectflhreadPro- WaitForDeathOf coast performs death watch on
gram can be streamed into is TlPCMessageStream threadblocks calling thread until the thread this te
Attempting to stream into other TStream objects will cause nates C re at eD ea th in ter es t c re at es notification int
an exception to be thrown.15
for the death of the thread this When the thread t
TmreadHandle provides number of methods for use by n ates the specified flnterest gets notification
debuggers and the runtime environmentand for supporting
flhreadProgram is an abstract base class that encainteractions with Mach tasks running outside of the envi-
laths all the information required to create new thread
ronment established by the wrapper 128 Thesemethods
includegetting
and setting the state o f t hr ea d spawning an20
i nc lu des t he code to be executed scheduling informa
empty thread in another task getting the threads faultand the threads stack To use it must be subclassed an
ports returning right to the threads control portand Begin
and Run methods overridden and then an insta
creating T1hreadHandle handle fromthread control port
tion of the object passed into the constructor for flhre
send rightHandle to spawn thread The Begin routine
is provide
As noted above the wrapper 128 establishes computingaid
startup synchronization Begin is executedin the
environment in which the applications 130 operate Forthread b ef or e t he TIhreadHandle constructor compl
brevity this computing environment established by theand the Run routine is executed after the flhreadHand
wrapper 128 shall be called CE With regard to the wrapperconstructor completes The methods CopyThreadSchedule
128 flhreadHandle spawnsCE runtime thread on the and GetStackSize return
the default thread schedule
current task thread can also be spawned on another task 30stack size lb provide values different from the default
instead of on the current task by using the CreateThreadmethods should be overridden to return the d esired th
methods in the flaskHandle class and in subclasses of schedule a nd /o r sta ck size flhreadProgrami nc lu de s
flaskHandle Creating thread on a no th er taskis not following methods
recommended as general programming model however TmreadProgram const flext taskDescripiion
To spawn CEthread on another CE task the TCETa5kHan- 35 Description provides text description
of task that c
dleCreateThread method is used by passing it Trhread- access vi a t he ThskHandleGetThskDescription me
Program describing the thread to be run To spawn non-CE Only in effect if the object is passed TlaskHandle
thread that is thread which does not operate in the structor If default constructor is used instead the inte
computing environment established by the wrapper 128 the will synthesize unique name for TraskHandle GetT
CreateThread method is used on the appropriate subclass of 40 Description to return
flaskHandle that is the subclass of T1askHandle that has GetStackSize returns the size of the stack to be s
heen created to operate with the othernon-CE computing
for the thread Override this method if you dont wan
environment For example to spawn anIBM OS2 thread on
default stack size
an 052 task you mightuse
TOS2TaskHandleCreateThread method It is not possible
GetStack Used to set up the threads stack Ove
this method if you want to provide your ownstack
to run CE thread on non-CE task nor is it possible to run
non-CE thread on CE taskRun represents the entry point for the code to be
the thread OVERRIDE THIS METHOD to providT1hreadllandle includes the following methods
code the thread is to execute
flhreadHandle const TrhreadProgram copyThread
Code creates new thread in the calling taskmakes an
internal COPY of the TmreadProgram which is deletedThsk Classes
upon termination of the thread See FIG for class diagram of the task cla sses
IThreadHandle TlhreadProgram adoptThreadCode
creates new thread in the calling taskADOPTs adopt-TTaskHandle is concrete base class that encapsulates
ThreadCode which is deleted upontermination of the thread
55 the attributes and operations of basic Mach task It c
The resources owned by t he t hr ea d a re also discardedused to refer to and control any task on the sy
copy of the TThreadProgram is NOTmade
f lask Handle c annot b e u se d directly to create
however because it doesnt have any knowledge abou
IThreadHandle EExecution yourself creates thead runtime environment It does provide sufficient protoc
handle for the calling thread 60 protected methods for subclasses with specific ru
TIPC
Case 1:10-cv-00166-UNA Document 1-1 Filed 03/02/10 Page 31 of 42
-
8/14/2019 Apple HTC patent lawsuit : Exhibits A - E
32/179
23
5519867
resuming the task and doingdeathwatch on the task The
informational methods include getting its host gettingand
settingits registered ports enomerating its ports
or virtual
memo regions getting its fault ports enumeratingits
threads etc TlhskHandle i nc lu de s t he following methods
T1askHandle EExecutionThread creat es t askhandle
for the specifiedthread
Suspend suspends the task i.eall threads contained by
the task Resume resumes the task i.eall threads
contained by the task10
Kill terminates the taskall threads contained bythe
task a re terminated
WaitForDeathOf performs death wa tc h o nthe task
The calling thread blocks until the task this terminates
C re at eD ea tb in te re st c rea te s notification interest forthe
death of the task The thread specifiedin the Tinterest object
gets notificationwhen the task this terminates
AilocateMemory size_t howManyBytes TMemorySur
rogate newRangeallocates range of anonymous
vir-
20
teal memory anywhere in the tasksaddress space The
desired size in bytesis specified in howManyBytes
The
startingaddress after page alignment and
ac