throbber
as United States
`a2) Patent Application Publication co) Pub. No.: US 2002/0052727 Al
`Bondetal.
`(43) Pub. Date:
`May2, 2002
`
`US 20020052727A1L
`
`(54) KERNEL EMULATOR FOR NON-NATIVE
`PROGRAM MODULES
`
`(76)
`
`Inventors: Barry Bond, Maple Valley, WA (US);
`ATM Shafiqul Khalid, Bellevue, WA
`(US)
`eeares,
`421 W RIVERSIDE AVENUESUITE 500
`SPOKANE, WA 99201

`
`(21) Appl. No.:
`
`09/847,535
`
`(22)
`
`Filed:
`
`May1, 2001
`
`Related U.S. Application Data
`
`(63) Non-provisional of provisional
`60/244,410, filed on Oct. 30, 2000.
`
`application No.
`
`Publication Classification
`
`Tint, C07 oe eeceeseeeecceeseneeeteennnnnnseess GO06F 9/455
`(SD)
`(52) US. Ce ieeeceeceseeesesnnseeesnneeesunnceenneecenenecseaee 703/26
`
`ABSTRACT
`(57)
`Described herein is a technologyfacilitating the operation of
`non-native program modules within a native computing
`platform. This invention further generally relates to a tech-
`nology facilitating the interoperability of native and non-
`native program modules within a native computing plat-
`form. More specifically,
`this
`technology involves
`an
`emulation of the kernel of the non-native operating system.
`Instead of interacting with the native kernel of the native
`computing platform, the non-native program modules inter-
`act with a non-native kernel emulator. This abstractitself is
`not intended to limit the scope of this patent. The scope of
`the present invention is pointed out in the appending claims.
`
`
`112d ~
`1120 ~
`
`
`
`Application |
`
`Application
`
` 1426 —
`
`
`
`
`1i4|||I|i\
`
`\
`'
`
`{\\\I\||'{
`
`|
`
`1 |
`
`|
`\
`1
`{|
`|
`|
`
`1 :
`
`| i
`
`1
`
`User
`Mode
`
`Kernel
`Mode
`
`Application APIs
`
`
`
`132
`
`Kernel APIs
`134
`
`14
`
`13
`
`139
`138
`i
`Other Kernel
`Memory
`130
`Functions
`Management
`
`
`Device Drivers
`
`Hardware Interfaces
`
`144
`
`
`
`
`
`142 \
`
`Hardware
`
`150
`) dv
`l
`
`Hardware such as the processor, memory,I/O,ete.
`
`|
`
`i
`i
`|
`1
`1
`|
`t
`
`Google Exhibit 1017
`Google v. VirtaMove
`
`Google Exhibit 1017
`Google v. VirtaMove
`
`

`

