US8397242B1 - System and method for managing operations within virtual machines - Google Patents
System and method for managing operations within virtual machines Download PDFInfo
- Publication number
- US8397242B1 US8397242B1 US12/495,556 US49555609A US8397242B1 US 8397242 B1 US8397242 B1 US 8397242B1 US 49555609 A US49555609 A US 49555609A US 8397242 B1 US8397242 B1 US 8397242B1
- Authority
- US
- United States
- Prior art keywords
- address
- virtual machine
- hypervisor
- function
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000006870 function Effects 0.000 claims abstract description 141
- 230000004044 response Effects 0.000 claims abstract description 26
- 230000001960 triggered effect Effects 0.000 claims abstract description 10
- 238000012423 maintenance Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 6
- 238000010586 diagram Methods 0.000 description 12
- 230000002155 anti-virotic effect Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000009118 appropriate response Effects 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Definitions
- This invention relates to data processing systems, and in particular, managing virtual data processing systems.
- Virtual machines are software implementations of a physical computer that execute computer instructions in the manner of physical computer hardware. Whether a single computer or a group of networked computers, many (if not most) of today's computer systems are able to act as a host computer system to multiple virtual machines.
- a computer system supporting multiple virtual machines typically does so, at least in part, through the use of system software and/or hardware that manages the host computer system's resources in a manner that allows the host computer system to present a hosted virtual environment to each of the virtual machines.
- each virtual machine is able to operate as if the host computer system were solely under its control, and so share the host computer system's resources.
- the host computer system will typically include at least one processor and system memory.
- the aforementioned system software and/or hardware supports the sharing of these resources by providing processor resources and memory management to each of the virtual machines.
- Such virtualization functionality can be provided, for example, through the use of a system virtual machine (sometimes referred to as hardware virtual machine), which allows the sharing of the underlying physical machine resources between different virtual machines, each running its own operating system (OS; which can vary from virtual-machine-to-virtual-machine, or can be the same OS across all the virtual machines).
- OS operating system
- a hypervisor e.g., a software abstraction layer
- a hypervisor can be executed on “bare hardware” (i.e., execute on physical hardware, without need for intervening software; and which is also referred to as a native virtual machine), or alternatively, can interface with the physical hardware via an operating system (also referred to as a hosted virtual machine).
- an operating system also referred to as a hosted virtual machine
- one or more of a hypervisor's functions can be implemented directly in hardware, rather than being implemented in software.
- a hypervisor supports multiple virtual machines by coordinating processor resources to support the execution of instructions on behalf of the various virtual machines, and performing memory management to help ensure that the virtual machines effectively share the host computer's system memory, for example.
- a virtual machine manager monitors the internal operations of the virtual machines by redirecting a reference from a first address to a second address.
- the first address is an address of a function to be executed by the virtual machine.
- the second address is an address of a memory location in the memory page.
- the virtual machine manager installs an execution event at the memory location.
- an execution event is triggered.
- a message is sent to the hypervisor. The message indicates that the memory location has been accessed.
- FIG. 1 is a block diagram illustrating a server that can be implemented as a host computer system, according to one embodiment.
- FIG. 2A is a block diagram illustrating a guest virtual machine, according to one embodiment.
- FIG. 2B is a block diagram illustrating a guest virtual machine with redirected function pointers, according to one embodiment.
- FIG. 3 is a block diagram illustrating a hypervisor for managing operations of guest virtual machines, according to one embodiment.
- FIG. 4 is a high-level flowchart illustrating a method for managing operations within guest virtual machines, according to one embodiment.
- FIG. 5 is a block diagram illustrating a network architecture in which an embodiment of the present invention can be implemented.
- FIG. 6 is a block diagram that illustrates an example of a computer system suitable for implementing embodiments of the present invention.
- An advantageous feature of a host computer system that supports multiple virtual machines is the ability to support a variety of operating systems (OSs), such as Windows XP®, Windows Vista®, Linux, Mac OS X®, and the like, on the host computer system.
- OSs operating systems
- the virtual machines can employ a single type of operating system, and still enjoy the benefits of multiple separate operating environments.
- each of the virtual machines (also referred to herein as a “guest virtual machine”) execute a corresponding one of the OSs (referred to herein as a “guest operating system”).
- a given guest operating system is thus executed within a corresponding one of the guest virtual machines.
- the guest virtual machines are logically isolated from one another, as noted.
- This logical isolation provides many benefits, including, but not limited to, security benefits. For example, if a guest virtual machine becomes corrupted by malicious software, a system administrator can remove the corrupted guest virtual machine and install a new replacement guest virtual machine without affecting the operation of other guest virtual machines executing on the host computer.
- a hypervisor can be used to provide the ability for the host computer to implement multiple guest virtual machines, and to monitor and manage functions called by those guest virtual machines.
- a host computer can be configured to implement multiple virtual machines, each of which employ an installation of Windows XP®.
- Each of these virtual machines can individually execute an anti-virus utility, a defragmentation utility, a word processing application, an Internet browsing application and other such utilities, applications and the like.
- this results in the execution of multiple copies of such utilities and applications that, while isolated from each other, are redundant.
- These redundant instances result in needless consumption of the host computer's system resources.
- redundancy can also exist between different OSs, though typically to a lesser extent.
- Kernel component refactoring removes common kernel components shared by the virtual machines running on the same host computer, and executes the kernel components in a separate virtual machine, referred to as a virtual appliance.
- component refactoring can be applied to any sort of redundant functionality and/or code among multiple virtual machines, and as such, is not limited to redundant kernel functionality and/or code.
- the virtual appliance Via the hypervisor, the virtual appliance is able to monitor the other virtual machines supported by the host computer system. In response to such monitoring, the virtual appliance can perform any number of functions.
- Such functions can include maintenance operations, for example, which, in turn, can include firewall maintenance, volume management, input/output (I/O) change tracking, memory decompression and decryption, scanning for malicious software, and the like. Further, not only can redundancy in functionality and/or code be addressed, but such techniques can be used to reduce or eliminate redundancy in the operations to be performed. For example, in the case of scanning for malicious software (anti-virus scanning), if the virtual appliance scans a first file in a first virtual machine, the anti-virus scanner can forego scanning a second file in a second virtual machine, if the first and second files are identical.
- I/O input/output
- breakpoints One technique used to monitor code execution within virtual machines involves inserting breakpoints into the code executed by the virtual machines.
- some virtual machine implementations limit the code granularity at which breakpoints can be inserted.
- some virtual machine implementations limit breakpoints to insertion at the memory page level. That is, such techniques mandate that a breakpoint only be inserted on a per page basis, and the location of the breakpoint cannot be specified with any more precision than being associated with a particular memory page.
- the breakpoint will also be triggered frequently, causing performance degradation.
- embodiments of the present invention monitor and augment code execution within guest virtual machines using, for example, a function hooking technique. Moreover, such embodiments are able to do so without injecting foreign code (e.g., breakpoints) into the code being executed by the guest virtual machine, and with minimal performance impact on the performance of the guest virtual machine.
- a virtual machine manager monitors the internal operations of the virtual machines by redirecting a reference to a first address to a second address. The first address is an address of a function to be executed by the virtual machine, while the second address is the address of a memory location in a memory page. The virtual machine manager installs an execution event at the memory location in the memory page.
- an execution event is triggered.
- a message is sent to the hypervisor.
- the message indicates to the hypervisor that the memory location has been accessed.
- the hypervisor having been apprised of the situation, is then able to proceed with performing one or more operations that have been associated with the function.
- FIG. 1 is a simplified block diagram that illustrates a server that can be used to communicate with clients.
- a server can communicate with the clients via a direct connection or a connection via a network, such as the Internet.
- a server is only an example of any number of computer systems that can be used.
- server 105 includes a host operating system 110 , a hypervisor 115 , a security virtual machine 120 , which further includes a virtual appliance application 125 , and guest virtual machines 130 ( 1 )-(N), which further include guest operating systems 135 ( 1 )-(N).
- Host operating system 110 is the OS that underlies hypervisor 115 , security virtual machine 120 , and guest virtual machines 130 ( 1 )-(N).
- Hypervisor 115 is software and/or hardware that provides server 105 the ability to concurrently execute multiple guest operating systems (e.g. guest operating systems 135 ( 1 )-(N)) via guest virtual machines 130 ( 1 )-(N).
- server 105 includes a security virtual machine 120 , which executes virtual appliance application 125 .
- Virtual appliance application 125 executing on security virtual machine 120 , includes common kernel components shared by guest operating systems 135 ( 1 )-(N) executing on guest virtual machines 130 ( 1 )-(N).
- Example functions that virtual appliance application 125 performs on behalf of guest virtual machines 130 ( 1 )-(N) include firewall maintenance, anti-virus scanning, volume management, I/O change tracking, memory decompression and decryption and the like.
- virtual appliance application 125 By implementing virtual appliance application 125 , the functionalities that would have been performed by each guest operating system 135 ( 1 )-(N) are centralized in virtual appliance application 125 , which reduces redundancy among guest operating systems 135 ( 1 )-(N). As described subsequently in further detail in conjunction with FIGS. 2A , 2 B, 3 , and 4 , virtual appliance application 125 , through hypervisor 115 , monitors the execution of guest operating systems 135 ( 1 )-(N).
- virtual appliance application 125 In response to a particular guest operating system (e.g., guest operating system 135 ( 1 )) calling certain functions during its execution, virtual appliance application 125 takes temporary control of the particular guest virtual machine (e.g., guest virtual machine 130 ( 1 )) that is executing that particular guest operating system. Virtual appliance application 125 performs an operation on the guest virtual machine and then, returns control to the guest virtual machine.
- some embodiments implement function monitoring and modification (hereinafter referred to as “function hooking”) techniques that alert virtual appliance application 125 (via hypervisor 115 ) when a guest operating system of a guest virtual machine calls certain functions. Function hooking enables the altering or augmenting the behavior of an OS or application without access to the OS or application source code.
- FIG. 2A is a diagram of a guest virtual machine with function pointers mapped to function code in a guest operating system kernel.
- guest virtual machine 205 (which can be used to implement guest virtual machines 130 ( 1 )-(N) of FIG. 1 ) includes a guest operating system 210 (which can be used to implement guest operating systems 135 ( 1 )-(N) of FIG. 1 ).
- Guest operating system 210 further includes a kernel 215 and an interrupt descriptor table 230 .
- Kernel 215 is a basic component of guest operating system 210 and is responsible for managing system resources of guest virtual machine 205 .
- kernel 215 manages the communication between hardware and software components within guest virtual machine 205 .
- a computer system whether real or virtual, performs many different tasks through various hardware and software components. For example, a computer system can accomplish these tasks by performing function calls to effect the desired operation(s).
- functions that a computer system might employ include functions that cause a video adapter to display image data on the computer system's video display, those that cause an input/output (I/O) adapter to accept input presented by an input device, those that cause a storage device adapter to enable read and write access to a storage device (e.g., hard disk drive, flash drive, or the like), and those that cause an anti-virus utility to scan various storage devices of the computer system for malicious software, among a wide variety of such functions and others.
- I/O input/output
- One approach to handling these different tasks is to send a request to the given hardware or software component (e.g., make a function call), requesting that the given hardware or software component perform one or more operations, and then wait for the operation(s) to complete.
- a more efficient technique involves sending such a request (again, making a function call, for example), and then performing other operations, while awaiting receipt of a notification indicating that the requested operation has completed.
- a notification can be implemented as an interrupt, for example.
- An interrupt is an asynchronous signal or message indicating need for attention or a synchronous event indicating need for a change in program execution.
- interrupt descriptor table 230 is a data structure used by a microprocessor architecture such as, for example, an x86 architecture, to implement an interrupt vector table.
- Interrupt descriptor table 230 is used by guest virtual machine 205 to determine appropriate responses to received interrupts.
- An interrupt vector can be implemented as an address of an interrupt handler.
- Embodiments of the present invention can utilize pointers to reference interrupt vectors, for example.
- a pointer is a programmatic construct, the value of which refers to (“points to”) another location in a computer-readable storage medium, typically a computer system's memory.
- guest virtual machine 205 saves a current execution state (i.e., saves the location in code where the guest virtual machine was executing upon receipt of the interrupt, the value of any variables and other pertinent information).
- Guest virtual machine 205 matches the received interrupt with a corresponding interrupt vector in interrupt descriptor table 230 (as referenced by function pointers depicted in FIG. 2A as function pointers 235 ( 1 )-(N); labeled in FIG. 2A as Function Pointers 1 -N).
- Guest virtual machine 205 then begins execution of the interrupt handler referenced by the given function pointer (depicted in FIG. 2A as function codes 240 ( 1 )-(N) in kernel 215 ; labeled in FIG. 2A as Function Pointers 1 -N).
- Function Pointer 1 e.g., a function named Function 1
- the interrupt vector for Function Code 1 is the address of Function Code 1 , which is the address pointed to by Function Pointer 1 .
- a function pointer is a pointer that references an address, such as the address of a memory location at which the storage of the program code begins, for example. When a processor is to execute a function, the processor will typically begin execution of the function at this point in memory.
- FIG. 2B is diagram illustrating a guest virtual machine with redirected pointers that can be implemented within a host computer system.
- guest virtual machine includes a hook page 245 located within kernel 215 .
- hook page 245 is a non-pageable memory page located in the memory of guest virtual machine 205 .
- Hook page 245 contains no function code and is mapped in memory.
- a memory page is a fixed-length, logically contiguous block of memory.
- a non-pageable memory page is a memory page that remains in physical memory and is not transferred to an auxiliary memory store such as, for example, a hard disk drive or other type of memory device, in order to free space in the physical memory.
- the size of hook page 245 is 4,096 bytes, which is the page size commonly implemented by the x86 architecture. As will be appreciated, any page size is can be employed, and so hook page 245 is therefore not limited to a size of 4,096 bytes.
- Hook page 245 is located starting at a base memory location 250 .
- hook page 245 is referenced by a base physical address within kernel 215 (e.g., 0x10000).
- Hook page 245 includes a number of memory locations that are referenced with respect to the base physical address of base memory location 250 using memory location offsets (e.g., memory location B+1; memory location B+2; and memory location B+N). For example, memory location B+1 is referred to using the base physical address of base memory location 250 (B), plus an offset of 1.
- hook page 245 includes an execution event (not pictured) installed at base memory location 250 .
- the execution event When triggered, the execution event causes a message to be sent to a hypervisor (e.g., hypervisor 115 of FIG. 1 ) to determine the function called by guest virtual machine 205 .
- a hypervisor e.g., hypervisor 115 of FIG. 1
- the installation and operation of the execution event is discussed subsequently in connection with FIGS. 3 and 4 .
- function pointers 235 ( 1 ), 235 ( 2 ), and 235 (N) are redirected from the original memory locations illustrated in FIG. 2A , to the memory locations in hook page 245 .
- Function pointer 235 ( 1 ) is therefore redirected to the address of base memory location 250 (at (B)); function pointer 235 ( 2 ) is redirected to memory location 250 ( 1 ) (at (B+1)); and function pointer 235 (N) is redirected to memory location 250 (N) (at (B+N)).
- FIG. 3 is a diagram illustrating a hypervisor for managing the operation of virtual machines in a host computer system, according to one embodiment.
- Hypervisor 305 represents an implementation of hypervisor 105 of FIG. 1 .
- hypervisor 305 includes virtual machine manager 310 and a saved pointers data structure 315 .
- Virtual machine manager 310 coordinates the operation of guest virtual machines in a host computer such as server 105 of FIG. 1 .
- One technique used to monitor and modify the operation of the guest virtual machines involves hooking certain functions within those virtual machines. Through the use of function hooking, virtual machine manager 310 can perform the monitoring and modification operations without the need for altering or otherwise modifying the function code in the guest virtual machine. Modification of function code can be complex to implement and exposes the function code to exploitation by malicious software, among other risks and disadvantages.
- a virtual machine such as guest virtual machine 205 typically executes a function by simply using a function pointer that references a memory location at which the code for the function to be executed is stored. For example, referring to FIG. 2A and the example discussed earlier, guest virtual machine 205 executes Function 1 by accessing Function Pointer 1 at function pointer 235 ( 1 ), which, in turn, references Function Code 1 at function code 240 ( 1 ). However, without more, virtual machine manager 310 would be unable to determine that guest virtual machine 205 has requested execution of Function 1 . Such is the case even if the need for such information is known a priori, because an architecture such as that shown in FIG.
- 2A possesses no mechanism for notifying a virtual machine manager of Function 1 's execution, as a result of the logical separation between its hypervisor and virtual machines.
- a mechanism is needed to allow virtual machine manager 310 to learn of a request for the execution of Function 1 by guest virtual machine 205 .
- Such a mechanism can be provided, for example, by implementing a function hooking technique.
- virtual machine manager 310 hooks a function call to Function 1 by allocating a hook page such as hook page 245 within kernel 215 of guest virtual machine 205 .
- Virtual machine manager 310 then preserves the address of the original memory location, as referenced by its function pointer. That is, virtual machine manager 310 stores an association between the reference (function pointer) and the address of the memory location at which the function code begins. Thus, in the case of function pointer 235 ( 1 ), this address is the address of the memory location of Function Code 1 (function code 240 ( 1 )) in kernel 215 .
- Saved pointers data structure 315 can be implemented using one of any number of programmatic constructs that provide a number of locations for the storage of such pointers (depicted in FIG. 3 as saved pointers 320 ( 1 )-(N), and labeled as Saved Pointers [ 1 ]-[N]). More specifically, virtual memory manager 310 stores the reference to the original memory location (its address) in saved pointers 320 ( 1 ). This reference is represented in FIG.
- Saved pointers data structure 315 can be implemented using a data structure such as an array, a record, an array of records, a table, and the like.
- virtual machine manager 310 After saving the address of the original memory location in saved pointers data structure 315 , virtual machine manager 310 redirects function pointer 235 ( 1 ) to a memory location on hook page 245 (e.g., base memory location 250 ) by storing that memory location's address (B) therein. As shown in FIG. 2B , Function Pointer 1 (function pointer 235 ( 1 )) is redirected to base memory location 250 . Thus, when function pointer 235 ( 1 ) is accessed as part of Function 1 being called, guest virtual machine 205 attempts to execute code stored at B (base memory location 250 ) instead of Function Code 1 .
- virtual machine manager 310 installs an execution event at B (base memory location 250 ).
- the execution event can be implemented as an “execution event callback,” such that, when the function is called and the execution event triggered, virtual machine manager 310 receives a message from an event handler within hypervisor 305 (not shown) that specifies the particular function called (e.g., Function 1 ) and the virtual machine that called the function (e.g., guest virtual machine 205 ). Virtual machine manager 310 then performs one or more operations on behalf of guest virtual machine 205 in response to receiving the message that Function 1 was called.
- an event handler within hypervisor 305 (not shown) that specifies the particular function called (e.g., Function 1 ) and the virtual machine that called the function (e.g., guest virtual machine 205 ).
- Virtual machine manager 310 then performs one or more operations on behalf of guest virtual machine 205 in response to receiving the message that Function 1 was called.
- Function 1 will also be executed, though that need not necessarily be the case (e.g., hypervisor 305 can be designed, using multiple levels of indirection or the like, such that the thread of execution proceeds to another function or terminates, for example).
- hypervisor 305 can be designed, using multiple levels of indirection or the like, such that the thread of execution proceeds to another function or terminates, for example).
- virtual machine manager 310 can send a message to a security virtual machine (e.g., security virtual machine 120 of FIG. 1 ) to begin scanning guest virtual machine 205 using an anti-virus component within virtual appliance application 125 .
- a security virtual machine e.g., security virtual machine 120 of FIG. 1
- virtual machine manager 310 can also determine whether or not Function 1 should be executed, and proceed accordingly.
- FIG. 4 is a simplified flowchart illustrating an example method for managing operations within guest virtual machines.
- the process of FIG. 4 begins with the virtual machine manager of a hypervisor (e.g., virtual machine manager 310 of FIG. 3 ) allocating memory in a guest virtual machine (e.g., guest virtual machine 205 of FIG. 2B ) for a hook page (e.g., hook page 245 of FIG. 2B ), as shown in 402 .
- the virtual machine manager creates an entry within a saved pointers data structure (e.g., saved pointers data structure 315 of FIG. 3 ) that forms an association between a function pointer and the address pointed to by the function pointer (shown in 404 ).
- a saved pointers data structure e.g., saved pointers data structure 315 of FIG. 3
- the address pointed to by the function pointer (a result of the “&” operation) is the address of the function code.
- the virtual machine manager modifies the function pointers to point to an offset in the hook page ( 406 ).
- the virtual machine manager sets execution triggers on the hook page, which notify the virtual machine manager when a particular function is called by the guest virtual machine.
- the hypervisor determines if a function, hooked by a hooked function pointer, has been called by the guest virtual machine ( 410 ). According to one embodiment, if the guest virtual machine calls a function that is hooked by the virtual machine manager, several operations are performed. First, the function is triggered by, an asynchronous event such as an interrupt, for example. The guest virtual machine encounters the interrupt and searches an interrupt descriptor table (e.g., interrupt descriptor table 230 of FIGS. 2A and 2B ) for a function pointer that corresponds to the received interrupt. Once the appropriate function pointer is located, the function pointer is referenced, which further references a location on the hook page.
- an interrupt descriptor table e.g., interrupt descriptor table 230 of FIGS. 2A and 2B
- the hook page location includes at least one execution trigger, which is triggered by the function pointer call ( 412 ).
- the execution event triggers the sending of a message that includes the execution trigger address.
- the message is sent to the virtual machine manager within the hypervisor ( 414 ).
- the virtual machine manager receives the message and converts the execution event address in the message to the original function code address using the saved pointers data structure.
- the virtual machine manager can instruct a security virtual machine (e.g., security virtual machine 220 ) to perform one or more security operations in response to the execution event by sending a message to the security virtual machine.
- the execution event can be triggered by a malicious software infection in the guest virtual machine.
- the security virtual machine can be instructed (via, for example, the message sent by the virtual machine manager) to perform anti-virus scanning of the guest virtual machine using an anti-virus kernel component.
- the virtual machine manager sends a message to the guest virtual machine with the original address of the function code to which the function pointer pointed ( 416 ).
- the guest virtual machine using the original address, is then able to execute the function code ( 418 ).
- Elements of network architecture can be implemented using a variety of computer systems and networks. An example of one such network environment is described below with reference to FIG. 5 .
- FIG. 5 is a simplified block diagram illustrating a network architecture 500 in which one or more clients are provided with access to a server via various network connections.
- clients 505 ( 1 )-(N) are coupled to a network 510 , and so are able to access a server 515 (which can be used to implement server 105 of FIG. 1 ) via network 510 .
- a client can be implemented using, for example, a desktop computer, a laptop computer, a workstation, a server, a cell phone, a smart phone, a network-enabled personal digital assistant (PDA), or the like.
- PDA network-enabled personal digital assistant
- network 510 which can be used by clients 505 ( 1 )- 505 (N) to access server 515 , is the Internet.
- access to server 515 can be provided by a local area network (LAN) utilizing Ethernet, IEEE 802.11x, or some other communications protocol.
- LAN local area network
- server 515 can be accessed by clients coupled directly thereto (not shown).
- server 515 is coupled to a server storage device 520 .
- Server storage device 520 can be implemented as a single storage device or a collection of storage devices.
- Server storage device 520 can also be implemented as a storage area network, which couples remote storage devices to a server (e.g., server 515 ), such that the remote storage devices appear as locally-attached storage devices to the server's OS, for example.
- server storage device 520 can be implemented by any type of computer-readable storage medium, including, but not limited to, internal or external hard disk drives (HDD), optical drives (e.g., CD-R, CD-RW, DVD-R, DVD-RW, and the like), flash memory drives (e.g., USB memory sticks and the like), tape drives and the like.
- HDD hard disk drives
- optical drives e.g., CD-R, CD-RW, DVD-R, DVD-RW, and the like
- flash memory drives e.g., USB memory sticks and the like
- tape drives e.g., tape drives, tape drives and the like.
- network architecture 500 can include other components such as routers, firewalls and the like that are not germane to the discussion of the present network and will not be discussed further herein.
- network architecture 500 can include other components such as routers, firewalls and the like that are not germane to the discussion of the present network and will not be discussed further herein.
- other configurations are possible.
- clients 505 ( 1 )-(N) can be directly coupled to server storage device 520 without the user of a server or Internet; server 515 can be used to implement both the clients and the server; network architecture 500 can be implemented without the use of clients 505 ( 1 )-(N); and so on.
- FIG. 6 depicts a block diagram of a computer system 610 suitable for implementing a server (e.g., server 115 of FIG. 1 ), as well as the clients (e.g., clients 105 ( 1 )- 105 (N) of FIG. 1 ) used therein.
- a server e.g., server 115 of FIG. 1
- clients e.g., clients 105 ( 1 )- 105 (N) of FIG. 1
- Computer system 610 includes a bus 612 , which interconnects major subsystems of computer system 610 , such as a central processor 614 , a system memory 617 (typically random-access memory (RAM), but which may also include read-only memory (ROM), flash ROM, or the like), an input/output controller 618 , an external audio device, such as speaker system 620 via an audio output interface 622 , an external device, such as a display screen 624 via display adapter 626 , serial ports 628 and 630 , a keyboard 632 (interfaced with keyboard controller 633 ), a storage interface 634 , a floppy disk drive 637 operative to receive a floppy disk 638 , a host bus adapter (HBA) interface card 635 A operative to connect with a Fibre Channel network 690 , a host bust adapter (HBA) interface card 635 B operative to connect to a SCSI bus 639 , and an optical disk drive 640 operative to receive an optical disk 6
- mouse 646 or other point-and-click device, coupled to bus 612 via serial port 628
- modem 647 coupled to bus 612 via serial port 630
- network interface 648 coupled directly to bus 612 .
- Bus 612 allows data communication between central processor 614 and system memory 617 , which may include read-only memory (ROM) or flash memory (neither shown) and random access memory (RAM) (not shown), as previously noted.
- RAM is generally the main memory into which OS and application programs are loaded.
- ROM or flash memory can contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components.
- BIOS Basic Input-Output system
- Applications resident with computer system 610 are generally stored on and accessed via a computer-readable storage medium, such as hard disk drive (e.g., fixed disk 644 ), an optical drive (e.g., optical drive 640 ), a floppy disk unit 637 , or other computer-readable storage media.
- Storage interface 634 can connect to a standard computer-readable storage medium for storage and/or retrieval of information, such as a fixed disk drive 644 .
- Fixed disk drive 644 may be a part of computer system 610 , or may be separate and accessed through other interface systems.
- Modem 647 can be employed to provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP).
- ISP internet service provider
- Network interface 648 may provide a direct connection to a remote server via a direct network link to the Internet via a point-of-presence (POP).
- POP point-of-presence
- Network interface 648 may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like.
- CDPD Cellular Digital Packet Data
- FIG. 6 Many other devices or subsystems (not shown) may be connected in a similar manner (e.g., document scanners, digital cameras, and so on). Conversely, all of the devices shown in FIG. 6 need not be present.
- the devices and subsystems can be interconnected in different ways from that shown in FIG. 6 .
- the operation of the computer system such as that shown in FIG. 6 is readily known in the art and is not discussed in detail in this application.
- Code to implement the previously-described features can be stored in computer-readable storage media such as one or more of system memory 617 , fixed disk 644 , optical disk 642 , or floppy disk 638 .
- the OS provided on computer system 610 can be, for example, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, or other known OS.
- server 105 can store host operating system 110 , hypervisor 115 , security virtual machine 120 , and guest virtual machines 130 ( 1 )-(N), all of FIG. 1 , in computer-readable storage media (e.g., memory 617 and the like).
- network interface 648 may be used by any of the modules described in server 105 and hypervisor 305 .
- the virtual machine manager can send and receive notifications concerning functions called within server 105 or in other parts of a network, as indicated in FIG. 6 .
- a signal may be directly transmitted from a first block to a second block, or a signal may be modified (e.g., amplified, attenuated, delayed, latched, buffered, inverted, filtered, or otherwise modified) between the blocks.
- a signal may be directly transmitted from a first block to a second block, or a signal may be modified (e.g., amplified, attenuated, delayed, latched, buffered, inverted, filtered, or otherwise modified) between the blocks.
- modified signals e.g., amplified, attenuated, delayed, latched, buffered, inverted, filtered, or otherwise modified
- a signal input at a second block may be conceptualized as a second signal derived from a first signal output from a first block due to the physical limitations of the circuitry involved (e.g., there will inevitably be some attenuation and delay). Therefore, as used herein, a second signal derived from the first signal includes the first signal or any modifications to the first signal, whether due to circuit limitations or due to passage through other circuit elements which do not change the informational and/or final functional aspect of the first signal.
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
Description
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/495,556 US8397242B1 (en) | 2009-06-30 | 2009-06-30 | System and method for managing operations within virtual machines |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/495,556 US8397242B1 (en) | 2009-06-30 | 2009-06-30 | System and method for managing operations within virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
US8397242B1 true US8397242B1 (en) | 2013-03-12 |
Family
ID=47780581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/495,556 Active 2031-09-28 US8397242B1 (en) | 2009-06-30 | 2009-06-30 | System and method for managing operations within virtual machines |
Country Status (1)
Country | Link |
---|---|
US (1) | US8397242B1 (en) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110321165A1 (en) * | 2010-06-24 | 2011-12-29 | Alen Capalik | System and Method for Sampling Forensic Data of Unauthorized Activities Using Executability States |
US20130254556A1 (en) * | 2012-03-26 | 2013-09-26 | Fuji Xerox Co., Ltd. | Non-transitory computer readable medium, program protection apparatus, and program protection method |
US20130339957A1 (en) * | 2011-03-18 | 2013-12-19 | Syed Azam | Sharing internet capability of a mobile computing device with a client computing device using a virtual machine |
US20140245444A1 (en) * | 2013-02-22 | 2014-08-28 | Bitdefender IPR Management Ltd. | Memory Introspection Engine for Integrity Protection of Virtual Machines |
CN104506548A (en) * | 2014-12-31 | 2015-04-08 | 北京天融信科技有限公司 | Data packet redirecting device as well as safety protection method and system for virtual machine |
US20150294115A1 (en) * | 2010-08-18 | 2015-10-15 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US9183111B2 (en) * | 2011-05-10 | 2015-11-10 | Microsoft Technology Licensing, Llc | Methods and computer program products for collecting storage resource performance data using file system hooks |
US9400885B2 (en) | 2014-01-10 | 2016-07-26 | Bitdefender IPR Management Ltd. | Computer security systems and methods using virtualization exceptions |
US20160366143A1 (en) * | 2012-02-27 | 2016-12-15 | Ca, Inc. | System and method for virtual image security in a cloud environment |
US9600774B1 (en) * | 2013-09-25 | 2017-03-21 | Amazon Technologies, Inc. | Predictive instance suspension and resumption |
US9916456B2 (en) | 2012-04-06 | 2018-03-13 | Security First Corp. | Systems and methods for securing and restoring virtual machines |
US20180267818A1 (en) * | 2017-03-17 | 2018-09-20 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on notification data |
US20180365044A1 (en) * | 2017-06-20 | 2018-12-20 | Vmware, Inc. | Methods and systems to adjust a monitoring tool and auxiliary servers of a distributed computing system |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
US10514945B2 (en) * | 2017-10-31 | 2019-12-24 | Nicira, Inc. | Host-based virtual machine introspection with dynamic guest assistance |
US20200019703A1 (en) * | 2018-07-16 | 2020-01-16 | Juniper Networks, Inc. | Memory tracking for malware detection |
CN111767119A (en) * | 2020-06-30 | 2020-10-13 | 云袭网络技术河北有限公司 | Kernel hooking method without triggering system protection |
CN113391873A (en) * | 2020-03-11 | 2021-09-14 | 深信服科技股份有限公司 | Behavior acquisition method based on virtual machine, device and storage medium |
US11354150B1 (en) * | 2020-02-04 | 2022-06-07 | Amazon Technologies, Inc. | Utilizing maintenance event windows to determine placement of instances |
US12153675B2 (en) | 2018-07-16 | 2024-11-26 | Juniper Networks, Inc. | Memory tracking for malware detection |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040064668A1 (en) * | 2002-09-26 | 2004-04-01 | Todd Kjos | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US20050235123A1 (en) * | 2004-04-19 | 2005-10-20 | Zimmer Vincent J | Method to manage memory in a platform with virtual machines |
US20070016895A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Selective omission of endian translation to enhance emulator performance |
US20070088822A1 (en) * | 1995-11-03 | 2007-04-19 | Cisco Technology, Inc. | System for Distributing Load Over Multiple Servers at an Internet Site |
US20070130566A1 (en) * | 2003-07-09 | 2007-06-07 | Van Rietschote Hans F | Migrating Virtual Machines among Computer Systems to Balance Load Caused by Virtual Machines |
US20080114916A1 (en) * | 2006-11-13 | 2008-05-15 | Hummel Mark D | Filtering and Remapping Interrupts |
US7424710B1 (en) * | 2002-12-18 | 2008-09-09 | Vmware, Inc. | TCP/IP offloading for virtual machines |
US20090187904A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Redirection Table for Virtual Machine Guest |
US20100023941A1 (en) * | 2008-07-28 | 2010-01-28 | Fujitsu Limted | Virtual machine monitor |
US20100058338A1 (en) * | 2008-08-29 | 2010-03-04 | Red Hat, Inc. | Callbacks in virtual machines |
US20100131669A1 (en) * | 2008-11-26 | 2010-05-27 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
US7996835B2 (en) * | 2006-10-10 | 2011-08-09 | International Business Machines Corporation | System, method and program for managing communication with multiple configurations for virtual machine |
-
2009
- 2009-06-30 US US12/495,556 patent/US8397242B1/en active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070088822A1 (en) * | 1995-11-03 | 2007-04-19 | Cisco Technology, Inc. | System for Distributing Load Over Multiple Servers at an Internet Site |
US20040064668A1 (en) * | 2002-09-26 | 2004-04-01 | Todd Kjos | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US7424710B1 (en) * | 2002-12-18 | 2008-09-09 | Vmware, Inc. | TCP/IP offloading for virtual machines |
US20070130566A1 (en) * | 2003-07-09 | 2007-06-07 | Van Rietschote Hans F | Migrating Virtual Machines among Computer Systems to Balance Load Caused by Virtual Machines |
US20050235123A1 (en) * | 2004-04-19 | 2005-10-20 | Zimmer Vincent J | Method to manage memory in a platform with virtual machines |
US20070016895A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Selective omission of endian translation to enhance emulator performance |
US7996835B2 (en) * | 2006-10-10 | 2011-08-09 | International Business Machines Corporation | System, method and program for managing communication with multiple configurations for virtual machine |
US20080114916A1 (en) * | 2006-11-13 | 2008-05-15 | Hummel Mark D | Filtering and Remapping Interrupts |
US20090187904A1 (en) * | 2008-01-22 | 2009-07-23 | Serebrin Benjamin C | Redirection Table for Virtual Machine Guest |
US20100023941A1 (en) * | 2008-07-28 | 2010-01-28 | Fujitsu Limted | Virtual machine monitor |
US20100058338A1 (en) * | 2008-08-29 | 2010-03-04 | Red Hat, Inc. | Callbacks in virtual machines |
US20100131669A1 (en) * | 2008-11-26 | 2010-05-27 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
Non-Patent Citations (4)
Title |
---|
Hypervisor-Based Instrusion Detection, Lionel Litty, 2005, pp. 1-83. * |
I/O Processing in a Virtualized Platform, 2007, pp. 1-10. * |
Introducing Role-based Access Control to a Secure Virtual Machine Monitor, Manabu Hirano et al., 2008, pp. 1-6. * |
The new approach for inter-communication between guest domains on Virtual Machine Monitor, 2007, pp. 1-6. * |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789189B2 (en) * | 2010-06-24 | 2014-07-22 | NeurallQ, Inc. | System and method for sampling forensic data of unauthorized activities using executability states |
US20110321165A1 (en) * | 2010-06-24 | 2011-12-29 | Alen Capalik | System and Method for Sampling Forensic Data of Unauthorized Activities Using Executability States |
US20170286669A1 (en) * | 2010-08-18 | 2017-10-05 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US9529998B2 (en) * | 2010-08-18 | 2016-12-27 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US20150294115A1 (en) * | 2010-08-18 | 2015-10-15 | Security First Corp. | Systems and methods for securing virtual machine computing environments |
US20130339957A1 (en) * | 2011-03-18 | 2013-12-19 | Syed Azam | Sharing internet capability of a mobile computing device with a client computing device using a virtual machine |
US9430263B2 (en) * | 2011-03-18 | 2016-08-30 | Hewlett-Packard Development Company, L.P. | Sharing internet capability of a mobile computing device with a client computing device using a virtual machine |
US9183111B2 (en) * | 2011-05-10 | 2015-11-10 | Microsoft Technology Licensing, Llc | Methods and computer program products for collecting storage resource performance data using file system hooks |
US9641413B2 (en) | 2011-05-10 | 2017-05-02 | Microsoft Technology Licensing, Llc | Methods and computer program products for collecting storage resource performance data using file system hooks |
US20160366143A1 (en) * | 2012-02-27 | 2016-12-15 | Ca, Inc. | System and method for virtual image security in a cloud environment |
US8838996B2 (en) * | 2012-03-26 | 2014-09-16 | Fuji Xerox Co., Ltd. | Non-transitory computer readable medium, program protection apparatus, and program protection method |
US20130254556A1 (en) * | 2012-03-26 | 2013-09-26 | Fuji Xerox Co., Ltd. | Non-transitory computer readable medium, program protection apparatus, and program protection method |
US9916456B2 (en) | 2012-04-06 | 2018-03-13 | Security First Corp. | Systems and methods for securing and restoring virtual machines |
US8875295B2 (en) * | 2013-02-22 | 2014-10-28 | Bitdefender IPR Management Ltd. | Memory introspection engine for integrity protection of virtual machines |
US20140245444A1 (en) * | 2013-02-22 | 2014-08-28 | Bitdefender IPR Management Ltd. | Memory Introspection Engine for Integrity Protection of Virtual Machines |
US9600774B1 (en) * | 2013-09-25 | 2017-03-21 | Amazon Technologies, Inc. | Predictive instance suspension and resumption |
US9400885B2 (en) | 2014-01-10 | 2016-07-26 | Bitdefender IPR Management Ltd. | Computer security systems and methods using virtualization exceptions |
CN104506548A (en) * | 2014-12-31 | 2015-04-08 | 北京天融信科技有限公司 | Data packet redirecting device as well as safety protection method and system for virtual machine |
US20180267818A1 (en) * | 2017-03-17 | 2018-09-20 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on notification data |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
US10623262B2 (en) * | 2017-06-20 | 2020-04-14 | Vmware, Inc. | Methods and systems to adjust a monitoring tool and auxiliary servers of a distributed computing system |
US20180365044A1 (en) * | 2017-06-20 | 2018-12-20 | Vmware, Inc. | Methods and systems to adjust a monitoring tool and auxiliary servers of a distributed computing system |
US10514945B2 (en) * | 2017-10-31 | 2019-12-24 | Nicira, Inc. | Host-based virtual machine introspection with dynamic guest assistance |
US11562066B2 (en) | 2018-07-16 | 2023-01-24 | Juniper Networks, Inc. | Memory tracking for malware detection |
US20200019703A1 (en) * | 2018-07-16 | 2020-01-16 | Juniper Networks, Inc. | Memory tracking for malware detection |
US10795993B2 (en) * | 2018-07-16 | 2020-10-06 | Juniper Networks, Inc. | Memory tracking for malware detection |
US12153675B2 (en) | 2018-07-16 | 2024-11-26 | Juniper Networks, Inc. | Memory tracking for malware detection |
US11354150B1 (en) * | 2020-02-04 | 2022-06-07 | Amazon Technologies, Inc. | Utilizing maintenance event windows to determine placement of instances |
CN113391873A (en) * | 2020-03-11 | 2021-09-14 | 深信服科技股份有限公司 | Behavior acquisition method based on virtual machine, device and storage medium |
CN113391873B (en) * | 2020-03-11 | 2023-03-24 | 深信服科技股份有限公司 | Behavior acquisition method based on virtual machine, device and storage medium |
CN111767119A (en) * | 2020-06-30 | 2020-10-13 | 云袭网络技术河北有限公司 | Kernel hooking method without triggering system protection |
CN111767119B (en) * | 2020-06-30 | 2023-05-23 | 云袭网络技术河北有限公司 | Kernel hooking method without triggering system protection |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8397242B1 (en) | System and method for managing operations within virtual machines | |
US8448165B1 (en) | System and method for logging operations of virtual machines | |
US6226667B1 (en) | Method and apparatus for preloading data in a distributed data processing system | |
AU2007248886B2 (en) | Converting machines to virtual machines | |
RU2335796C2 (en) | File system controlled filter model and architecture | |
CN107209681B (en) | Storage device access method, device and system | |
US20250013594A1 (en) | Io processing method and apparatus | |
US10990371B2 (en) | Device driver non-volatile backing-store installation | |
CN102662741B (en) | Method, device and system for realizing virtual desktop | |
JP4054390B2 (en) | Modem interface | |
WO2021013243A1 (en) | Method for starting mini program, device, and computer storage medium | |
US8566899B2 (en) | Techniques for securing a checked-out virtual machine in a virtual desktop infrastructure | |
US20130312055A1 (en) | Security management device and method | |
US8370613B1 (en) | Method and apparatus for automatically optimizing a startup sequence to improve system boot time | |
CN111338854A (en) | Kubernetes cluster-based method and system for quickly recovering data | |
US8813071B2 (en) | Storage reclamation systems and methods | |
WO2022042127A1 (en) | Coroutine switching method and apparatus, and device | |
EP3514717B1 (en) | Device driver non-volatile backing-store installation | |
US8838913B1 (en) | System and method for locating a memory page in a guest virtual machine | |
US5968174A (en) | Method and apparatus for implementing a 32-bit operating system which supports 16-bit code | |
US20140082275A1 (en) | Server, host and method for reading base image through storage area network | |
CN104636159A (en) | Method and device for upgrading software in virtual machines | |
CN111767082A (en) | Computing chip starting method and device and computer system | |
CN115576705B (en) | Data synchronization method, device and medium for redundant firmware | |
US8412859B2 (en) | Methods and systems for interconnecting a peripheral device and an electronic system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SYMANTEC CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CONOVER, MATTHEW;REEL/FRAME:023131/0544 Effective date: 20090819 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: CA, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SYMANTEC CORPORATION;REEL/FRAME:051144/0918 Effective date: 20191104 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |