You are on page 1of 102

Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 1 of 20

EXHIBIT F
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 2 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 3 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 4 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 5 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 6 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 7 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 8 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 9 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 10 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 11 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 12 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 13 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 14 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 15 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 16 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 17 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 18 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 19 of 20
Case 1:10-cv-00166-UNA Document 1-4 Filed 03/02/10 Page 20 of 20
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 1 of 82

EXHIBIT G
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 2 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 3 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 4 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 5 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 6 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 7 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 8 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 9 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 10 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 11 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 12 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 13 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 14 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 15 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 16 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 17 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 18 of 82

EXHIBIT H
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 19 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 20 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 21 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 22 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 23 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 24 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 25 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 26 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 27 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 28 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 29 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 30 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 31 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 32 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 33 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 34 of 82
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 35 of 82

EXHIBIT I
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 36 of 82

U 7211387
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 37 of 82
111111 11/11111 111111111111111111/1111 111111111111111111111111111111/1111111
US005929852A
United States Patent [19J [l1J Patent Number: 5,929,852
Fisher et al. [45J Date of Patent: Jul. 27, 1999

[54J ENCAPSUlATED NETWORK ENTITY 5,819,090 10/1998 Wolf et al ".. 345/335 X


REFERENCE OF A NETWORK
FOREIGN PATENT DOCUMENTS
COMPONENT SYSTEM
wo
[75] Inventors: Stephen Fisher; Michael A. Cleron, A9107719 5/1991 WIPO.
botb of Menlo Park; Timo Bruck,
Mountian View, all of Calif. OTIlER PUBLICATIONS
Develop, The Apple Technical Journal, "BUilding an Open~
[73] Assignee: Apple Computer, Inc., Cupertino, Doc Part Handler", Issue 19, Sep., 1994, pp. 6-16.
Calif. Baker, S. "Mosaic-Surfing at Home and Abroad," Proceed·
ings ACM SIGUCCS User Services Conference XXII, Oct.
[21J Appl. No., 09/007,691 16-19, 1994, pp. 159-163.
PCT International Search Report dated Oct. 22, 1996 in
[22J Filed' Jan. 15, 1998 corresponding PCf Case No. PCT/US96106376.
MacWeek, Nov. 7,1994, vol. 8, No. 44, Cyberdog to Fetch
Related U.S. Application Data
Internet Resources for OpenDoc APPS, Robert Hess.
{63] Continuation of application No. 08/435,880, May 5, 1995, Opinion, MacWeek Nov. 14, 1994, The Second Decade,
abandoned. Cyberdog Could Be a Breakthrough if it's Kept on a Leash,
Henry NOIT.
[51J Int. CI.' G06T 1/00
[52J U.S. CI......................................•........................ 345/335 Plimary Examiner-Joseph H. Feild
[58J Field of Search 345/335, 339, Attorney, Agent, or Firm-Cesari & McKenna, LLP
345/348, 356; 395/701, 200.47, 200.48, [57J ABSTRACT
680, 681, 682, 683, 684
A network·oriented component system efficiently accesses
[56J References Cited information from a network resource located on a computer
network by creating an encapsulated network entity that
U.S. PATENT DOCUMENTS
contains a reference to that resource. The encapsulated entity
5,202,828 4/1993 Verlclney et al. " 395/936 X is preferably implemented as a network component stored
5,481,666 1/1996 Nguyen et al. " •................" 395(762 on a computer remotely displaced from the referenced
5,500,929 3/1996 Dickinson 395/160 resource. In addition, the encapsulated entity may be mani~
5,530,852 6/1996 Meske, Jr. et aI. 395/600 fested as a visual object on a graphical user interface of a
5,537,546 7/1996 Sauter 395(762 computer screen. Such visual manifestation allows a user to
5,548,722 8/1996 lalalian et a1. 395/200.1 easily manipulate the entity in order to display the contents
5,574,862 11/1996 Marianetti, II 3951200.08
5,659,791 8/1997 Nakajima et al. 345/302 of the resource on the screen or to electronically forward the
5,724,506 3/1998 Cleron et al. 395/200,01 entity over the network.
5,724,556 3/1998 Souder et aI. 345/335 X
5,781,189 7/1998 Holleran et at 345/335 20 Claims, 14 Drawing Sheets

VIEWING
EDITOR
§2Q

604

COMPONENT LAYER .2Q§ OPERATING


SYSTEM
§1l!

GRAPHIC
INTERFACE
OBJECT WINDOW
2SQ MANAGER
ill

Copy provided by USPTO from the PIRS Imaae Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 38 of 82

U.S. Patent Jul. 27, 1999 Sheet 1 of 14 5,929,852

a:
w
>
a:
0 W

--
0
~ ('-' C/)
~
~
0
~\. 0
0
cry
a
l.." (\j
I-
z
"-.~
z
w
::J
w ()
::J
() 0
-
-- a 0

'; 0
(\j

a: a:
w w
>
a: >
a:
w w
C/)

- C/)

!a I-
Z
W
aC')
r-'5
0
0
- ,...
(\j

a: a:
w w
>
a: >
a:
(' w w
a C/) C/)
g
.. - I-
Z
;;--
a
W
::J
0
0
cry
()
(\j
- r--

--
0
~
~

0
r
~
~ I"\... ~
0 W
a
(\j ::J
()

a
-
a
~

Copy provided by USPTO from the PIRS Imaae Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 39 of 82

u.s. Patent Jul. 27, 1999 Sheet 2 of 14 5,929,852

@~
~
~ r.:0
8~ tillj 9]

~
:. I I I
I
. .,

~~
-
- -
I.

L·"· • • •

' .-: >:


§; .. ...
~: ~ ~ "

~o. :::::
~ ~

:.
_ .~ J. ..
.~ 0 ~ ". I
. til I I

<Xl
(')
C\I
V

v
(\J
r
:;J: ."-. f---
r 12 ;:1j

0
0
(
C\I
r
(\J
C')
" "- ./l
U)
(')
(\J
(\J

Copy provided by USPTO from the PIRS Image Database on 11106/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 40 of 82

U.S. Patent Jul. 27, 1999 Sheet 3 of 14 5,929,852

...
-
co
C') ...
0
C')
"!"
.....
>-
0:
t.....
>-
0:
L..... 'L.
0 I- >-
0:
~- ::J ::J
W::'::: () a.. 0
~(/) -(' ~
0:
(/)8-
(/)
") () <D
.....
()
( UJ
~
« "!" 0
::::
C') C\I
.....
~ C\I
C')
C')

~
0
C\I
C')

C\I
C\I
C')
V,

0:::.:::
Wo:
1-
(" 0
0 ~~
~W
8z
l{)

o
I C')

oC')

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 41 of 82

~
\.rJ
,400 •
o ""d
b'
~ NE1WORK NE1WORK NE1WORK NE1WORK
/"'TVV~
( 490
e.
!'ll
."
<;
~.
COMPONENT COMPONENT COMPONENT COMPONENT
GOMP
·1 COMPo APPLIC. APPLIC.
....
==
Co
il. 1 1 I
~
ijj '--

8 , ~
a3 ~ ....,N,...
so NE1WORK

." 450 "- COMPONENT '"
1jj '"
3'
LAYER '"

~


![
gJ
~
••o
~
COMPONENT ARCHITECTURE LAYER 430 l '"~
....
~
~
....
o
,...
~"
g
....
OPERATING SYSTEM 420

t Ul
HARDWARE 410
19
~
FIG. 4 00
Ul
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 42 of 82

~
'J.J

/500 'i:!
b' 504 ....
~
('i'
:::1
""g COMPONENT
502
ICOMPONENT
LAYER
=
....
g:
Q.
506
C"
'<
c:
'"""d 508
'-<

3 F-
N
3 ,;-l
S-
o 516 544 ....
::g
ljj"" "C
NETWORK WINDOW SCREEN DISPLAY
3"
~ INTERFACE MANAGER BUFFER ADAPTER
o
540 514 Ji2Q .Q2§
~
C"
gJ
~
o
o
OPERATING SYSTEM '"'"
~

=~
510 532 '"...,o
~

"~ 'I----- 556 ....


,j>.
o
<0 568
NETWORK NETWORK COMPUTER
BUFFER ADAPTER NETWORK
;mQ 566 !2§Q
VI
FIG. 5
1s
'C
~

oe
VI
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 43 of 82

U.S. Patent Jut 27,1999 Sheet 6 of 14 5,929,852

a:
w
~
I-
Z
W
Z
oa..
:2
o()

C\I
~

co

Copy provided by USPTO from the PIRS Image Database on 11/0612009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 44 of 82

U.S. Patent JuI. 27, 1999 Sheet 7 of 14 5,929,852

o
....
r-..

'I
Cf) z
[Bvi 0
0 .... I-
Or-.. «
« 1-::;:':
zO:
wO "-.
ZLL CJ
O~ I.L
c.. z
w ::;:':0
0-
0
a: O~
::) C\JI 0'
0 .... 0
Cf)r-.. >
w z
a:

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 45 of 82

u.s. Patent Jul. 27, 1999 Sheet 8 of 14 5,929,852

802 /800
r---.......-L--..-.

CVBERITEM

804 806

GOPHERITEM WEBITEM

ARTICLE

810
FIG. 8

/'900

. . . ._P'"""""-l,,r- 902

906 908
904

FIG. 9

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 46 of 82

Lj

1000~ lJ.J

~
j
-;-
1002 CVBERExTENSION

'"< 1006"-...f- COMPONENT :=


"c.g:
~
1004
c:
(Jl

~
7
a 1008,"",- BASECOMPONENT ~-- -~ BASEE XTENSION
~N
3 .....
"• ."
.....
'"
ijj ~
3"
.l: 1010

~
~ GOPHERBROWSER r:n
ARTICLE BROWSER
~
~
•o I 1016
~
=-
'"'"
'C
"
~
~
1012 o...,
0;
.....
~
r
o
<0 WEBBROWSER TEXTVIEWER ~ 1018
"'"

r- 1014
~
1020
NEWSGROUpBROWSER PICTUREVIEWER 01

FIG. 10
18Ie
Oe
01
N
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 47 of 82

U.S. Patent Jul. 27, 1999 Sheet 10 of 14 5,929,852

Q)
Cl.
Cl.
c:

«
(9
u..
0
~

~
~

(\J '<t
~
~
~
~
::?:
a::
~
~
w
w z I-
(fJ 0 0:
:s:0 (fJ
Z
w
I<tl
0..-
a:: ~. 02:
CO X
a:: W C!J'«
w a::
I

0
0.. W
0 co
C!J
>-
()

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 48 of 82

U.S. Patent Jul. 27, 1999 Sheet 11 of 14 5,929,852

f 1100

...-------~1.".1110

GOPHERBROWSER

III GOPHERITEM
Happy Face

~GOPHERITE
1114 ~ Home Page

o GOPHERITEM
Apple

~------l.,.1120

WEBBROWSER

1124

~ GOPHERITEM
~ Home Page

FIG.118

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 49 of 82

U.S. Patent Jul. 27, 1999 Sheet 12 of 14 5,929,852

...---------'''-1110
GOPHERBROWSER

IIiI GOPHERITEM
Happy Face

~GOPHERITE
1114 fi;IlI Home Page

o GOPHERITEM
Apple 1106

, . . - - - - - - -......1120
WEBB ROWSER
1130

GOPHERSTREAM

1124

~GOPHERITE
~ Home Page

FIG.11C

Copy provided by USPTO from the PIRS Image Database on 11106/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 50 of 82

U.S. Patent Jul. 27, 1999 Sheet 13 ofl4 5,929,852

f1100

r----------';.1110
GOPHERBROWSER

GOPHERITEM
Happy Face

1106
~ GOPHERITEM
~ Home Page

o GOPHERITEM
Apple

1140

WEBBROWSER
Click Me!

Glick me tool

Click me first!

1124

~GOPHERITE
fI;III Home Page

FIG. 11 D

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 51 of 82

u.s. Patent JuI. 27, 1999 Sheet 14 of 14 5,929,852

1202

START

<:)1204

I
USER DOUBLE·CLlCKS ON
HOME PAGE ICON

~ 1206

GOPHERBROWSER COMPONENT RECEIVES


"DOUBLE·CLlCKING" EVENT AND CALLS OPEN
METHOD OF HOME PAGE GOPHERITEM COMPONENT

1208
S
GOPHERITEM COMPONENT CREATES WEBBROWSER
COMPONENT AND PASSES ITSELF TO NEWLV
CREATED CVBEREXTENSION COMPONENT

1210 .

WEBBROWSER COMPONENT NOTIFIED THAT


GOPHERITEM COMPONENT HAS BEEN ASSIGNED AND
GOPHERITEM COMPONENT INSTRUCTED TO CREATE
GOPHERSTREAM COMPONENT TO DOWNLOAD DATA

)12 12

GOPHERITEM COMPONENT CALLS OPEN METHOD OF


WEsBROWSER COMPONENT TO DlSPLAV DATA ON SCREEN

1214
FINISH

FIG. 12

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 52 of 82

5,929,852
1 2
ENCAPSULATED NETWORK ENTITY The Telnet service allows users to log onto computers
REFERENCE OF A NETWORK coupled to the networks, while the netnews protocol pro-
COMPONENT SYSTEM vides a bulletin-board service to its subscribers.
Furthermore, the various data formats of the information
This application is a continuation of U.S. patent appli- 5 available on the Internet include JPEG images, MPEG
cation Ser. No. 08/435,880, filed May 5, 1995, now aban- movies and p.Mlaw sound files.
doned. TWo fashionable services for accessing information over
the Internet are Gopher and the WorldMWide Web (''Web').
CROSS-REFERENCE TO RELATED Gopher consists of a series of Internet servers that provide
APPUCATIONS 10 a 'llistMoriented" interface to information available on tbe
This invention is related to the following copending U.S. networks; the information is displayed as menu items in a
patent applications: hierarchical manner. Included in the hierarchy of menus are
U.S. patent application Ser. No. 08/435,377, titled documents, which can be displayed or saved, and searchable
EXTENSIDLE, REPLACEABLE NETWORK COMPO- indexes, which allow users to type keywords and perform
NENT SYSTEM; 15 searches.
US. Pat. No. 5,784,619 issued Jul. 21, 1998, titled Some of the menu items displayed by Gopher are links to
information available on other servers located on the net-
REPLACEABLE AND EXTENSIBLE NOTEBOOK
works. In this case, the user is presented with a list of
COMPONENT OF A NETWORK COMPONENT SYS-
available information documents that can be opened. The
TEM;
20 opened documents may display additional lists or they may
U.S. patent application Ser. No. 08/435,862, titled contain various data~types, such as pictures or text;
REPLACEABLE AND EXTENSIDLE LOG COMPO- occasionally, the opened documents may "transport" tbe
NENT OF A NETWORK COMPONENT SYSTEM; user to another computer on the Internet.
U.S. Pat. No. 5,724,506, issued Mar. 3, 1998, titled The other popular information service on the Internet is
REPLACEABLE AND EXTENSIBLE CONNECTION 25 the Web. Instead of providing a user with a hierarchical
DIALOG COMPONENT OF A NETWORK COMPO- list-orieoted view of information. the Web provides the user
NENT SYSTEM; and with a "linked-hypertext" view. Metaphorically, the Web
U.S. Pat. No. 5,781,189 issued Jul. 14, 1998, titled perceives the Internet as a vast book of pages, each of which
EMBEDDING INTERNET BROWSER/BUTTONS
WITHlN COMPONENTS OF A NETWORK COMPO- 30 :~~;~ ~ct~~e:~r:xo\ ~~:~e~~~e~rd:=:~t~;:
NENT SYSTEM, each of which was :filed May 5, 1995 and written in HyperText Markup Language (HTML) and Web
assigned to the assignee of the present invention. servers transfer HTML documents to each other through the
HyperText Transfer Protocol (HTI'P).
FIELD OF THE INVENTION
35 The Web service is essentially a means for naming
This invention relates generally to computer networks sources of information on the Internet. Armed with such a
and, more particularly, to an architecture and tools for general naming convention that spans the entire network
building Internet-specific services. system, developers are able to build information servers that
potentially any user can access. Accordingly, Gopher
BACKGROUND OF THE INVENTION 40 servers, HTTPservers,FfPservers, and E--mail servers have
The Internet is a system of geographically distnbuted been developed for the Web. Moreover, the naming convenM
computer networks interconnected by computers executing tion enables users to identify resources (such as documents)
networking protocols that allow users to interact and share on any of these servers connected to the Internet and allow
information over the networks. Because of such wide~spread access to those resources.
information sharing, the Internet has generally evolved into 45 As an example, a user "traverses" the Web by following
an Ilopen" system for which developers can design software hot items of a page displayed 00 a graphical Web browser.
for performing specialized operations, or services, essen- These hot items are hypertext links whose presence are
tially without restriction. These services are typically imple M indicated on the page by visual cues, e.g., underlined words,
mented in accordance with a client/server architecture, icons or buttons. When a user follows a link (usually by
wherein the clients, e.g., personal computers or 50 clicking on the cue with a mouse), the browser displays the
workstations, are responsible for interacting with the users target pointed to by the link which, in some cases, may be
and the servers are computers configured to perform the another HTML document.
services as directed by the clients. The Gopher and Web information services represent
Not surprisingly, each of the services available over the entirely different approaches to interacting with information
Internet is generally defined by its own networking protocol. 55 on the Internet. One follows a listMapproach to information
A protocol is a set of rules governing the format and that "looks" like a telephone directory service, while the
meaning of messages or Ilpackets" exchanged over the other assumes a pageMapproach analogous to a tabloid newsM
networks. By implementing services in accordance with the paper. However, both of these approaches include applica M
protocols, computers cooperate to perform various tions for enabling users to browse information available on
operations, or similar operations in various ways, for users 60 Internet servers. Additionally, each of these applications has
wishing to "interact" with the networks. The services typi- a unique way of viewing and accessing the information on
cally range from browsing or searching for information the servers.
having a particular data format using a particular protocol to Netscape Navigator™ eNetscape") is an example of a
actually acquiring information of a different format in accor- monolithic Web browser application that is configured to
dance with a different protocol. 65 interact with many of the previously-described protocols,
For example, the file transfer protocol (F1P) service including HTTP, Gopher and FIF. When instructed to
facilitates the transfer and sharing of files across the Internet. invoke an application that uses one of these protocols,

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 53 of 82

5,929,852
3 4
Netscape "translates" the protocol to hypertext. This trans~ Since many editors may work together on the same
lation places the user farther away from the protocol document, the compound document is apportioned into
designed to run the application and, in some cases, actually individual modules of content for manipUlation by the
thwarts the user's Internet experience. For example, a dis- editors. The compound·nature of the document is realized by
cussion system requiring an interactive exchange between 5 embedding these .modules within each other to create a
participants may be bogged down by hypertext translations. document having a mixture of data types. The software
The Gopher and Web services may further require addi- component architecture provides the foundation for assem-
tional applications to perform specific functions, such as bling documents of differing contents and the present inven-
playing sound or viewing movies, with respect to the data tion is directed to a system for extending this capability to
types contained in the documents. For example, Netscape 10 network-oriented services.
employs helper applications for executing applications hav-
ing data formats it does not "understand". Execution of these To remotely access information stored on a resource ofthe
functions on a computer requires interruption of processing network. the user typically invokes a service configured to
and context switching (i.e., saving of state) prior to invoking operate in accordance with a protocol for accessing the
the appropriate application. Thus, if a user operating within resource. In particular, the user types an explicit destination
the Netscape application "opens" a MPEG movie, that 15 address command that includes a uniform resource locator
browsing application must be saved (e.g., to disk) prior to (URL). The URL is a rather long (approximately 50
opening an appropriate :MPEG application. e.g., Sparkle, to character) address pointer that identifies both a network
view the image. Such an arrangement is inefficient and resource ·and a means for accessing that resource. The
rather disruptive to processing operations of the computer. following is an example of a hypothetical URL address
Typically, a computer includes an operating system and 20 pointer to a remote resource on a Web server:
application software which, collectively, control the opera-
tions of the computer. The applications are preferably task- http://I.aall.bbb.cc/hypertext/DdddEeue/WWW/FlffffILhtml
specific and independent, e.g., a word processor application
edits words, a drawing application edits drawings and a It is apparent that having to type such long destination
database application interacts with information stored on a 25
address pointers can become quite burdensome for users that
database storage unit. Although a user can move data from frequently access information from remote resources.
one application to the other, such as by copying a drawing Therefore, it is among the objects of the present invention
into a word processing file, the independent applications to simplify a user's experience on computer networks with-
must be invoked to thereafter manipulate that data. out sacrificing the fleXIbility afforded the user by employing
Generally, the application program presents information 30 existing protocols and data types available on those net-
to a user through a window of a graphical user interface by works.
drawing images, graphics or text within the window region. Another object of the invention is to provide a system for
The user, in tum, communicates with the application by users to search and access information on the Internet
"pointing" at graphical objects in the window with a pointer without extensive understanding or knOWledge of the under-
that is controlled by a hand-operated pointing device, such 35 lying protocols and data formats needed to access that
as a mouse, or by pressing keys of a keyboard. information.
The graphical objects typically included with each win- Still another object of the invention is to provide users
dow region are sizing boxes, buttons and scroll bars. These with a simple means for remotely accessing information
objects represent user interface elements that the user can stored on resources connected to computer networks.
point at with the pointer (or a cursor) to select or manipulate. 40
For example, the user may manipulate these elements to
SUMMARY OF TIlE INVENTION
move the windows around on the display screen, and change Briefly, the invention comprises a network-oriented com-
their sizes and appearances so as to arrange the window in ponent system for efficiently accessing information from a
a convenient manner. When the elements are selected or network resource located on a computer network by creating
manipulated, the underlying application program is 45 an encapsulated network entity that contains a reference to
informed. via the window environment, that control has that resource. The encapsulated entity is preferably imple-
been appropriated by the user. mented as a network component stored on a computer
A menu bar is a further example of a user interface remotely displaced from the referenced resource. In
element that provides a list of menus available to a illier. addition, the encapsulated entity may be manifested as a
Each menu. in turn, provides a list of command options that 50 visual object on a graphical user interface of a computer
can be selected merely by pointing to them with the mouse- screen. Such visual manifestation allows a user to easily
controlled pointer. That is, the commands may be issued by manipulate the entity in order to display the contents of the
actuating the mouse to move the pointer onto or near the resource on the screen or to electronically forward the entity
command selection, and pressing and quickly releasing, i.e., over the network.
"clicldng" a button on the mouse. 55 In the illustrative embodiment of the invention, the ref-
In contrast to this typical application-based computing erence to the network resource is preferably a "pointer",
environment., a software component architecture provides a such as a uniform resource locator (URL), that identifies the
modular document-based computing arrangement using network address of the resource, e.g., a Gopher browser or
tools such as viewing editors. The key to document-based a Web page. In addition to storing the pointer, the encapsu-
computing is the compound document, i.e., a document 60 lated entity also contains information for invoking appro-
composed of many different types of data sharing the same priate network components needed. to access the resource.
:file. The types of data contained in a compound document Communication among the network components is achieved
may range from text. tables and graphics to video and sound. through novel application programming interfaces (APIs) to
Several editors. each designed to handle a particular data facilitate integration with an underlying software component
type or format, can work on the contents of the document at 65 architecture. Such a cooperating architecture allows the
the same time. unlike the application-based computing envi- encapsulated entity and network components to "transport"
ronment. the user to the network location of the remote resource.

Copy proVided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 54 of 82

5,929,852
5 6
Specifically, the encapsulated entity component is an hardware and software elements that provide resources or
object of the network·oriented component system that is services for use by the clients 200 to increase the efficiency
preferably embodied as a customized framework having a of their operations. It will be understood to those skilled in
set of interconnected abstract classes. A CyberItem class the art that, in an alternate embodiment, the client and server
defines the encapsulated entity object which interacts with 5 may exist on the same computer; however, for the illustra-
other objects of the network system' to remotely access tive embodiment described herein, the client and server are
information from the referenced resource. Since these separate computers.
objects are integral elements of the cooperating component Several types of computer networks 110, including local
architecture, any type of encapsulated network entity may be area networks (LANs) and wide area networks (WANs),
developed with consistent behaviors. i.e., these entities may 10 may be employed in the system 100,ALAN is a limited area
be manifested as visual objects that can be distributed and network that typically consists of a transmission medium,
manipulated iconically. such as coaxial cable or twisted pair, while a WAN may be
Advantageously, the inventive encapsulation technique a public or private telecommunications facility that inter-
descnbed herein provides a user with a simple means for connects computers widely dispersed. In the illustrative
accessing information on computer networks. 15 embodiment, the network system 100 is the Internet system
of geographically distributed computer networks.
BRIEF DESCRIPTION OF THE DRAWINGS Computers coupled to the Internet typically communicate
The above and further advantages of the invention may be by exchanging discrete packets of information according to
better understood by referring to the following description in 20 predefined networking protocols. Execution of these net-
conjunction with the accompanying drawings in which: working protocols allow users to interact and share infor-
FIG. 1 is a block diagram of a network system including mation across the networks. As an illustration, in response to
a collection of computer networks interconnected by client a user's request for a particular service, the client 200 sends
and server computers; an appropriate information packet to the server 300, which
performs the service and returns a result back to the client
FIG. 2 is a block diagram of a client computer, such as a 25
200.
personal computer. on which the invention may advanta-
geously operate; FIG. 2 illustrates a typical hardware configuration of a
client 200 comprising a central processing unit (CPU) 210
FIG. 3 is a block diagram of the server computer of FIG. coupled between a memory 214 and input/output (110)
1; circuitry 218 by bidirectional buses 212 and 216. The
FIG. 4 is a higWy scbematized block diagram of a layered 30 memory 214 typically comprises random access memory
component computing arrangement in accordance with the (RAM) for temporary storage of information and read only
invention; memory (ROM) for permanent storage of the computer's
FIG. 5 is a schematic illustration software of tbe interac- configuration and basic operating commands, such as por-
tion of a component, a software component layer and an 35 tions of an operating system (not shown). As described
operating system of the computer of FIG. 2; further herein, the operating system controls the operations
FIG. 6 is a schematic illustration of the interaction of the CPU 210 and client computer 200.
between a component, a component layer and a window The I/O circuitry 218, in turn, connects the computer to
manager in accordance with the invention; computer networks, such as the Internet networks 250, via a
FIG. 7 is a schematic diagram of an illustrative encapsu- 40 bidirectional bus 222 and to cursor/pointer control devices, ,
lated network entity object in accordance with the invention; such as a keyboard 224 (via cable 226) and a mouse 230 (via
FIG. 8 is a simplified class heirarchy diagram illustrating cable 228). Tbe mouse 230 typically contains at least one
a base class CyberItem, and its associated subclasses, used button 234 operated by a user of the computer. A conven-
to construct network component objects in accordance with tional display monitor 232 having a display screen 235 is
45 also connected to I/O circuitry 218 via cable 238. A pointer
the invention;
(cursor) 240 is displayed on windows 244 of the screen 235
FIG. 9 is a simplified class heirarchy diagram illustrating and its position is controllable via the mouse 230 or the
a base class CyberStream. and its associated subclasses, in keyboard 224, as is well-known. The I/O circuitry 218
accordance with the invention; receives information, such as control and data signals, from
FIG. 10 is a simplified class hierarchy diagram illustrating 50 the mouse 230 and keyboard 224, and provides that infor-
a base class CyberExtension, and its associated subclasses, mation to the CPU 210 for display on the screen 235 or, as
in accordance with the present invention; descnbed further herein, for transfer over the Internet 250.
FIGS. llA-llD are highly schematized diagrams illus- FIG. 3 illustrates a typical hardware configuration of a
trating the interactions between the network component server 300 of the network system 100. The setver 300 has
objects, including the encapsulated network entity object of 55 many of the same units as employed in the client 200,
FIG. 7; and including a CPU 310, a memory 314 and I/O circuitry 318,
FIG. 12 is an illustrative flowchart of the sequence of each ofwbich are interconnected by bidirectional buses 3]2
steps involved in invoking, and accessing, information from and 316. Also, the I/O circuitry connects the computer to
a referenced network resource. computer networks 350 via a bidirectional bus 322. These
60 units are configuretf to perform functions similar to tbose
DETAILED DESCRIPTION OF ILLUSTRATIVE provided by their corresponding units in the computer 200.
EMBODIMBNT maddition, the server typically includes a mass storage unit
FIG. 1 is a block diagram of a network system 100 320, such as a disk drive, connected to the I/O circuitry 318
comprising a collection of computer networks 110 intercon- via bidirectional bus 324.
nected by client computers C'clients") 200, e.g., worksta- 65 It is to be understood that the I/O circuits within the
tions or personal computers, and' server computers computers 200 and 300 contain the necessary hardware, e.g.,
("servers") 300. The servers are typically computers having buffers and adapters, needed to interface with the control

CODV provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 55 of 82

5,929,852
7 8
devices, the display monitor, the mass storage unit and the component's contents and, where appropriate, present a user
network. Moreover, the operating system includes the nec- interface for modifying those contents. Additionally, the
essary software drivers to control, e.g., network adapters editor may include menuS, controls and other user interface
within the I/O circuits when performing I/O operations, such elements. The network component layer 450 extends the
as the transfer of data packets between the client 200 and 5 functionality oftbe underlying component architecture layer
server 300. 430 by defining network~oriented components 480 that
seamlessly integrate with these components 460 to provide
The computers are preferably personal computers of the basic tools for efficiently accessing information from net-
Macintosh® series of computers sold by Apple Computer work reSources located on, e.g., servers coupled to the
Inc., although the invention may also be practiced in the 10 computer networks.
context of other types of computers, including the IBM® FIG. 4 also illustrates the relationship of applications 490
series of computers sold by International Business Machines to the elements of the document computing arrangement
Corp. These computers have resident thereon, and are con~ 400. Although they reside in the same ''user space" as the
trolled and coordinated by, operating system software, such components 460 and network components 480, the applica-
as the Apple® System 7®, IBM OS2®, or the Microsoft® tions 490 do not interact with these elements and, thus,
Windows@> operating systems. 15 interface directly to the operating system layer 420. Because
As Doted, the present invention is based on a modular they are designed as monolithic, autonomous modules,
document computing arrangement as provided by an under- applications (such as previous Internet browsers) often do
lying software component architecture, rather than the typi- not even interact among themselves. In contrast, the com~
cal application-based environment of prior computing sys~ ponents of the arrangement 400 are designed to work
tems. FIG. 4 is a higWy schematized diagram of the 20 together and communicate via the common component
hardware and software elements of a layered component· architecture layer 430 or, in the case of the network
computing arrangement 400 that includes the novel components, via the novel network component layer 450.
network-oriented component system of the invention. At the Specifically, the invention features the provision of the
lowest level there is the computer hardware, shown as layer network-oriented component system which, when invoked,
410. Interfacing with the hardware is a conventional oper- 25 causes actions to take place that enhance the ability of a 1L')er
to interact with the computer to create encapsulated entities
ating system layer 420 that includes a window manager. a
that contain references to network resources located on
graphic system, a file system and network~specific computer networks, such as the Internet. The encapsulated
interfacing, such as a TCP/IP protocol stack and an Apple- entities are manifested as visual objects to a user via a
talk protocol stack. 30 window environment, such as the graphical user interface
The software component architecture is preferably imple~ provided by System 7 or Windows, that is preferably dis-
mented as a component architecture layer 430. Although it played on the screen 235 (FIG. 2) as a graphical display to
is shown as overlaying the operating system 420, the com- facilitate interactions between the user and the computer,
ponent architecture layer 430 is actually independent of the such as the client 200. This behavior of the system is brought
operating system and, more precisely, resides side-by-side 35 about by the interaction of the network components with a
with the operating system. This relationship allows the series of system software routines associated with the oper-
component architecture to exist on multiple platforms that ating system 420. These system routines, in turn, interact
employ different operating systems. with the component architecture layer 430 to create the
In accordance with the present invention, a novel windows and graphical user interface elements, as described
network-oriented component layer 450 contains the under- 40 further herein.
lying technology for creating encapsulated entity compo- The window environment is generally part of the operat~
nents that contain references to netwoIk resources located on ing system software 420 that includes a collection of utility
computer networks. As descnbed further herein, communi- programs for controlling the operation of the computer 200.
cation among these components is achieved through novel The operating system, in turn, interacts with the components
application programming interfaces (APIs) to ensure inte- 45 to provide higher level functionality, inclUding a direct
gration with the underlying component architecture layer interface with the user. A component makes use of operating
430. These novel APIs are preferably delivered in the form system functions by issuing a series of task commands to the
of objects in a class hierarchy. operating system via the network component layer 450 or, as
It should be noted that the network component layer 450 is typically the case, through the component architecture
may operate with any existing system-wide component 50 layer 430. The operating system 420 then performs the
architecture, such as the Object Linking and Embedding requested task. For example, the component may request
(OLE) architecture developed by the Microsoft Corporation; that a software driver of the operating system initiate trans-
however, in the illustrative embodiment, the component fer of a data packet over the networks 250 or that the
architecture is preferably OpenDoc, the vendor-neutral, operating system display certain information on a window
open standard for compound documents developed by, 55 for presentation to the user.
among others, Apple Computer, Inc. FIG. 5 is a schematic illustration of the interaction of a
Using tools such as viewing editors, the component component 502, software component layer 506 and an
architecture layer 430 creates a compound document com~ operating system 510 of a computer 500, which is similar to,
posed of data having different types and formats. Each and has equivalent elements of, the client computer 200 of
differing data type and format is contained in a fundamental 60 FIG. 2. As noted, the network component layer 450 (FIG. 4)
unit called a computing part or, more generally, a ~'compo­ is integrated with the component architecture layer 430 to
nent" 460 comprised of a viewing editor along with the data provide a cooperating architecture that allows any encapsu-
content. An example of the computing component 460 may lated entity and network component to "transport" the user
include a MacDraw component. The editor, on the other to tbe network location of a remote resource; accordingly,
hand, is analogous to an application program in a conven- 65 for purposes of the present discussion, the layers 430 and
tional computer. That is, the editor is a software component 450 may be treated as a single software component layer
which provides the necessary functionality to display a 506.

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 56 of 82

5,929,852
9 10
The component 502, component layer 506 and operating represented by the data elements, and its behavior, which
system 510 interact to control and coordinate the operations can be represented by its data manipulation functions. In this
of the computer 500 and their interaction is illustrated way, objects can model concrete things like computers,
schematically by arrows 504 and 508. In order to display while also modeling abstract concepts like numbers or
information on a screen display 535, tbe component 502 and 5 geometrical designs.
component layer 506 cooperate to generate and send display Objects are defined by creating "classes" which are not
commands to a window manager 514 of the operating objects themselves, but which act as templates that instruct
system 510. The window manager 514 stores'information the compiler how to construct an actual object Aclass may,
directly (via arrow 516) into a screen buffer 520. for example, specify the number and type of data variables
The window manager 514 is a system software routine 10 and the steps involved in the functions which manipulate the
that is generally responsible for managing windows 544 that data. An object is actually created in the program by means
the user views during operation of the network component of a special function called a "constructor" which uses the
system. That is, it is generally the task of the window corresponding class definition and additional information,
manager to keep track of the location and size of the window such as arguments provided during object creation, to con-
and window areas which must be drawn and redrawn in 15 struct the object. Likewise objects are destroyed by a special
connection with the network component system of the function called a "destructor". Objects may be used by
present invention. manipulating their data and invoking their functions.
Under control of various hardware and software in the The principle benefits of OOP techniques arise out of
system, the contents of the screen buffer 520 are read out of three basic principles: encapsulation, polymorphism and
the buffer and provided, as indicated schematically by arrow 20 inheritance. Specifically, objects can be designed to hide, or
522, to a display adapter 526. The display adapter contains encapsulate, all, or a portion of, its internal data structure
hardware and software (sometimes in the form of firmware) and internal functions. More specifically, during program
which converts the information in the screen buffer 520 to a design, a program developer can define objects in which all
form which can be used to drive a display screen 535 of a or some of the data variables and all or some of the related
monitor 532. The monitor 532 is connected to display 25 functions are considered 'J1rivate" or for use only by the
adapter 526 by cable 528. object itself. Other data or functions can be declared "pub-
Similarly, in order to transfer information as a packet over lie" or available for use by other programs. Access to the
the computer networks, the component 502 and component private variables by other programs can be controlled by
layer 506 cooperate to generate and send network defining public functions for an object which access the
commands, such as remote procedure calls, to a network- 30 object's private data. The public functions form a controlled
specific interface 540 of the operating system 510. The and consistent interface between the private data and the
network interface comprises system software routines, such l'outside" world. Any attempt to write program code which
as "stub" procedure software and protocol stacks, that are directly accesses the private variables causes the compiler to
generally responsible for formating the information into a generate an error during program compilation which error
predetermined packet format according to the specific net- 35 stops the compilation process and prevents the program
work protocol used, e.g., TCP/IP or Apple-talk protocol. from being run.
Specifically, the network interface 540 stores the packet Polymorphism is a concept which allows objects and
directly (via arrow 556) into a network buffer 560. Under functions that have the same overall format, but that work
control of the hardware aod software in the system, the 40 with different data, to function differently in order to pro-
contents of the network buffer 560 are provided, as indicated duce consistent results. Inheritance, on the other hand,
schematically by arrow 562, to a network adapter 566. The allows program developers to easily reuse pre-existing pro-
network adapter incorporates the software and hardware, grams and to avoid creating software from scratch. The
i.e., electrical and mechanical interchange circuits and principle of inheritance allows a software developer to
characteristics, needed to interface with the particular com- 45 declare classes (and the objects which are later created from
puter networks 550. The adapter 566 is connected to the them) as related. Specifically, classes may be designated as
computer networks 550 by cable 568. subclasses of other base classes. A subclass llinherits" and
In a preferred embodiment, the invention described herein has access to all of the pUblic functions of its base classes
is implemented in an object-oriented programming (OOP) just as if these functions appeared in the subclass.
language, such as C++, using System Object Model (SOM) 50 Alternatively, a subclass can override some or all of its
technology and OOP techniques. inherited functions or may modify some or all of its inherited
The C++ and SOM languages are well~known and many functions merely by defining a new function with the same
articles and texts are available which describe the languages form (overriding or modification does not alter the function
in detail. In addition, C++ and SOM compilers are commer- in the base class, but merely modifies the use of the function
cially available from several vendors. Accordingly, for rea- 55 in the subclass). The creation of a new subclass which has
sons of brevity, the details of the C++ and SaM languages some of the functionality (with selective modification) of
and the operations of their compilers will not be discussed another class allows software developers to easily customize
further in detail herein. existing code to meet their particular needs.
As will be understood by those skilled in the art, OOP In accordance with the present invention, the component
techniques involve the definition, creation, use and destruc- 60 502 and windows 544 are ltobjects" created by the compo-
tion of "objects". These objects are software entities com- nent layer 506 and the window manager 514, respectively,
prising data elements and routines, or functions, which the latter of which may be an Object-oriented program.
manipulate the data elements. The data and related functions Interaction between a component, component layer and a
are treated by the software as an entity tbat can be created, window manager is illustrated in greater detail in FIG. 6.
used and deleted as if it were a single item. Together, the data 65 In general, the component layer 606 interfaces with the
and functions enable objects to model virtually any real- window manager 614 by creating and manipulating objects.
world entity in terms of its characteristics, which can be The window manager itself may be an object which is

Copy provided by USPTO from the PIRS Image Database on 11/0612009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 57 of 82

5,929,852
11 12
created when the operating system is started. Specifically, services such as communications, printing, file systems
the component layer creates window objects 630 that cause support, graphics, etc. Commercial examples of application-
the window manager to create associated windows on the type frameworks include MacApp (Apple), Bedrock
display screen. This is shown schematically by an arrow (Syman'ec), OWL (Borland), NeXT Step App Kit (NeXl)
608. In addition. the component layer 606 creates individual 5 and Smalltalk-80 MVC (parcPlace).
graphic interface objects 650 that are stored in each window While the framework approach utilizes all the principles
object 630. as shown schematically by arrows 612 and 652. of encapsulation, polymorphism, and inheritance in the
Since many graphic interface objects may be created in object layer. and is a substantial improvement over other
order to display many interface elements OD the display programming techniques, there are difficulties which arise.
screen, the window object 630 communicates with the 10 These difficulties are caused by the fact that it is easy for
window manager by means of a sequence of c4"awing developers to reuse their own objects, but it is difficult for
commands issued from the window object to the window the developers to use objects generated by other programs.
manager 614, as illustrated by arrow 632. Further, frameworks generally consist of one or more object
As noted, the component layer 606 functions to embed "layers" on top of a monolithic operating system and even
components within one another to form a compound docu- 15 with the flexibility of the object layer, it is still often
ment having mixed data types aod formats. Many different necessary to directly interact with the underlying system by
viewing editors may work together to display, or modify, the means of awkward procedure calIs.
data contents of the document. In order to direct keystrokes In the same way that a framework provides the developer
and mouse events initiated by a user to the proper compo- with prefab functionality for a document. a system
nents and editors, the component layer 606 includes an 20 framework, such as that included in the preferred
arbitrator 616 and a dispatcher 626. embodiment, can provide a prefab functionality for system
The dispatcher is an object that communicates with the level services which developers can modify or override to
operating system 610 to identify the correct viewing editor create customized solutions, thereby avoiding the awkward
660, while the arbitrator is an object that informs the procedural calls necessary with the prior art frameworks. For
dispatcher as to which editor "owns" the stream of key- 25 example, consider a customizable network interface frame-
strokes or mouse events. Specifically, the dispatcher 626 work which can provide the foundation for browsing and
receives these "human-interface" events from the operating accessing information over a computer network. A software
system 610 (as shown schematically by arrow 628) and developer who needed these capabilities would ordinarily
delivers them to the correct viewing editor 660 via arrow have to write specific routines to provide them. To do this
662. The viewing editor 660 then modifies or displays, either 30 with a framework, the developer only needs to supply the
visually or acoustically, the contents of the data types. characteristic and behavior of the finished output, wbile the
Although OOP offers significant improvements over other framework provides the actual routines which perform the
programming concepts, software development still requires tasks.
significant outlays of time and effort, especially if no pre- 35 A preferred embodiment takes the concept of frameworks
existing software is available for modification. and applies it throughout the entire system, including the
Consequently, a prior art approach has been to provide a document, component, component layer and the operating
developer with a set of predefined. interconnected classes system. For the commercial or corporate developer, systems
which create a set of objects and additional miscellaneous integrator, or OEM, this means all of the advantages that
routines that are all directed to performing commonly- 40 have been illustrated for a framework, such as MacApp, can
encountered tasks in a particular environment. Such pre- be leveraged not only at the application level for things such
defined classes and libraries are typically called "frame- as text and graphical user interfaces, but also at the system
works" and essentially provide a pre-fabricated structure for level for such services as printing, graphics, multi-media,
a working document. file systems and, as described herein, network-specific
For example, a framework for a user interface might 45 operations.
provide a set of predefined graphic interface objects which Referring again to FIG. 6, the window object 630 and the
create windows, scroll bars, menus, etc. and provide the graphic interface object 650 are elements of a graphical user
support and ."default" behavior for these interface objects. interface of a network component system having a customi-
Since frameworks are based on object-oriented techniques, zable framework for greatly enhancing the ability of a user
the predefined classes can be used as base classes and the 50 to efficiently access information from a network resource on
built-in default behavior can be inherited by developer- computer networks by creating an encapsulated entity that
defined subclasses and either modified or overridden to contains a reference to that resource. The encapsulated entity-
allow developers to e),.1end the framework and create cus- is preferably implemented as a network component of the
tomized solutions in a particular area of expertise. This system and stored as a visual object, e.g., an icon, for display
object-oriented approach provides a major advantage over 55 on a graphical user interface. Such visual display allows a
traditional programming since the programmer is not chang- user to easily manipulate the entity component to display the
ing the original program, but rather extending the capabili- contents of the resource on a computer screen or to elec-
ties of that original program. In addition, developers are not tronically forward the entity over the networks.
blindly working through layers of code because the frame- Furthermore, the reference to the network resource is a
work provides architectural guidance and modeling and, at 60 pointer that identifies the network address of the resource,
the same time, frees the developers to supply specific actions e.g.• a Gopher browser, a Web page or an E-mail message.
unique to the problem domain. FIG. 7 is a schematic diagram of an illustrative encapSUlated
There are many kinds of frameworks available, depending network entity object 700 containing a pointer 710. In one
on the level of the system involved and the kind of problem embodiment of the invention, the pointer may be a uniform
to be solved. The types of frameworks range from high-level 65 resource locator (URL) having a first portion 712 that
frameworks that assist in developing a user interface, to identifies the particular network resource and a second
lower-level frameworks that provide basic system software portion 114 that specifies the means for accessing that

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 58 of 82

5,929,852
13 14
resource. More specifically, the URL is a string of approXl:- which is an abstraction that serves as an API between a
mately 50 characters that describes the protocol used to component configured to display a particular data format
address the target resource, the server on which the resource and the method for obtaining the actual data. Specifically, a
resides. the path to the reSOurce and the resource filename. CyberStream object contains the software commands nec-
It is to be understood, however, that other representations of 5 essary to create a "data stream" for transfering information
a l'pointer" are included within the principles of the from one object to another. According to the invention, a
invention, e.g., a Post Office Protocol (POP) account and GopherStream subclass 904 is derived from the Cyber-
message identification (ill). Stream base class 902 and encapsulates a network object
that implements the Gopher protocol.
In addition to storing the pointer, the encapsulated entity
10 FIG. 10 is a simplified class hierarchy diagram 1000 of
also contains information 720 for invoking appropriate the base class CyberExtension 1002 which represents addi·
network components needed to access the resource. Com-
tional behaviors provided to components of the underlying
munication among these network components is achieved
software component architecture. For example, CyberEx-
through novel application programming interfaces (APIs). tension objects add functionality to, and extend the APIs of,
These APIs are preferably delivered in the form of objects in 15 existing components so that they may communicate with the
a class hierarchy that is extensible so that developers can
novel network components, such as the encapsulated entity
create new components. From an implementation viewpoint, objects. As a result, the CyberExtension base class 1002
the objects can be subclassed and can inherit from base
operates in connection with a Component base class 1006
classes to build customized components that allow users to
through their respective subclasses BaseExtension 1004 and
see different kinds of data using different kinds of protocols,
20 BaseComponent 1008.
or to create components that function differently from exist-
CyberExtension objects are used by components tbat
ing components.
display the contents of CyberItem objects; this includes
In accordance with the invention, the customized frame w

browser-like components, such as a Gopher browser or Web


work has a set of interconnected abstract classes for defining browser, along with viewer-like components, such as JPEG,
network-oriented objects used to build the customized net- 25 MPEG or text viewers. The CyberExtension objects also
work components. These abstract classes include keep track of the CyberItem objects which these components
CyberItem, CyberStream and CyberExtension and the are responsible for displaying. In accordance with the
objects they define are used to build the novel network invention, the class GopherBrowser 1010 may be used to
components. A description of these abstract classes is pro- construct a Gopher-like network browsing component and
vided in copending and commonly assigned U.S. patent 30 the class WebBrowser 1012 may be used to construct a
application titled Extensible, Replaceable Network Compo- Web-like network browsing component.
nent System, filed May 5, 1995, which application is incor-
FIGS. llA-llD are highly schematized diagrams illus-
porated by reference as though fully set forth herein.
trating the interactions between the novel network-oriented
Specifically, the Cyberltem class defines the ~ncapsulated components, including the encapsulated (CyberItem) net~
entity object which interacts with objects defined by the 35 work entity component according to the invention. It is to be
other abstract classes of the network system to 'I transport" understood that the components described herein are objects
the user to the network location, i.e., remotely access constructed from the interconnected abstract classes. In
information from the referenced resource and display that general, a user has "double clicked" on an icon of a graphical
information to the user at the computer. Since these objects uscr interface 1100 displayed on a computer screen. The
are integral elements of the cooperating component 40 icon represents, e.g., a Gopher directory displayed in a
architecture, any type of encapsulated network entity may be Gopher browser application. Initially, a GopherBrowser
developed with consistent behaviors, i.e., these entities may component 1110 displays two icons representing CyberItem
be manifested as visual objects that can be distributed and components, the icons labeled (GopherItem) Happy Face
manipulated iconically. 1104 and (Gopherltem) Home Page 1106. These latter
FIG. 8 illustrates a simplified class hierarchy diagram 800 45 components represent the contents of a Gopher directory
of the base class CyberItem 802 used to construct the labeled (Gopherltem) Apple 1ll4.
encapsulated network entity component object 602. In In FIG. 1lA, the left side of the diagram illustrates a
accordance with the illustrative embodiment, subclasses of GopherBrowser component 1110 that is displayed on the
the Cyberltem base class are used to construct various computer screen, i.e., the right side of the diagram. The
network component objects configured to provide such 50 GopherBrowser component has a CyberExtension compo-
services for the novel network-oriented component system. nent 1112 which keeps track of the GopherItem components.
For example, the subclass GopherItem 804 is derived from When the user double clicks on the Home Page GopherItem
the CyberItem class 802 and encapsulates a network entity icon 1106, the GopherBrowser component 1110 receives this
component object representing a l'thing in Gopher space", event and issues a call to an "Open" method of a Home Page
such as a Gopher directory. 55 GopherItem component; this call instructs the GopherItem
Since each of the classes used to construct these network component 1106 to open itself.
component objects are subclasses of the CyberItem base Specifically, and referring to FIG. 11B, the GopherItem
class, each class inherits the functional operators and meth- component 1106 creates a component of the appropriate type
ods that are available from that base class. Accordingly, to display itself. For this example, the GopherItem prefer-
methods associated with the CyberItem base class for, e.g., 60 ably creates a WebBrowser component 1120. Once created,
instructing an object to open itself, are assumed by the the WebBrowser component further creates a CyberExten-
subclasses to allow the network components to display sion component 1122 for storing the Home Page Gopher-
CyberItem objects in a consistent manner. Item component (now shown at 1124). In accordance with
In some instances, a CyberItem object may need to spawn the invention, the Home Page GopherItem component is a
a CyberStream object in order to obtain the actual data for 65 network entity containing a pointer that points to the net~
the object it represents. FIG. 9 illustrates a simplified class work address of a Gopher server storing the appropriate Web
hierarchy diagram 900 of the base class CyberStream 902 page.

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 59 of 82

5,929,852
15 16
In FIG. liC, the CyberExtension component 1122 then access the one or more data types associated with the
notifies the WebBrowser component 1120 that it has been network resource;
assigned a GopherItem component 1124 to display. The creating an encapsulated entity component containing a
WebBrowser component 1120 calls a method CreateCyber- reference to a location of the network resource on the
Stream of the GopherItem to create a GopherStream com- 5 computer network, the encapsulated entity component
ponent 1130 for downloading the appropriate data. also identifying the at least one network oomponent
Thereafter, the WebBrowser component 1120 begins asy- that was defined for the network resource;
chronously downloading an HTML document from the storing the encapsulated entity component as a visual
appropriate Gopher server (not shown). object on the computer;
Control of the execution of this process tben returns to the 10 in response to manipulation of the visual object with a
GopberItem component 1124 in FIG. lID. This component, pointing device, displaying the contents of the network
in tum, issues a call to an Open method of the WebBrowser resource on a screen of the computer by invoking the
component 1120, which causes the downloaded HTML object-oriented software components integrated by the
document to appear on the screen (now shown at 1140). For at least one identified network component
a further understanding of the invention, FIG. 12 provides an 15 2. The method of claim 1 wherein the step of displaying
illustrative flowchart 1200 of the sequence of steps involved comprises the step of invoking a fir.st network component for
in invoking, and accessing, information from a referenced displaying the contents of the referenced network resource
network resource, as described above. on the screen, the first network component comprisiilg a
In summary, the network-oriented component system browsing component.
provides a customizable framework that enables a user to 20 3. The method of claim 2 wherein the step of displaying
create an encapsulated entity containing a reference to a further comprises the step of invoking a second network
network resource on a computer network. Advantageously, component for transfering the contents of the referenced
the inventive encapsulation technique allows a user to network resource to the first network component, the second
simply manipulate visual objects when accessing informa- network component comprising a data stream component.
tion on the network. Instead of having to type the destination 2S 4. The method of claim 3 further comprising the step of.
address of a resource, the user can merely "drag and drop" creating objects for communication among the encapsulated
the icon associated with entity anywhere on the graphical entity and network components through application pro-
user interface. When the user "double clicks" on the icon, gramming interfaces.
the entity opens up in a window and displays the contents of 5. The method of claim 4 wherein the step of creating
the resource at that network location. Since the address is 30 comprises the step of constructing the encapsulated entity
encapsulated within the network reference entity, the user component from an Item object defined by an Item object
does not have to labor with typing of the cumbersome class.
character string. 6. The method of claim 5 wherein the step of creating
While there has been shown and described an illustrative 35 comprises the step of spawning a Stream object from the
embodiment for implementing an extensible and replaceable Item object, the Stream object representing the data stream.
network component system, it is to be understood that 7. Apparatus for efficiently accessing information from a
various other adaptations and modifications may be made network resource located on a computer network for display
within the spirit and scope of the invention. For example, on a computer coupled to the network, the network resource
additional system software routines may be used when 40 having one or more associated data types, each data type
implementing the invention in various applications. These being accessible by a corresponding object-oriented soft~
additional system routines include dynamic link libraries ware component, the apparatus comprising:
(DLL), which are program files containing collections of an object-oriented software component architecture layer
window environment and networking functions designed to configured to define at least one network component
perform specific classes of operations. These functions are 45 that integrates the object.oriented software components
invoked as needed by the software component layer to needed to access the one or more data types associated
perform the desired operations. Specifically, DLis, which with the network resource; and
are generally well-known, may be used to interact with the an encapsulated network entity component cooperating
component layer and window manager to provide network- with the component architecture layer and containing a
specific components and functions. reference to the network resource and an identifier for
50
The foregoing description has been directed to specific the at least one network component that was defined for
embodiments of this invention. It will be apparent, however, the network resource wherein, the encapsulated net-
that other variations and modifications may be made to the work entity component is manifested as visual object
described embodiments, with the attainment of some or all on a display screen of the computer and further
of their advantages. Therefore, it is the object of the 5S wherein, the encapsulated network entity component is
appended claims to cover all such variations and modifica- adapted for manipulation by a pointing device of the
tions as come within the true spirit and s.cope of the computer to display contents of the network resource
invention. on the screen by invoking the object-oriented software
What is claimed is: components integrated by the at least one identified
1. A method of efficiently accessing information from a 60 network component.
network resource located on a computer network for display 8. The apparatus of claim 7 further comprising:
on a computer coupled to the network, the network resource an operating system interfacing with the component archi-
having one or more associated data types, each data type tecture layer to control the operations of the computer;
being accessible by a corresponding object~oriented soft- and
ware component, the method comprising the steps of: 65 a network component layer coupled to the component
defining at least one network component that integrates architecture layer to form a cooperating component
the object~oriented software components needed to computing arrangement.

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 60 of 82

5,929,852
17 18
9. The apparatus of claim 8 wherein the cooperating means for storing the encapsulated entity component as a
component computing arrangement generates the encapsu~ visual object on the computer; and
lated network entity. .
means, responsive to manipulation of the visual object
10. The apparatus of claim 9 wherein the reference to the
with a pointing device, for displaying contents of the
network resource is a pointer that identifies the address of 5
the network resource on a computer network. network resource on a screen of the computer by
11. The apparatus of 'claim 10 wherein the pointer is a invoking the object-oriented software components inte-
uniform resource locator. grated by the at least one identified network compo-
12. The apparatus of claim 11 wherein the uniform nent.
resource locator has a first portion that identifies the network 10 16. The apparatus of claim 15 wherein the means for
resource and a second portion that specifies a means for displaying comprises means for invoking a first network
accessing that resource. component for displaying the contents of the referenced
13. The apparatus of claim 11 wherein the uniform network resource on the screen, the first network component
resource locator is a character string that descnbes a proto~
comprising a broWsing component.
col used to address the network resource, a server on which 15
17. The apparatus of claim 16 wherein the means for
the resource resides, a path to tbe resource and a resource
displaying further comprises means for invoking a second
filename.
14. The apparatus of claim lOwberein the pointer is a post network component for transfering the contents of the
office protocol account. referenced network resource to the first network component,
15. Apparatus for efficiently accessing information from a 20 the second network component comprising a data stream
network resource located on a computer network for display component.
on a computer coupled to the network, the network resource 18. The apparatus of claim 17 further c~mprising means
having one or more associated data types, each data type for creating objects for communication among the encapsu-
being accessible by a corresponding object-oriented soft~ lated entity and network components through application
ware component, the apparatus comprising: 25 programming interfaces.
means for defining at least one network component that 19. The apparatus of claim 18 wherein the means for
integrates the object-oriented software components creating comprises means for constructing the encapsulated
needed to access the one or more data types associated entity component from an Item objected defined by an Item
with the network resource; object class.
means for creating an encapsulated entity component 30 20. The apparatus of claim 19 wherein the means for
containing a reference to a location of the network creating comprises means for spawning a Stream object
resource on the computer network, the encapsulated from the Item object, the Stream object representing the data
entity component also identifying the at least one stream.
network component that was defined for the network
resource;
* * * * *

Copy provided by USPTO from the PIRS Image Database on 11/06/2009


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 61 of 82

_,c_ ,"

"
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 62 of 82

PTO-1683
(Rev. 7-96)
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 63 of 82

EXHIBIT J
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 64 of 82

67OO74

UNITED STATES
FSE
DEPARTMENT OF COMMERCE
QjEtj

United States Patent and Trademark Office

November 16 2007

THIS TO CERTIFY THAT ANNEXED


IS HERETO IS TRUE COPY FROM
THE RECORDS OF THIS OFFICE OF

U.S PATENT 5915131


ISSUE DATE June 22 1999

By Authority of the

Under Secretary of Commerce for Intellectual Property


and Director of the United States Patent and Trademark Office

SWAIN
Certifying Officer
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 65 of 82
liii 11111 11111 11111 11111 11111 11111 11111 11111 111111111 11111 liii

US005915131A
United States Patent Number
Patent 5915131
Knight Ct al Date of Patent Jun 22 1999

METHOD AND APPARATUS FOR 5553245 911996 Su et 395/284


HANDLING 110 REQUESTS UTILIZING 5572675 11/1996 Bergier 395/200.2
SEPARATE PROGRAMMING INTERFACES
OTHER PUBLICATIONS
TO ACCESS SEPARATE 110 SERVICES
Form et entitled An I/O System for Mach 3.0
Inventors Knight La Honda Mach Symposium
Holly Carl Proceedings of the Usenix 2022 Nov
Sutton Palo Alto Wayne 1991 Monterey CA US 2022 Nov 1991 pp 163176
Meretsky Los Altos Alan Mimms Steve Lemon and Kennan Rossi entitled An Object Ori
San of Calif Device
Jose all ented Driver Model Digest of Papers Compcon
95 Technologies for the information Superhighway 59
Assignee Apple Computer Inc Cupertino Mar 1995 San Francisco CA USA pp 360366
Calif Glenn Andert entitled Object Frameworks in the Taligent

OS Intellectual Leverage Digest of Papers of the Spring


Appl No 08/435677 Computer SOCI International Conference Compcon San
Francisco Feb 28Mar 1994 Feb 24 1994 Institute of
Filed May 1995
Electrical and Electronics Engineers pp 112121
lilt Cl.6 GO6F 9/40 GO6F 13/14
Hu Interconnecting electronic mail networks Gateways
and translation are proposed for backbone net
U.S Cl 395/892 395/682 395/828
strategies

works to interchange incompatible electronic documents on


395/702 707/104 345/333
multivendor networks Data Communications vol
Field of Search 128
395/828 702
17 No 10 Sep 1988
395/834 200.2 892 682 309 345/333
Knibbe IETFs Resource Reservation Protocol to facilitate
707/104
mixed voice data and video nets Network World 51
References Apr 24 1995
Cited

Primary ExaminerThomas Lee


U.S PAFENT DOCUMENTS
Assistant ExaminerRehana Perveen
4593352 6/1986 Caste et 364/200 Attorney Agent or FinnBlakely Sokoloff Taylor
4727537 2/1988 Nichols 370/85 Zafman
4908859 3/1990 Bennett et 380/10

4982325 1/1991 Tignor et 364/200


ABSTRACT
5129086 7/1992 Coyle Jr et 395/650

5148527 9/1992 Basso et


computer system handling multiple applications wherein
395/325
of I/O services are accessible
5197143 3/1993 Lary et 395/425 groups through separate appli
5430845 7/1995 Rimmer et 395/275
cation programming interfaces Each application has mul
5491813 2/1996 Bondy et 395/500 tiple application programming interfaces by which to access

5513365 4/1996 Cook et 395/800 different families of I/O services such as I/O devices
5535416 7/1996 Feeney et 395/834

5537466 7/1996 Taylor et 379/201 20 Sheets


Claims Drawing

MODE WORLD
KERNEL WORLD

208

Copy provided by IJSPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 66 of 82

TO OTHER
COMPONENTS

Cl

-I

-s
-L

FROM I/O

-J INTERFACE
140

CLOCK
GENERATOR

FIG.1
Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 67 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

USER MODE WORLD


KERNEL WORLD

BLOCK
STORAGE
FPI SERVER

FILE BLOCK SCSI


MANAGER MANAGER
FAMILY FAMILY FAMILY
208
HFS DISK
FILE DRIVER
SYSTEM

FIG.2

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 68 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

APPLICATION 302

FAMILY
PROGRAMMING
INTERFACE
301

KERNEL MESSAGE USER MODE WORLD

KERNEL MESSAGE KERNEL WORLD

FPI SERVER
304

PROCEDURE CALL

FAMILY
305

PROCEDURE CALL
PLUG-IN
PROGRAMMING
INTERFACE
PLUG-IN
306
307

FIG.3

Copy provided by IJSPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 69 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

WORLD
WORLD

FPI FPI
SERVER SERVER
408 410

401 403
FAMILY FAMILY
IMPLEMEN
TATION TATION
414 416

FIG.4

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 70 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

MODE WORLD
KERNEL WORLD

502

504

FIG

Copy provided by USPTO from the PIRS Imaqe Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 71 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

601 602

FIG.6

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 72 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

APPLICATION 710

711

APIs

USER MODE WORLD

KERNEL WORLD

701

ACCEPT
FPI SERVER
FUNCTION

703
STR EAMS
WORLD
PROTOCOL
SINGLE
PROTOCOL TASK
PROTOCOL

NETWORK
DEVICE
DRIVER

FIG.7

Copy provided by IJSPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 73 of 82

U.S Patent Jun 22 1999 Sheet of 5915131

APPLICATION 801

802

USER MODE WORLD


KERNEL WORLD

WRAPPER
TASK

FIG.8

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 74 of 82

5915131

METHOD AND APPARATUS FOR FIG block diagram of one embodiment in the com
HANDLING I/O REQUESTS UTILIZING puter system of the present invention
SEPARATE PROGRAMMING INTERFACES FIG is an overview of the I/O architecture of the present
TO ACCESS SEPARATE I/O SERVICES invention

FIELD OF THE INVENTION FIG illustrates flow diagram of I/O service request

handling according to the teachings of the present invention


The invention relates to the field of computer systems FIG illustrates an overview of the I/O architecture of
particularly the present invention relates to service
handling the invention
present having selected families accessing
requests generated by application programs other families
10

BACKGROUND OF THE INVENTION FIG illustrates extended programming family interface

of the present invention


Application programs running in often
computer systems
FIG illustrates plug-in modules of different families
access system resources such as input/output I/O devices
that share code and/or data
These system resources are often referred to as services

Certain sets of services e.g devices have similar charac


15 FIG illustrates single task activation model according

teristics For instance all


display devices or all ADB devices to the teachings of the present invention

have similar interface requirements FIG illustrates task-per-plug-in model used as an

To gain access to I/O activation model according to the teachings of the present
resources applications generate
service requests to which are sent through an invention
application
20
programming interface API The service requests are con
DETAILED DESCRIPTION OF THE
verted the API to common set of functions that
PRESENT
by are

forwarded
INVENTION
to the operating system to be serviced The
operating system then sees that service are method and service
requests apparatus handling requests is

to the For described


responded by appropriate resources e.g device In the following detailed description of the
25
instance the operating system may direct request to present invention numerous specific details are set forth in

device driver order to provide thorough understanding of the present

One problem in the art is that service are not invention However it will be apparent to one skilled in the
prior requests

sent directly to the I/O device or resource All service art that the present invention may be practiced without these

from specific details In other well-known structures


requests all applications are typically sent through the 30 instances
same API Because of this all of the are converted and devices are shown in block diagram form rather than in
requests
into common set of functions These common set of detail in order to avoid obscuring the present invention

functions do not have meaning for all the various types of Some portions of the detailed descriptions which follow
I/O devices For instance high level request to play are presented in terms of algorithms and symbolic repre
sound may be converted into write function to sound sentations of on data bits within
operations computer
device However the write function is not the best method memory These algorithmic descriptions and representations
of communicating sound data to the sound device Thus are the means used those skilled in the data
by processing
another conversion of sound format most
write data to data may arts to effectively convey the substance of their work
be required Also some functions do not have one-to-one to others skilled in the art An and
algorithm is here
correspondence with the function set of some I/O devices generally conceived to be self-consistent of steps
40 sequence
Thus it would be desirable to avoid this added leading to desired result The are those
complexity steps requiring
and to take advantage of the similar characteristics of classes physical of
manipulations physical quantities Usually
of when
I/O devices handling I/O requests while providing though not necessarily these quantities take the form of
services and an environment in which to run those services electrical or of
magnetic signals capable being stored
that tuned needs and
is to the specific device requirements transferred combined compared and otherwise manipu
lated It has proven convenient at times principally for
SUMMARY OF THE INVENTION reasons of common usage to refer to these signals as bits

method and apparatus for handling I/O requests is values elements symbols characters terms numbers or

described In the the the like


present invention I/O requests are

handled by the computer system having bus and It should be borne in mind however that of these and
memory so all

coupled to the bus that stores data and programming instruc similar terms are to be associated with the appropriate

tions The programming instructions include application physical quantities and are merely convenient labels applied

programs and an operating system processing unit is to these quantities Unless specifically stated otherwise as

coupled to the bus and runs the operating system and apparent from the following discussions it is appreciated

application programs by executing programming instruc that throughout the present invention discussions utilizing
tions Each have terms such
application programs multiple separate as processing or computing or calculating
programming interfaces available to access multiple sets of or determining or displaying or the like refer to the

I/O services the via action and of


provided through operating system processes computer system or similar

service electronic
requests computing device that manipulates and trans

60 forms data represented as physical electronic quantities


BRIEF DESCRIPTION OF THE DRAWINGS within the computer systems registers and memories into

The present invention will be understood more from other data similarly represented as physical quantities within
fully
the detailed description given below and from the accom the computer system memories or registers or other such

of various embodiments of the information transmission or display devices


panying drawings invention storage
which however should not be taken to limit the invention 65 The present invention also relates to apparatus for per

to the specific embodiments but are for and the herein This
explanation forming operations apparatus may be spe
understanding only cially constructed for the required purposes or it
may

Copy provided by IJSPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 75 of 82

5915131

comprise general purpose computer selectively activated selections to


processor 103 and cursor control 123 such

or reconfigured by computer program stored in the com as trackball stylus mouse or trackpad etc for control

puter The algorithms and displays presented herein are not ling cursor movement The system also includes sound

inherently related to any particular computer or other appa chip 125 coupled to I/O controller 130 for providing audio

ratus Various general purpose machines may be used with recording and play back Sound chip 125 may include

programs in accordance with the teachings herein or it


may sound circuit and its driver which are used to generate

prove convenient to construct more specialized apparatus to various audio signals from the computer system I/O con

perform the required method steps The required structure troller 130 may also provide access to floppy disk and

for variety of these machines will appear from the descrip driver 126 The processor 103 controls I/O controller 130

tion below In addition the present invention is not 10 with its peripherals by sending commands to I/O controller

described with reference to any particular programming 130 via local bus 100 interface unit 140 and I/O bus 101

language It will be appreciated that variety of program Batteries or other power supply 152 may also be included

ming languages may be used to implement the teachings of to provide power necessary to run the various peripherals

the invention as described herein and integrated circuits in the computer system Power sup
Overview of the Computer System of the Present Invention 15 ply 152 is typically DC power source that provides

Referring to FIG an overview of computer system of constant DC power to various units particularly processor

the present invention is shown in block diagram form The 103 Various units such as processor 103 display 121 etc
present invention may be implemented on general purpose also receive clocking signals to synchronize operations

microcomputer such as one of the members of the Apple within the computer systems These clocking signals may be
family of personal computers one of the members of the 20 provided by global clock generator or multiple clock

IBM personal computer family or one of several other generators each dedicated to portion of the computer
devices which are presently commercially avail system Such clock generator is shown as clock generator
computer
able Of course the invention also be imple 160 In one embodiment clock 160 comprise
present may generator

mented on multi-user system while encountering all of the phase-locked loop PLL that provides clocking signals to

costs speed and function advantages and disadvantages 25 processor 103


available with these machines I/O controller 140 includes control to coordinate the
logic

As illustrated in FIG the computer system of the thermal management Several additional devices are

present invention generally comprises local bus or other included within the computer system to operate with the

communication means 100 for communicating information control logic within I/O controller 140 timer 150 switch

103 coupled with local bus 100 for processing 30 153 and decoder 154 are included to function in connection
processor

information random access memory RAM or other with the control logic In one embodiment decoder 154 is

dynamic device 104 commonly referred to as included within bus interface unit 140 and timer 150 is
storage

main memory coupled with local bus 100 for storing included in I/O controller 130
information and instructions for processor 103 and read- Switch 153 is
p-channel power MOSFET which has its

only memory ROM or other non-volatile storage device 35 gate connected to the power signal 182 its source to the

106 coupled with local bus 100 for storing non-volatile power supply and its drain to processors DD pin

information and instructions for processor 103 In embodiment processor


one 103 is member of the

The computer system of the present invention also P0werPCTM family of processors such as those manufac
includes an input/output I/O bus or other communication tured by Motorola Corporation of Schaumberg Ill The

means 101 for communication information in the computer 40 memory in the computer system is initialized to store the

system data storage device 107 such as magnetic tape operating system as well as other programs such as file

and disk drive including its associated controller circuitry directory routines and application programs and data input

is coupled to I/O bus 101 for storing information and ted from I/O controller 130 In one embodiment the oper
instructions display device 121 such as cathode ray ating system is stored in ROM 106 while RAM 104 is

associated utilized as the internal for the computer system for


tube liquid crystal display etc including its 45 memory
controller circuitry is also coupled to I/O bus 101 for accessing data and application programs Processor 103

displaying information to the computer user as well as accesses memory in the computer system via an address bus
hard copy device 124 such as plotter or printer including within bus 100 Commands in connection with the operation

associated controller for providing visual of in the computer system are also sent from the
its circuitry memory
of the Hard device 50 the using bus 100 Bus 100 also
representation computer images copy processor to
memory
124 with 103 main 104 includes bi-directional data bus to communicate data in
is
coupled processor memory
non-volatile 106 and mass device 107 to the commands provided by processor 103 under
memory storage response

through I/O bus 101 and bus translator/interface unit 140 the control of the operating system running on it

modem 108 and an ethernet local area network 109 are also Of course certain implementations and uses of the

coupled to I/O bus 101 55 present invention may neither require nor include all of the

Bus interface unit 140 is coupled to local bus 100 and I/O above components For example in certain implementations
bus 101 and acts as gateway between 103 and keyboard or cursor control device for inputting informa
processor

the subsystem Bus interface unit 140 also provide tion to the system may not be required In other
I/O may
translation between being sent from units on one of implementations not be to provide
signals it
may required display

the buses to units the other bus to allow local bus 100 and oo device information the
on displaying Furthermore computer

I/O bus 101 to as single bus system may include additional processing units
co-operate

An I/O controller 130 is coupled to I/O bus 101 and The operating system running on processor 103 takes care

controls access to certain I/O peripherals in the computer of basic tasks such as starting the system handling
For instance I/O controller 130 is coupled to interrupts moving data to and from memory 104 and
system
controller device 127 that controls access to an alpha 65 peripheral devices via input/output interface unit 140 and

numeric input device 122 including alpha-numeric and other managing the memory space in memory 104 In order to take

keys etc for communicating information and command care of such operations the operating system provides

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 76 of 82

5915131

multiple execution environments at different levels e.g request may be communicated from application level to the

task level interrupt level etc. Tasks and execution envi file system family resulting in one or more requests to the

ronments are known in the art block storage family and finally one or more to the SCSI
Overview of the Present Invention family to complete service request Note that in one

one runs embodiment there is no hierarchical among


In embodiment the computer system kernel- relationship

in which families all families are peers of each other


based preemptive multitasking operation system
Families in the Present Invention
applications and I/O services such as drivers operate in

family provides distinct set of services to the


separate protection domains e.g the user and kernel system
For example one family may provide network services
domains respectively The user domain does not have
while another provides access to variety of block storage
direct access to data of the kernel domain while the kernel 10
mediums family is associated with set of devices that
domain can access data in the user domain
have similar characteristics such as all display devices or all
The computer system of the present invention uses one or
ADB devices
more separate families to provide I/O services to the system In one embodiment each family is implemented in soft
Each I/O family provides set of I/O services to the system ware that runs in the computer system with applications
For instance SCSI family and its SCSI interface modules 15 software includes
family comprises that family program
SIMs provide SCSI based services while file systems ming interface and its associated FPI library or libraries for
and its installable systems provide FPI
family file
manage
file its clients an server an activation model family
ment In one
services embodiment an I/O family is imple expert plug-in programming interface for its
plug-ins and
mented by multiple modules and software routines family services library for its
plug-ins
Each family defines family programming interface FPI 20 FIG illustrates the interaction between these compo
designed to meet the particular needs of that family An FPI nents Referring to FIG family programming interface

provides access to given familys plug-ins which are FPI 301 provides access to the familys services to one or

dynamically loaded pieces of software that each provide an more applications such as application 302 The FPI 301 also

instance of the service provided by family For example provides access to plug-ins from other families and to

within the file systems family File Manager plug-in 25 system software That is an FPI is designed to provide

implements file-system-specific services In one callers with services appropriate to particular family
embodiment plug-ins are superset of device drivers such whether those calls originate from in the user domain or the

that all drivers are plug-ins but not all


plug-ins are drivers operating system domain
Access to services is available only through an I/O For example when an application generates data for

familys programming interface In one embodiment hard 30 video device display FPI tailored to the needs of video

ware is not directly accessible to application software nor is devices is used to gain access to display services Likewise
it vulnerable to application error Applications have access when an application desires to input or sound data
output
to hardware services only through an I/O familys program the application gains access to sound family of services

ming interface Also the context within which an I/O service through an FPI Therefore the present invention provides
runs and the method by which it interacts with the system is 35 family programming interfaces tailored to the needs of

defined by the I/O family to which it belongs specific device families

FIG illustrates the relationship between an application Service requests from application 302 or other
several I/O families and their plug-ins Referring to FIG applications are made through an FPI library 303 In one
an application 201 requests services through one or more embodiment the FPI library 303 contains code that passes

family FPIs shown in FIG as File Manager API 202 40 requests for service to the family FPI server 304 In one
Block API 203 and SCSI Manager
Storage API 204 The embodiment the FPI library 303 maps FPI function calls

File Manager API 202 Block Storage API 203 and SCSI into messages e.g kernel messages and sends them to the

Manager API 204 are available to one or more applications FPI server 304 of the family for servicing In one
in the user domain embodiment family 305 may provide two versions of its

In one embodiment the service requests from application 45 FPI library 303 one that runs in the user domain and one that

201 and other applications are sent through File Manager runs in the operating system kernel domain
API 202 Block Storage API 203 and/or SCSI Manager API In one embodiment FPI server 304 runs in the kernel

204 etc and flow as messages to family FPI servers domain and responds to service requests from family clients

205207 which reside in the kernel domain In one e.g applications other families etc. FPI server 304

embodiment the messages are delivered using kernel- 50 responds to request according to the activation model not
supplied messaging service shown of the family 305 In one embodiment the activation

Any communication method may be used to communi model comprises code that provides the runtime environ

cate service requests to I/O families In one embodiment ment of the family and its plug-ins For instance FPI server

kernel messaging is used between the FPI libraries and the 304 may put in or call
request queue may plug-in

FPI server for given family between different families and 55 directly to service the request As shown the FPI server 304
between plug-ins of one family and another family The forwards request to the family 305 using procedure call

communication method used should be completely opaque Note that if FPI library 303 and the FPI server 304 use kernel

to client requesting family service messaging to communicate the FPI server 304 provides
Each of the FPI servers 205207 permit access to port
message
distinct set of services For example File Manager FPI 60 Each 305 includes an shown to
family expert not
server 205 handles service for the file manager family of maintain knowledge of the set of family devices In one
services Similarly the Block Storage FPI server 206 embodiment the expert comprises code within family 305
handles service requests for the block storage family of that maintains knowledge of the set of family plug-ins

services within the system At system startup and each time change
Note that FIG shows three families linked by kernel 65 occurs the expert is notified

messages Messages flow from application level through In one embodiment the expert may maintain the set of

family to another family and so on For instance service family services using central device registry in the system

Copy provided by USPTO from the PIFIS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 77 of 82

5915131

The expert scans the device registry for plug-ins that and block
belong system storage plug-ins are not drivers in that
to its family For example display family looks for drivers back
expert hardware
display device entries When family expert finds an entry Applications from other
plug-ins I/O families and other
for family plug-in instantiates the
it
plug-in making it system software can request the services provided by
available to clients of the family In one embodiment the familys plug-ins through the familys FPI Note also that
system notifies the on an ongoing basis about
family expert plug-ins are designed to operate in the environment set forth
new and deleted plug-ins in the device As model
registry result by their family activation

the set of plug-iris known to and available the


through family In one embodiment plug-in may comprises two code
remains current with changes in system configuration main code section that
sections runs in task in the kernel
Note that family experts do not add or alter information in 10 domain and an interrupt level code section that services
the device registry nor do they scan hardware In one hardware if the for
interrupts plug-in is instance device
embodiment the present invention includes another level of driver In one embodiment only work that cannot be done at

families i.e low-level families whose responsibility is to task level in the main code section should be done at
discover devices by scanning hardware and installing and interrupt level In one embodiment all have main
plug-ins
removing information for the device registry These low- 15 code but not have
section all
interrupt level code sections
level families are the same the
as families previously dis The main code section executes and to client
responds
cussed above i.e high level in other
family ways i.e they service requests made through the FPI For example sound
have experts services an FPI an activation model
library family plug-ins respond to sound family specific requests
and plug-ins The low-level families such
clients are usually as sound playback mode setting stereo mono sample
other families rather than In
applications one embodiment 20 size and rate sound sound
play requests play cancellation
families from
are insulated knowledge of physical connec etc The interrupt level code section executes and responds
tivity Experts and the device registry are discussed in more to interrupts from device In one
physical embodiment the
detail below
interrupt level code section performs only essential

plug-in programming interface PPI 306 provides functions deferring all other work to
higher execution

family-to-plug-in interface that defines the entry points 25 levels

plug-in supports so that it can be called and plug-in-to- Also because of the services
all associated with par
family interface that defines the routines plug-ins call when ticular family are tuned to the same needs and requirements
certain such as an I/O
events completion occur In addition the drivers or plug-ins for given family may be as simple
PPI 306 defines the path through which the family and its as possible
plug-in exchange data 30 Family Programming Interfaces
services
family library not shown is collection of In the present invention family provides either user-
routines that provide services to the plug-ins of family The mode or kernel-mode FPI or both to the
library support
services are specific to given family and they may be familys FPI FIG illustrates one embodiment of the I/O
layered on of services provided the kernel Within
top by architecture of the present invention Referring to FIG
family the methods by which data of
is
communicated 35 three instances families 401403 are shown operating in

memory is allocated interrupts are registered and timing the kernel environment three families
Although are shown
services are provided may be implemented in the family the present invention may have any number of families
services library Family services libraries may also maintain In the user mode two user-mode FPI libraries Xlib 404
state information needed by family to dispatch and and Zlib shown
manage 405 are that support the FPIs for families

requests 40 and respectively In the kernel two


environment
For example display family services kernel-mode FPI
library provides libraries Ylibk 406 and Zlibk 407 for
routines that deal with vertical blanking which concern and
is families respectively are shown
of display devices Likewise SCSI device drivers Both
manipu the user-mode and the kernel-mode FPI libraries
late command blocks so the SCSI family services the FPI
library present same to clients In other words single FPI
contains routines that allow block manipulation family is the only way family services can be accessed In one
services that needed
library provides commonly routines embodiment the user-mode and kernel mode libraries are
simplifies the development of that familys plug-ins not the same This may occur when certain operations have
Through the PPI 306 call is made to plug-in 307 In in one mode and not the other For example
meaning
one embodiment plug-in such as plug-in 307 that are in
comprises operations implemented the user-mode library
dynamically loaded code that runs in the kernels address 50 such as data
copying across address-space boundaries may
space to provide an instance of the service provided be in the kernel
by unnecessary library
family For example within the file
systems family In
plug-in response to service requests FPI libraries 404 and 405
implements file-system-specific services The plug-ins map FPI functions into for communication from
messages
understand how data is formatted in particular file system the user mode to the kernel mode In one embodiment the
such as HFS or DOS-FAT On the other hand it is not the 55 messages are kernel messages
responsibility of file
systems to obtain data The service
family plug-ins requests from other families are generated by
from device In order from
physical to obtain data plug-ins that make calls on libraries such as FPI libraries

physical device file


system family plug-in communicates 406 and 407 In one embodiment FPI libraries 406 and 407
to for instance block In
storage family one embodiment map FPI functions into kernel and communicate
messages
block storage plug-ins provide both those
media-specific drivers 60 messages to FPI servers such as FF1 server 409 and
such as tape driver CD-ROM driver or hard disk driver FPI server 410 Other embodiments
respectively may use
and volume plug-ins that on mechanisms
represent partitions given other than kernel messaging to communicate
disk Block
physical storage plug-ins in turn may make SCSI information

family API calls to access data across the SCSI bus on In the example the family 403 has both user-mode
physical disk Note that in the present invention 405 and
plug-ins are 65 library kernel-mode library 407 Therefore the
of device drivers For instance
superset plug-ins may services of the family may be accessed from both the user
include code that does hardware For instance mode and
not use file the kernel mode

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 78 of 82

5915131
10
In response to service request messages FPI server encountering problems related to simukaneous instantiation

408 FPI server 409 and FPI server 410 dispatch Referring to HG the first
plug-in 601 to be opened and

requests for services to their families In one embodiment initialized obtains access to the shared libraries At this

each of FPI servers 408410 receives kernel message point the first plug-in 601 does not share access When the

maps the message into FPI function called by the client second plug-in 602 is
opened and initialized new connec
and then calls the function in the family implementation tion to the shared libraries is created From that point the

414416 two plug-ins contend with each other for access to the shared

one there
In embodiment is one-to-one correspondence libraries

between the FPI functions called by clients and the function Sharing code or data may also be desirable in certain

called by FPI servers 408410 as resuk The calls from FPI 10 special cases For instance two or more separate device

serves 408410 are transferred via interfaces 411413 For drivers may share data as way to arbitrate access to

instance interface 411 represents the interface presented shared device An example of this is
single device that

to the FF1 server 408 by the family 414 It is


exactly the provides network capabilities and real time clock Each of

same as the FPI available to applications or other system these functions belong to distinct family but may originate

software The same is true of interface 412 and interface 15 in single physical device

413 Activation Models in the Present Invention

The family implementation 414 represents the family An activation model defines how the family is
imple
activation model that defines how requests communicated mented and the environment within which plug-ins of the

from server 408 are serviced by the family and plug-ins In family execute In one embodiment the activation model of

one embodiment family implementation 414 comprises 20 the family defines the tasking model family uses the

family code interfacing to plug-in code that completes the opportunities the family plug-ins have to execute and the

service requests from application 400 via server 408 context of those opportunities for instance are the plug-ins

Similarly the family implementation 415 and family called at task time during privileged mode interrupt

implementation 416 define their familys plug-in activation handling and so forth the knowledge about states and

models 25 processes that family and its plug-ins are expected to have
plug-in 417 plug-in 418 and plug-in 419 operate and the portion of the service requested by the client that is

within the activation model mandated by the family and performed by the family and the portion that is
performed by
provide code and data exports The required code and data the plug-ins

exports and the activation model for each family of drivers Each model provides distinctly different environment

is family specific and different 30 for the plug-ins to the family and different implementation

Extending Family Programming Interfaces options for the family software Examples of activation

plug-in may provide plug-in-specific interface that models include the single-task model the task-per-plug-in
extends its functionality beyond that provided by its family model and the task-per-request model Each is described in

This is useful in number of situations For example block further detail below Note that akhough three activation

storage plug-in for CD-ROM device may provide block 35 models are discussed the choice of activation model is

storage plug-in interface required of the CD-ROM device as design choice and different models may be used based on the

well as an interface that allows knowledgeable application needs and requirements of the family
audio volume and In one the activation model uses
software to control to play pause stop embodiment kernel

and so forth Such added capabilities require plug-in- messaging as the interface between the FPI libraries that

specific API 40 family clients link to and the FPI servers in order to provide
If device wishes to export extended functionality outside the asynchronous or synchronous behavior desired by the

the family framework separate message port is


provided family client Within the activation model asynchronous I/O

by the device and an interface library for that portion of the requests are provided with task context In all cases the

device driver FIG illustrates the extension of family implementation of the FF1 server depends on the family

programming interface 45 activation model

Referring to FIG plug-in module plug-in 501 The choice of activation model limits the plug-in imple
extends beyond the family boundary to interface to family mentation choices For example the activation model

implementation 502 as well plug-in that has an defines the interaction between drivers hardware interrupt

extended API offers features in addition to those available to level and the family environment in which the main driver

clients through its familys FF1 In order to provide extra 50 runs Therefore plug-ins conform to the activation model

services the plug-in provides additional software shown in employed by its


family
FIG as an interface library Dlib 503 the message port Single-Task Model
code FF1 server 504 and the code that implements the One of the activation models that may be employed by
extra features 505 family is referred to herein as the single-task activation

Sharing Code and Data Between Plug-ins 55 model In the single-task activation model the family runs
In one embodiment two or more plug-ins can share data as single monolithic task which is fed from request queue
or code or both regardless of whether the plug-ins belong to and from interrupts delivered by plug-ins Requests are

the same family or to different families Sharing code or data delivered from the FPI library to an accept function that

is desirable when single device is controlled by two or enqueues the request for processing by the familys process

more families Such device needs plug-in for each family 60 ing task and wakes the task if it is sleeping Queuing
These plug-ins can share libraries that contain information synchronization and communicatinn mechanism within the

about the device state and common code FIG illustrates family follow set of rules specified by the family
two plug-ins that belong to separate families and that share The interface between the FPI Server and family imple
code and data mentation using the single-task model is asynchronous

Plug-ins can share code and data through shared libraries 65 Regardless of whether the family client called function

Using shared libraries for plug-ins that share code or data synchronously or asynchronously the FPI server calls the

allows the plug-ins to be instantiated independently without family code asynchronously The FPI server maintains set

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 79 of 82

5915131
11 12
of kernel message IDs that correspond to messages to which responsible for making the data associated with request

the FPI server has not The of maintain available to the family which in turn makes it available to
yet replied concept

ing kernel message IDs corresponding to pending I/O server the plug-in that services the request In some instances this

includes copying or mapping buffers associ


request messages is well-known in the art responsibility

Consider which ated with the original message to move the data from
as an example family 700 uses the request
address the kernel level area
model shown in FIG user space to
activation to
single-task Referring
The code 804 consists in part of one or more tasks
FIG an application 710 is shown generating service family

one for each family plug-in The tasks act as wrapper for
request to the familys APIs 711 APIs 711 contain at least
the family plug-ins such that all tasking knowledge is
one library in which service requests are mapped to FP1
located in the family code wrapper is
piece of code that
functions The FPI functions are forwarded to the familys 10
insulates called code from the original calling code The
FPI server 701 FPI server 701 dispatches the FPI function
wrapper provides services to the called code that the called
to family implementation 703 which includes various pro code is not aware of
and network device driver that
tocols operate as single When plug-ins task receives service request by
task Each protocol layer provides different level of
whatever mechanisms the family implementation uses the
service 15 task calls its waits for the
plug-ins entry points plug-ins
The FPI server 701 is an accept function that executes in and then responds to the service
response request
response to the calling client via the FPI library not shown The the work to actually service the
plug-in performs
An accept function unlike message-receive-based kernel
request Each plug-in does not need to know about the

task is able to access data within the user and kernel bands tasking model used by the family or how to respond to event

directly The function messaging model requires that 20 and other family mechanisms it
only needs to know
accept queues
FPI server 701 be re-entrant because the caking client task how to perform its particular function

and information
may be preempted For
another client task service concurrent all state
by making drivers queuing
an I/O is contained within the
requests describing request plug-in

When an I/O request completes within the familys code and data and within any queued requests The FPI

environment notification is sent back to the 25 library forwards all requests regardless of the status of
completion
FPI server 701 which converts the completion notification outstanding I/O requests to the plug-in When the client

into the appropriate kernel ID reply The kernel makes synchronous service request the FPI library sends
message
ID reply is then forwarded to the application that synchronous kernel message This blocks the requesting
message
generated the service request client but the plug-ins task continues to run within its own
With single-task model the family implementation is 30 task context This permits clients to make requests of this

insulated from the kernel in that the implementation does it


plug-in even while another clients synchronous request is

not have kernel structures IDs or tasking knowledge On being processed


the other hand the relationship between FPI server 701 and In some cases of family driver e.g 805 can be either

family code 702 is asynchronous and has internal knowl concurrent or nonconcurrent Nevertheless clients of the

edge of data structures and communication mechanisms of 35 family may make synchronous and asynchronous requests

the family even though the nonconcurrent drivers can handle only one

The model time The device FPI 803 knows


single-task may be advantageously employed request at manager server

for families of devices that have one of several character that concurrent drivers cannot handle multiple requests

istics each I/O request requires little effort of the concurrently Therefore FPI server 803 provides mecha

processing unit This applies not only to keyboard or mouse 40 nism to queue client requests and makes no subsequent
devices but also to DMA devices to the extent that the requests to task until the task signals completion of an

unit need set the transfer no more earlier I/O


processing only up request
than one I/O request is handled at once such that for When client calls family function asynchronously the

instance the family does not allow interleaving of I/O FPI library sends an asynchronous kernel message to the FPI

requests This might apply to sound for example or to any 45 server and returns to the caller When client calls family

device for which exclusive reservation is


required i.e function synchronously the FPI library sends synchronous
where one client can device The kernel to the FPI server and does not return to the
only use at
time message

opposite of shared resource Little effort for the processor caller until the FPI server replies to the message thus

exists where the processor initiates an I/O request and then blocking the callers execution until the I/O request is

is not involved until the request completes or the family 50 complete

to be implemented provides its own scheduling mechanisms In either case the behaviors of the device manager FPI

independent of the underlying kernel scheduling This server 803 is exactly the same for all
incoming requests it

applies to the UnixTM stream programming model either queues the request or passes
it to the family task

Task-Per-Plug-In Model depending on whether the target plug-in is


busy When the

For each instantiated by the family the family 55 plug-in signals that the I/O operation is
complete the FPI
plug-in

creates task that provides the context within which the server 803 replies to the kernel message When the FPI

receives the it either returns to the


plug-in operates library reply synchronous
FIG illustrates the task-per-plug-in model Referring to client unblocking its execution or it notifies the asynchro
FIG an application 801 generates service requests for the nous client about the I/O completion
802 The between the
family which are sent to FPI Using an FPI library the oo task-per-plug-in model is intermediate

FPI 802 kernel according to the family single-task and task-per-request models in terms of the
generates message
activation model 804 and driver such as plug-in driver number of tasks it
typically uses The task-per-plug-in model

805 is
advantageously used where the processing of I/O requests

varies
In one embodiment the FPI server 803 is simple among the plug-ins
widely
task-based message-receive loop or an accept function FPI 65 Task-Per-Request Model
server 803 receives requests from calling clients and passes The task-per-request model shares the following charac

those to the family code 804 The FPI server 803 is teristics with the two activation models already discussed
requests

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 80 of 82

5915131
13 14
the FPI library to FPI server communication provides the sented the and that contain reference
by entry to the driver

synchronous or asynchronous calling behavior requested by in control of the device

family clients and the FPI library and FPI server use Multiple low-level are used where each such
experts
kernel messages to communicate I/O requests between expert is aware of the connection scheme of physical devices

themselves However in the FPI to the system and installs and removes that information in
task-per-request model the

servers the device of For example


interface to the family implementation is com tree portion the device registry

pletely low-level expert referred to herein as bus expert or


synchronous
In one motherboard has of
embodiment one or more internal family request expert specific knowledge piece of
server tasks and optionally an wait for hardware such as bus or motherboard Also SCSI bus
accept function
messages on the family message port An arriving message expert scans SCSI bus for devices and installs an entry
10
containing information describing an I/O request awakens into the device tree for each device that it finds The SCSI
one of the request server tasks which calls family function bus expert knows nothing about particular device for
service All
to the request state information necessary to which it installs an entry As part of the installation driver
handle the request is maintained in local variables The associated with the the SCSI bus expert The
gets entry by
request server task is blocked until the I/O request driver knows the of the device
capabilities and specifies that
completes at which time it replies to the kernel message 15 the device belongs to given family This information is
from the FPI library to indicate the result of the operation provided as part of the driver or plug-in structure
descriptive
After replying the request server task waits for more mes
required of all
plug-ins as part of their PPI implementation
sages from the FPI library Low-level experts and family experts use device registry
As consequence of the synchronous nature of the
notification mechanism to recognize changes in the
interface between the system
FPI server and the family
configuration and to take family-specific action in
20 response
implementation code calling through this interface remains
to those changes
running as blockable task This code is either the
calling An example of how family experts low-level experts and
request server task provided by the to service the I/O
family the device service
registry operate together to stay aware of
for asynchronous I/O requests or the task of the requester
dynamic changes in system configuration follows Suppose
of the I/O for certain optimized synchronous requests motherboard expert notices that new bus new network
The task-per-request model is advantageously 25
employed interface and new video device have appeared within the
for family where an I/O request can require continuous
system The motherboard expert adds bus node network
attention from the processor and multiple I/O can
requests and
node video node to the device tree portion of the
be in progress simultaneously family that supports dumb device registry The device registry service notifies all

high bandwidth devices is


good candidate for this model software that registered to receive notifications of these
In one embodiment manager family uses the file the task- 30 events
per-request model This programming model requires the
Once notified that changes have occurred in the device
family plug-in code to have tasking knowledge and to use
registry the networking and video family experts scan the
kernel facilities to threads of execution
synchronize multiple and
device registry notice the new entry belonging to their
for
contending family and system resources
family type Each of the experts adds an entry in the family
Unless there are multiple task switches within family subtree portion of the device registry
the tasking overhead is identical within all of the activation
TheSCSI bus expert notices an additional bus and probes
models The shortest task path from application to I/O is
for SCSI devices It adds node to the device registry for
completely synchronous because all code runs on the call
each SCSI device that it finds New SCSI devices in the
ers task thread
device registry result in perusal of the device the
registry by
least one level of asynchronous call between
Providing at
block storage family expert The block storage expert
40
an application and an I/O request results in better latency notices the new SCSI devices and loads the appropriate
results from the user perspective Within the file system
drivers and creates the appropriate device registry entries to
task switch at file
manager API level allows user-visible
make these volumes available the
such the
to file
manager The file

application as FinderTM to continue The file


manager receives notification of changes to the block stor
manager creates an I/O tasks to handle the I/O request and
family portion of the device and notifies the
age registry
that task is used via synchronous calls by the block storage Finder that volumes are available These volumes then
and SCSI families to complete their part in I/O transaction
appear on the users desktop
processing
Whereas many alterations and modifications of the
The Device Registry of the Present Invention
present invention will no doubt become apparent to person
The device registry of the invention an
present comprises of skill in the after read the
ordinary art having foregoing
operating service that stores infor
system naming system 50 be understood
description it is to that the particular embodi
mation In one embodiment the device registry is
respon ment shown and described by way of illustration are in no
sible for driver replacement and overloading capability so
way to be considered limiting Therefore reference to the
that drivers be well
may updated as as for supporting details of the various embodiments are not intended to limit
dynamic driver loading and unloading
the of the claims which themselves recite those
scope only
In one of
embodiment the device registry the present features regarded as essential to the invention
invention is tree-structured collection of each of
entries method
Thus and apparatus for handling I/O requests in
which can contain an arbitrary number of name-value pairs
computer system has been described
called Family examine the
properties experts device regis We claim
to locate devices or available to the
try plug-ins family
computer system comprising
Low-level experts discussed below describe platform hard
60 bus
ware by populating the device registry with device nodes for
least one the bus
insertion of devices that will be available for use by appli
at
memory coupled to for storing data

cations and programming instructions that include applications

one and an operating system and


In embodiment the device registry contains device

subtree pertinent to the I/O architecture of the present processing unit coupled to the bus and running the

invention The device tree describes the and 65 operating system and by executing
configuration applications pro
connectivity of the hardware in the system Each entry in the gramming instructions wherein an has
application
device tree has properties that describe the hardware repre first plurality of tailored distinct inter-
programming

Copy provided by USPTO from the PIRS Image Database on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 81 of 82

5915131
15 16
faces available to access plurality of separate sets of 10 The defined in claim wherein the
computer system
computer system services provided the from
through oper first
programming interface is responsive to request

ating system of the computer system via service applications and from other program structures

requests 11 The computer system defined in claim wherein the

The computer system defined in claim wherein each first programming interface comprises at least one library for

of the first of tailored functions into


plurality distinct programming inter converting messages
faces tailored 12 The computer defined in claim
are to type of I/O service provided by each system wherein the

set of I/O services first server receives message corresponding service

computer system comprising request from the first


programming the
interface maps
into function called the and then calls
bus message by client
10
the function
at least one memory coupled to the bus for storing data
13 The computer system defined in claim wherein the
and programming instructions that include applications
comprises kernel
message message
and an system wherein the
operating operating system 14 computer system comprising
comprises plurality of servers and each of the first
bus
plurality of programming interfaces transfer service 15
least one bus
at
memory coupled to the for storing data
requests to one of the plurality of servers wherein each and programming instructions that comprise applica
of the plurality of servers responds to service requests tions and an operating system
from clients of the separate sets of I/O services and
processing unit coupled to the bus and running the

processing unit coupled to the bus and running the operating and
system applications by executing pro
and 20
operating system by executing wherein
applications pro- gramming instructions the operation system
graming wherein an has first
instructions application provides input/output I/O services through tailored

plurality of tailored distinct programming interfaces distinct one of of each


plurality program structures
available to access plurality of separate sets of I/O tailored distinct structure
program comprising
services provided the via
through operating system first
programming interface for receiving service

service requests 25 requests for set of I/O services of first


type
The computer system defined in claim wherein first server coupled to receive service requests and to
service are transferred in
requests as messages messaging dispatch service requests to the I/O services
system activation model
an to define operating environment in
The computer system defined in claim wherein each which service request is to be serviced by the set of
of the plurality of servers supports message port 30 I/O services and
The computer system defined in claim wherein at
at least one instance of the set of I/O services
specific
least one of the plurality of servers is
responsive to service
that operate within the activation model wherein one
requests from applications and from at least one other set of
of the said at least one specific instances comprises
I/O services
service that accesses another
The program structure
computer system defined in claim wherein the
and further wherein said one of said at least one
operating system further of activation
comprises plurality
specific instances communicates to said another
models wherein each of the plurality of activation models is pro
associated with one of the of gram structure of second type using
plurality servers to provide message
runtime environment created using sent to the server of said
for the set of I/O services to which library

access said one of the of servers another structure


is provided by plurality program
The computer system defined in claim wherein at
40 15 The computer system defined in claim wherein two
least one instance of or services share code
service is called by one of the plurality more I/O or data
of servers for execution in an environment set forth by one
16 The computer system defined in claim 15 wherein said

of the plurality of activation models two or more I/O services are different types
computer system comprising 17 The computer system defined in claim wherein the

45 program structure further comprises mechanism to


bus storage
maintain identification of available services to which access
least one bus
at
memory coupled to the for storing data
is via the first server
and provided
programming instructions that comprise applica 18 computer implemented method of accessing I/O
tions and an operating system
services of first said method
type computer implemented
processing unit coupled to the bus and running the
comprising the steps of
50
operating system and by executing
applications pro generating service for first of I/O
request type services
gramming instructions wherein the operating system
tailored distinct
family server operating in an operating
provides computer system services through tailored

distinct of system environment and dedicated to providing access


one plurality of program structures each
to service requests for the first
type of I/O service
tailored distinct structure
program comprising
receiving and responding to the service request based
first interface for service
programming receiving
on an activation model specific to the first
type of I/O
for set of computer services of
requests system I/O
services and
first
type
processor running an instance of the first
type of I/O
first server coupled to receive service requests and to
services that is interfaces to the file server to satisfy the
dispatch service requests to the I/O
computer system service request
services 60
19 The method defined in claim 18 wherein the service
an activation model to define an operating environment
request is
generated by an application
in which service request is to be serviced by the set 20 The method defined in claim 18 wherein the service
of computer system I/O services and
request is
generated by an instance of an I/O service running
at least one specific instance of the set of computer in the environment
operating system
system I/O services that operate within the activation 65

model

Copy provided by USPTO from the PIRS Imaae Datbs on 11/15/2007


Case 1:10-cv-00166-UNA Document 1-5 Filed 03/02/10 Page 82 of 82

UNITED STATES PATENT AND TRADEMARK OFFICE


CERTIFICATE OF CORRECTION
PATENTNO 5915131
DATED June 22 1999

INVENTORS Knight et al

It is certified that error appears in the above-identified and that said Letters Patent
patent is
hereby
corrected as shown below

In column 15 at line 14 delete the and insert --

In column 15 at tine 54 delete and insert -- --

In column 16 at line 20 delete operation and


insert -- --
operating

In column 16 at line 58 delete interfaces and


insert -- interfaced --

Signed and Sealed this

Eighteenth Day of January 2000

Attest

TODD DICKINSON

Artesling Officer Commissioner of Parenis arid Trademark.c

Copy provided by USPTO from the PIRS Image Database on 11/15/2007

You might also like