`Patent Application Publication May 2,2002 Sheet 1 of 6
`
`Device Drivers
`
`142
`
`HardwareInterfaces
`144
`
`||\|| I
`
`{{|||
`
`User
`Mode
`
`Kernel
`
`Mode
`
`Hardware
`
`US 2002/0052727 Al
`
`
`
`
`||
`
`||
`
`Hardware suchas the processor, memory,I/O, etc.
`
`|
`
`|{
`
`

`

`Patent Application Publication May 2,2002 Sheet 2 of 6
`
`US 2002/0052727 Al
`
`10=2) ee ee eee
`112a
`210
`
`Native Apps
`
`Apps
`
`112b
`
`eee oe ee —_— ee
`
`rococo tfnenrer rr
`
`Non-Native Hardware Emulation
`
` Native Apps
`
`
`
`
`| ||||\{!\|
`
`||1||{|{|l\
`
`||
`
`|\
`|
`
`User
`Mode
`
`Kernel
`Mode
`
`Hardware
`
`

`

`Patent Application Publication May 2,2002 Sheet 3 of 6
`
`US 2002/0052727 Al
`
`ser
`
`,
`Mode
`
`Kernel
`Mode
`
`_ :
`
`Native
`
`tive APIs
`
`(—
`Non-Native
`AP!
`
`
`Non-Native Kernel
`Emulator
`
`Non-Native
`
`/312b >
`
`.
`
`.
`Non-Native
`
`
`
`Apps
`
`312¢ ~
`~$t4b
`
`
`NativeApps |
`mt
`Apps
`
`
`| - yl
`
`s 322
`320
`on
`ive
`
`
`
`
`
`
`
`Hardware
`Device
`Interfaces
`Drivers
`
`
`
`
`
`Hardware |
`
`Hardware
`
`350
`Un---- +o --e een no en eneene en n nn 2nn nnnn e nnnn enn e enn nn enn enne ne nnn 2ne nn nee ennnen nn nee eee!
`
`

`

`Patent Application Publication May 2,2002 Sheet 4 of 6
`
`US 2002/0052727 Al
`
`Non-Native APIs
`
`10
`
`Emulator of Non-Native Kernel APIs
`(i.e., Non-Native CPU Simulator)
`
`
`Translator
`
`
`
`
`Non-Native to
`Native CPU
`Instruction Set
`
`414
`
`
`
`
`
`
`
`Non-Native to
`
`
`Native Word-Size
`Converter
`
`
`
`
`
`
`
`
`
`Memory Constrainer
`
`Shared Memory
`Facilitator
`
`
`
`1/0 UntSB.
`
`Native
`Kernel
`
`Non-Native Kernel Emulator
`
`
`
`Memory
`
`

`

`Patent Application Publication May 2,2002 Sheet 5 of 6
`
`US 2002/0052727 Al
`
`510 —
`
`™~
`
`514
`
`
`Laad an application
`
`
`
`
`Proceed as normal
`512
`Is app non-
`native?
`for native app
`
`
`Non-
`
`Native
`
`
`Determine the target platform and
`select CPU simulator for that platform
`
`
`
`
`
`
`519 —| Ask CPU simulator to start executing instructions in
`host program
`
`
`soent)
`
`Fig. 5A
`
`

`-
`
`[
`Ascalls are received, translate non-native kernelcalls into
`native kernel calls
`
`550 -
`
`
`
`952 ~
`
`-
`

`
`.
`
`-
`
`Synchronizenative and targetTEBs and PEBs
`
`|
`
`Fig. 5B
`
`

`

`Patent Application Publication
`
`May 2, 2002 Sheet 6 of 6
`
`US 2002/0052727 Al
`
`Computing
`Device
`
`
`
`
`
`Application
`Programs
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`926 —
`Data Media
`Interfaces
`
`
`anon
`iF
`Video Adapter
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
` Ko
`
`
`S38pili
`
`seo
`Network
`Adapter
`
`System
`B
`wens
`
`|
`
`‘
`
`Operating
`System 926
`
`Application
`
`Programs 928
`
`'Other Program
`Medules 930
`
`Program
`Data
`
`932
`
`904 —..
`
`Processing
`Unit
`
`v7 940
`
`
`t
`
`System ~_-
`Application 99g
`Programs
`Program 930
`Modules
`Program 932
`
`
`
`c|
`
`
`
`
`gouoo||
`
`Printer
`
`Mouse \
`946
`
`Keyboard
`\— 936
`
`
`
`\
`
`Other Device(s)
`
`

`

`US 2002/0052727 Al
`
`May2, 2002
`
`KERNEL EMULATOR FOR NON-NATIVE
`PROGRAM MODULES
`
`CROSS-REFERENCE TO RELATED
`APPLICATION
`
`{0001] This application claims priority from U.S. Provi-
`sional Patent Application Serial No. 60/244,410,titled “Ker-
`nel Emulator for Non-Native Program Modules” filed on
`Oct. 30, 2000.
`
`TECHNICAL FIELD
`
`[0002] This invention generally relates to a technology
`facilitating the operation of non-native program modules
`within a native computing platform. This invention further
`generally relates to a technology facilitating the interoper-
`ability of native and non-native program modules within a
`native computing platform.
`
`BACKGROUND
`
`[0003] Applications designed to run on a specific comput-
`ing platform do not operate on a different computing plat-
`form. Generally, software is inextricably linked to the com-
`puting platform on whichit is designed to operate. Software
`written and compiled to operate within minicomputer run-
`ning a specific implementation of the Unix operating system
`will not function within a hand-held computer using a
`proprietary operating system.
`
`[0004] A computing platform typically includes an oper-
`ating system (OS) and computing hardware architecture.
`Examples of OSs include these Microsoft® operating sys-
`tems: MS-DOS®, Windows® 2000, Windows NT® 4.0,
`Windows® ME, Windows® 98,
`and Windows® 95.
`Examples of computing hardware architecture include those
`associated with these Intel® microprocessors: 80286, Pen-
`tium®, Pentium® II, Pentium® III, and Itanium™.
`
`[0005] Examples of computing platforms includes 16-bit
`platforms (such as Microsoft® MS-DOS® and Intel®
`80286), 32-bit platforms (such as Microsoft® Windows®
`NT®andIntel® Pentium® Il), and 64-bit platforms (such as
`Intel® Itanium™and an appropriate 64-bit OS). A comput-
`ing platform may also be called a platform, computing
`environment, or environment.
`
`[0006] Specific versions of applications are designed to
`operate undera specific platform. These applications may be
`called “native” when they execute under their specific
`platform. For example, Microsoft® Office 2000 is an appli-
`cation designed to operate on 32-bit platform.
`In other
`words, Microsoft® Office s 2000 is a native application
`relative to its 32-bit platform. However, these 32-bit appli-
`cations maybe called “non-native” when they execute under
`a different platform, such as a 64-bit platform.
`
`[0007] An example of a program-module target platform
`(or simply “target platform”) is the platform an executable
`program (e.g., program module, application, program) was
`targeted to run. For a program module,its target platform is
`also its native platform. For example,
`if one builds a
`Microsoft® Office® application to run under Windows®
`2000 32-bit X86 OS environment then for that image target
`platform would be 32-bit x86.
`
`term “program module” includes other executable software
`that may not be labeled an application.
`
`[0009] Typical Computer Architecture
`
`[0010] Typical computer architecture is multi-layered.
`From the bottom up,
`it includes the hardware layer, the
`operating system (OS) layer, and the application layer.
`Alternatively, these layers may be described as the hardware
`layer, the kernel mode layer, and the user mode layer.
`
`{0011] FIG. 1 illustrates the layers of typical computer
`architecture 100. ‘The top of the architecture is the user mode
`110. It includes applications, such as applications 112a-e.
`These applications communicate with a set of APIs 120.
`Typically, this API set is considered part of the OS, and thus,
`part of the computing platform.
`
`[0012] The next layer of the architecture is the kernel
`mode 130. This may be generally called the “kernel” of the
`OS. Since it is part of the OS,it is part of the computing
`platform.
`
`{0013] A kernel of an OSis the privileged part of the
`OS—the mosttrusted part of the OS. It is an inner layer of
`code. It typically operates I/O 132, security 134, display
`control (i.e., access to the screen) 136, memory management
`138, and other privileged functions 139. The kernel has sole
`access to the hardware in the hardware layer 150 via device
`drivers 142 and other hardware interfaces 144.
`
`[0014] Kernel APIs 140 are those APIs within the kernel
`that arbitrate access to the kernel functions. The applications
`typically do not call the kernel directly. Instead, the appli-
`cations call the APIs 120 and the APIs, in turn, may call the
`kernel (in particular the kernel APIs 140).
`
`[0015] Although FIG. 1 does not show the components
`132-144 of the kernel 130 with connections between them,
`these components are connected as is necessary. The cou-
`pling lines are omitted from the drawing for the sake of
`simplicity and clarity.
`
`[0016] Below the kernel mode 139,there is the hardware
`layer 150. This layer includes all of the hardware of the
`actual computer. This includes the processor(s), memory,
`disk I/O, other I/O, etc. The platform also includes the
`hardware layer.
`
`(0017] Therefore, a computing platform includes the hard-
`ware layer, the kernel layer, and typically the user-mode
`APIs 120.
`
`[0018]
`
`Interoperability and Compatibility
`
`[0019] Application compatibility has been big concern
`since computing platforms started evolving. People want to
`run desired applications in their chosen platform in the ideal
`world. However, in the real world,it’s very difficult to run
`an application in a different host platform that it wasn’t
`written for. For example, 32-bit x86 application cannot run
`on 64-bit Merced (IA64) environment. The problem
`becomes worse when people buy a more powerful machine
`with a different platform than they used to for a long time.
`Immediatelyall the applicationsin the old platform becomes
`useless unless they find some way to use that in the new
`environment.
`
`[0008] An application program is the primary example of
`a “program module”asthe term is used herein. However,the
`
`[0020] Each platform hasits corresponding bady of native
`applications that are designed to run under it. When a ncw
`
`

`

`US 2002/0052727 Al
`
`May2, 2002
`
`generation of platform is released, software developers
`generally upgrade their products to run under the new
`generation platform. Software developers do this for many
`reasons, including marketing, technology, and economics.
`
`[0021] For similar reasons, OS developers wish to make
`their products backwards compatible.
`In this way, older
`generations of applications may run on the latest generation
`of the OS (and thus the latest generation of platform). In
`other words, if non-native applications can run under a
`native platform (including the new OS), this encourages
`users to purchase the new OS because they are not forced to
`discard their current applications and purchase new ver-
`sions. This also gives software developers time to develop
`upgrades to their applications.
`
`[0022] Herein, an example of compatibility is a non-native
`program module functioning appropriately and peacefully
`co-existing with native program modules within a native
`computing environment(e.g., an OS).
`
`[0023] As used herein, an example of interoperability is
`the ability of both native and non-native program modules to
`share resources (such as access data within each other’s
`memory space or a shared memory space) and/or work
`together and cooperatively.
`
`[0024] For the sake of clarity and simplicity, an example
`is used herein to illustrate the problem of incompatibility of
`non-native applications and non-interoperability between
`native and non-native applications. The non-native program
`modules are called 32-bit applications because they are
`designed to operate on a 32-bit platform. The native appli-
`cations are called 64-bit applications because they are
`designed to operate on the native platform, which is 64-bit.
`This is provided as one example and not for limitation.
`Those of ordinary skill in the art understand and appreciate
`that there exists other combinations of native and non-native
`
`applications and native platforms.
`
`{0025] Running Non-Nalive Applications on a Native
`Platform
`
`[0026] Consider this: Running non-native applications on
`a native platform. More specifically, consider this example:
`Running 32-bit applications
`in a 64-bit environment.
`Assume, for this example, that the 64-bit platform is an
`upgrade to an existing popular 32-bit platform (on whichthe
`32-bit applications are designed to run).
`
`[0027] One advantage of a 64-bit platform over a 32-bit
`plattorm is that
`the much larger memory space can be
`addressed. 32-bit processors in a 32-bit platform can address
`about 2GB of memory, but a 64-bit processors in a 64-bit
`platform can address terabytes of memory.
`
`[0028] One of the problems with going from 32-bit plat-
`form to 64-bit platform is that the application programming
`interfaces (APIs) grow from 32-bit to 64-bit. Therefore, the
`new APIs deal with larger memory pointers, larger memory
`addressable space, etc. Thus, the 64-bit APIs are incompat-
`ible with calls from 32-bit applications. Thus, software
`developers need to recompile their applications to 64-bit and
`release a new version for the 64-bit platform. For manylarge
`end applications (particularly on servers), porting to 64-bit
`is the most appropriate alternative to take advantage of the
`new capabilities of a 64-bit OS. But for most applications,
`it is not best to port the application for numerous reasons,
`
`suchasthe sales projections for the 64-bit platform may not
`enough to justify the expense of porting, the application is
`very difficult to port, etc.
`
`[0029] However, it is desirable to have the 32-bit appli-
`cations operate and function correctly on a 64-bit platform.
`In other words, it is desirable to have a non-native (e.g.,
`32-bit) application min properly in a native (e.g., 64-bit)
`environment.
`
`[0030] The capability of running 32-bit applications on the
`64-bit platform is highly desirable for easing the transition
`from the popular 32-bit platform to the new 64-bit platform.
`Not only may this ease the transition,
`it may reduce the
`burden on software developers to immediately port their
`software to the 64-bit platform.It also gives the new 64-bit
`platform an existing library of software (e.g., the old 32-bit
`applications). Furthermore, it is desirable to have 32-bit and
`64-bit applications interoperate.
`
`[0031] Virtual Machine (VM)
`
`In similar situations in the past, the solution has
`[0032]
`nearly always been to emulate the hardware on which the
`non-native applications would run. In other words,
`the
`native platform emulates the non-native hardware environ-
`ment (such as a 32-bit processor) in which the non-native
`applications (such as 32-bit applications) run. Furthermore,
`the non-native OS (such as a 32-bit OS) run in the non-
`native hardware environmentbecause the non-native appli-
`cations need the non-native OS. This non-native hardware
`
`emulation is often called a “virtual machine” (VM) and the
`combination of the VM andthe non-native OS is sometimes
`called the “box” or non-native OS “box”(e.g., a MS-DOS®
`box).
`
`FIG.2 illustrates the same multi-layered architec-
`[0033]
`ture of FIG. 1 except it includes a virtual machine 200. The
`VM emulates the non-native hardware layer 250 in software.
`To run non-native applications (such as 212a@ and 212b)
`within a VM, a non-native OS runs on top of the emulated
`non-native hardware layer 250. This non-native OS includes
`a user mode 210 and a kernel mode 230. Non-native APIs
`220 are in the user mode 210 and a non-native kernel is in
`the kernel mode 230. As a result, these three layers (user
`mode, kernel mode, and hardware) are executed solely in
`software in a segregated “box’200. There are other possible
`arrangements for a VM. For example, someorall of the VM
`components may be implemented within the native kernel
`130.
`
`the actual non-native kernel 230 is
`[0034] Notice that
`being executed within the VM 200. The non-native kernel
`230 is not being emulated. Rather, it is running on top of an
`emulated hardware layer 250 of the VM 200.
`
`[0035] Those of ordinary skill in the art understand the
`VM model. Although this model
`is very common,it is
`consume a large amount of resources and processing power
`(ie., it is expensive). This is because it emulates a non-
`native hardware and exccutes the complete non-native OS
`on top of that emulated hardware. In addition, non-native
`applications operating within a VM box cannot interoperate
`(“interop”) with native applications running within the
`native platform. Moreover, they cannot interoperate with
`other non-native applications running within other VMs.
`Thus, VM cmulation is expensive and incompatible.
`
`

`

`US 2002/0052727 Al
`
`May2, 2002
`
`SUMMARY
`
`[0036] Described herein is a technology facilitating the
`operation of non-native program modules within a native
`computing platform. This invention further generally relates
`to a technology facilitating the interoperability of native and
`non-native program modules within a native computing
`platform.
`
`Specifically, this technologyinvolves an emulation
`[0037]
`of the kernel of the non-native operating system. Instead of
`interacting with the native kernel of the native computing
`platform, the non-native program modules interact with a
`non-native kernel emulator. This emulator handles the nec-
`
`essary conversions and translations. With this non-native
`kernel emulation, native and non-native program modules
`are interoperable. Except for the kernel emulator, noneofthe
`program module (native or non-native) and noneofthe other
`portions of the native computing platform are aware of the
`emulation. The computing environment and other program
`modules appear to be non-native to the non-native program
`modules. Likewise, the non-native program modules appear
`to be native to the computing environment and the native
`program modules.
`
`[0038] This summary itself is not intended to limit the
`scope of this patent. For a better understandingof the present
`invention, please see the following detailed description and
`appending claims, taken in conjunction with the accompa-
`nying drawings. The scope of the present
`invention is
`pointed out in the appending claims.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0039] The same numbers are used throughout the draw-
`ings to reference like elements and features.
`
`[0040] FIG. 1 is a schematic block diagram showing a
`computing architecture.
`
`[0041] FIG. 2 is a schematic block diagram showing a
`computing architecture with an example ofa virtual machine
`(VM)implementation.
`
`[0042] FIG. 3 is a schematic block diagram showing a
`computing architecture showing an embodiment in accor-
`dance with the invention claimed herein.
`
`[0043] FIG. 4 is a schematic block diagram of a kernel
`emulator in accordance with the invention claimed herein.
`
`[0044] FIG. 5 is a flow diagram showing a methodologi-
`cal implementation of the invention claimed herein.
`
`[0045] FIG. 6 is an example of a computing operating
`environment capable of implementing an implementation
`(wholly or partially) of the invention claimed herein.
`
`DETAILED DESCRIPTION
`
`forth specific
`following description sets
`[0046] The
`embodiments of a kernel cmulator for non-native program
`modules here that
`incorporate elements recited in the
`appended claims. These embodiments are described with
`specificity in order to mect statutory written description,
`enablement, and best-mode requirements. However,
`the
`description itself is not intended to limit the scope of this
`patent.
`
`[0047] Described herein are one or more exemplary imple-
`mentations of a method and system of fusing portions of a
`print medium. The inventors intend these exemplary imple-
`mentations to be examples. The inventors do not
`intend
`these exemplary implementations to limit the scope of the
`claimed present invention. Rather, the inventors have con-
`templated that the claimed present invention might also be
`embodied and implemented in other ways, in conjunction
`with other present or future technologies.
`
`[0048] Anexample of an embodiment ofa kernel emulator
`for non-native program modules here may be referred to as
`an “exemplary kernel emulator.”
`
`[0049]
`
`Incorporation by Reference
`
`[0050] This provisional application is incorporated by
`reference herein: U.S. Provisional Patent Application Ser.
`No. 60/244,410,
`titled “Kernel Emulator for Non-Native
`Program Modules”filed on Oct. 30, 2000.
`Introduction
`
`[0051]
`
`[0052] The one or more exemplary implementations,
`described herein, of the exemplary kernel emulator may be
`implemented (whole or in part) by a kernel emulator 400
`and/or by a computing environmentlike that shown in FIG.
`6.
`
`[0053] The exemplary kernel emulator, described herein,
`provides a mechanism with which non-native applications
`can be mn on a native platform transparently. For instance,
`32-bit applications can be run on 64-bit platform by using
`the exemplary kernel emulator.
`
`‘This mechanism canalso be used to plug-in a CPU
`[0054]
`simulator to broaden the scope. For example, the exemplary
`kernel emulator enables an application to run on a computer
`with a Merced processor where the application was written
`for x86 instruction set.
`
`[0055] Using an exemplary implementation of the kernel
`emulator, the kernel of nearly any platform may be emulated
`and different CPU instructions can be simulated by plug-in
`CPUsimulators.
`
`references to “kernel emulation” mean
`[0056] Herein,
`emulation of a non-native kernel within the context of a
`
`to “kernel
`nalive platform. Similarly, references, herein,
`emulator’ mean a non-native kernel emulator within the
`
`context of a native platform.
`
`[0057] Overview of Kernel Emulation
`
`[0058] As described in the above Background section,
`traditional solution for enabling non-native programs to
`operate on top of a native platform is virtual machine (VM).
`However, kernel emulation is less expensive than VMs. Less
`expensive in terms resources dedicated to emulation (e.g.,
`resources include processor cycles, memory, overhead,etc.).
`Moreover, unlike VM emulation,all applications (including
`both native and non-native) may interoperate (“interop”).
`
`In this cxemplary kerncl cmulation, described
`[0059]
`the non-native applications believe that they are
`herein,
`running on an operating system (OS) with their non-native
`kernel. Instead, their non-native kernel is being emulated.
`The non-native kernel emulator intercepts kernel calls made
`by the non-native applications and translates them into
`native kernclcalls.
`
`

`

`US 2002/0052727 Al
`
`May2, 2002
`
`[0060] The exemplary kernel emulator is an emulator of
`the kernel of a non-native OS. It allows non-native appli-
`cations to run within a native environment by emulating the
`non-native kernel of a non-native OS. The hardware is not
`emulated. Nor are the APIs. Instead,
`the kernel of the
`non-native OS is emulated. The emulated kernel translates
`non-native calls (from the applications and their APIs) into
`calls that can be interpreted and handled by the native OS.
`Moreover, the emulated kernel interprets and handles infor-
`mation flowing to the non-native applications from the
`native OS.
`
`[0061] To accomplish this, an exemplary kernel emulator
`may perform one or more of the following functions:
`
`translate hardware instruction set from non-
`[0062]
`native to native
`
`intercept kernel calls to convert from non-
`[0063]
`native memory addressing to native memory
`addressing
`
`constrain memory access of non-native appli-
`[0064]
`cations to only the memory space addressable by
`such applications(e.g., the lower 2GB of RAM). By
`doing so, the native memory manager need not be
`bothered with such constraints
`
`[0065] manage memory shared by both non-native
`and native applications
`
`accommodate a suitable CPU simulator that
`[0066]
`can be plugged in to simulate a variety of CPU
`architectures.
`
`[0067] Computer Architecture Implementing Exemplary
`Kernel Emulator
`
`[0068] FIG. 3 illustrates a computer architecture 300
`within which the exemplary kernel emulator may be imple-
`mented. The architecture includes a native platform, which
`includes hardware 350, kernel mode 330, and set of native
`APIs 320 of user mode 310. The top of the architecture 300
`is the user mode 310. It includes applications. More spe-
`cifically, it includesnative applications(such as applications
`312a-c) and non-native applications (such as applications
`314a and 3145).
`
`[0069] The native applications communicate with a set of
`native APIs 320. Typically,
`this native API set 320 is
`considered part of the native OS, and thus, part of the native
`computing platform. The non-native applications commu-
`nicate with a set of non-native APIs 322. Typically, this
`non-native API set 320 is considered part of a non-native
`OS, and thus, the set is not part of the native computing
`platform.
`
`[0070] Without the exemplary kerne] emulation, the non-
`native applications (such as 314a and 3146) would not
`function. Why? They cannot call
`the native APIs 320
`because they are unaware of them and because the native
`APIs are written to understand the instruction set and
`
`memory organization of the native platform, which arc
`different from the instruction set and memory organization
`of the non-native platform expected by the non-native
`applications.
`In addition,
`if the non-native applications
`called their own non-native APIs 322, the non-native APIs
`would fail for the same reasons given above. Furthermore,
`the non-native APIs attempts to call the kernel APIs would
`
`call native kernel APIs 340. Such calls would not be
`understood by the native kernel APIs 340.
`
`[0071] The non-native APIs 322 include “stub” code that
`directs their calls to a non-native kernel, which does not
`exist in the native platform. However,this “stub” codeis the
`bridge between the “user mode” and the “kernel mode.” In
`this exemplary kernel emulator, this stub code is modified so
`that it calls a non-native kernel emulator 400.
`
`[0072] The next layer of the architecture 300 is the native
`kernel mode 330. This may be generally called the native
`“kernel” of the native OS. Since it is part of the native OS,
`it is part of the native computing platform.
`
`[0073] This native kernel 330 includes the native kernel
`APIs 340 and various kernel functions 333, such as I/O,
`security, display control (i.e., access to the screen), memory
`management, and other privileged functions. The native
`kernel 330 has sole access to the hardware in the hardware
`
`layer 350 via device drivers 342 and other hardware inter-
`faces 344. Native kernels APIs 340 are those APIs within the
`kernel that arbitrate access to the kernel functions.
`
`[0074] Although FIG. 3 does not show the components
`333-344 of the kernel 330 with connections between them,
`these components are connected as is necessary. The cou-
`pling lines are omitted from the drawing for the sake of
`simplicity and clarity.
`
`[0075] Below the kernel mode 339,there is the hardware
`layer 350. This layer includes all of the hardware of the
`actual computer. This includes the processor(s), memory,
`disk I/O,other I/O, etc. The native platform also includes the
`hardware layer.
`
`[0076] Therefore, native computing platform includes the
`hardware layer 350, the kernel layer 330, and typically the
`user-mode native APIs 320. The native platform does not
`include the non-native APIs 322 or the non-native kernel
`emulator 400.
`
`[0077] Exemplary Kernel Emulator
`
`[0078] As shown in FIG.3, the non-native kernel emu-
`lator 400 is part of both the user layer of the user mode 310
`and the kernel layer of the native kernel mode 330. Conse-
`quently, portions of the non-native kernel emulator 400 may
`operate primarily in the user layer and others may operate
`primarily in the kernel layer. Alternatively, the non-native
`kernel emulator 400 maybepartof just the kernel layer. The
`non-native kernel emulator 400 communicates with non-
`native APIs 332, the native kernel, and directly with the
`memoryof the hardware layer 350.
`
`[0079] Although FIG. 3 shows the non-native kernel
`emulator 400 within the kernel mode layer,
`it may be
`implemented in the user mode layer in alternative embodi-
`ments. It may also be implementedpartially in the user mode
`and partially in the kernel mode.
`
`FIG. 4 illustrates the non-native kernel emulator
`[0080]
`400, which is an implementation of the exemplary kernel
`emulator. It includes an emulator 410 of non-native kernel
`APIs, which may also be called the non-native CPU simu-
`lator (or simply the “CPU simulator). To avoid confusion
`with nomenclature, this will be called CPU simulator 410.
`
`[0081] Although this name seems to imply hardware emu-
`lation,
`the hardware is not being emulated by the CPU
`
`

`

`US 2002/0052727 Al
`
`May2, 2002
`
`simulator 410 or by any other portion of the non-native
`kernel emulator 400. As discussed in the Background sec-
`tion, the OS is inextricably linked to the hardware (included
`the CPU). Therefore, the native and non-native hardware is
`a major consideration in non-native kernel emulation. Those
`of ordinary skill in the art see and understand that this CPU
`simulation is fundamentally different from an emulation of
`hardware (like in the VM model).
`[0082] The exemplary kernel emulator may have CPU
`simulators for different platforms. The exemplary kernel
`emulator finds a CPU simulator for the target CPU archi-
`tecture (of the non-native application) and usesforits kernel
`emulation.
`
`[0083] The CPU simulator 410 includes a translator 412
`for translating non-native to native CPU instructions sets, a
`converter 414 for converting non-native to native word
`sizes, and a memory constrainer 416 to limit the memory
`accessible to non-native applications to that which such
`applications are capable of addressing.
`the translator
`[0084]
`In the exemplary implementation,
`412 and converter 414 operate primarily within the user
`mode. The advantage to running them in user modeis that
`bugs in that code will crash only the user-mode process.If
`code running in kernel mode crashes, it will likely crash the
`entire machine.
`
`[0085] Calls to the Kernel by Non-Native Applications
`[0086] The CPU simulator 410 receives the kernel calls
`from non-native applications. More specifically, the CPU
`simulator 410 receives the kernel calls from non-native
`APIs.
`
`[0087] The kernel emulator 400 does not perform the
`functions of a kernel. Rather,
`it translates the non-native
`calls from their non-native format to a native format. It then
`
`passes the translated calls onto the native kernel for the
`native kernel to process as if the call was from a native
`application. However, to do this may involve more than a
`simply translation of a language. It may involve a conver-
`sion of paradigms between the non-native and native plat-
`forms.
`
`[0088] For or example, within a 32-bit platform (such as
`Microsoft® Windows® 98 and an x86 instruction-set pro-
`cessor), when an application wants to make a kernel API
`call, it pushes its arguments onto a stack (within memory).
`The arguments sit in memory.If the application wantsto call
`an API and passit “3” and a pointerto a string of text, then
`the application writes “3” to the memory (onto the stack) and
`then writes the address of the string to memory, as well. The
`API can read these values from memory to pick up the
`arguments when the API is executed.
`[0089] Continuing the example, on a 64-bit platform (such
`as a 64-bit OS and an Intel® Itanitum™processor), argument
`values are passed within the CPUitself. More specifically,
`the argument values are passed within the registers of the
`CPU. Instead of an application storing the argument values
`in a stack (ie., memory), it stores them in CPUregisters.
`[0090]
`Thetranslator 412 performsinstruction emulation.
`It handles the cmulation of the non-native proccssor’s
`instruction set.
`
`the translator 412 and converter 414
`[0092] Together,
`manage the argument-passing-via-stack convention of the
`32-bit platform to the argument-passing-via-registers con-
`vention of the 64-bit platform. This is an example of a
`paradigm change in how argument values are passed. The
`CPU simulator 410 accounts for this change with its trans-
`lation of the CPU instruction set by translator 412.
`
`In another example, in a 32-bit platform, the word
`[0093]
`size is 32bits long. Thus, addresses and data are typically
`written in 32-bit sized words in memory. In a 64-bit plat-
`form, the word size is 64bits long. Thus, addres

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket