IP Library Granted Patent US 7,480,908
Granted Patent B1
US 7,480,908 · App. 11/165,827 · Granted Jan 20, 2009

Segmented virtual machine transport mechanism

Assignee: Azul Systems, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,480,908
App. No.
11/165,827
Granted
Jan 20, 2009
Kind
B1
Abstract

Providing data to an application running on a segmented virtual machine (VM) is disclosed. Providing data includes opening an interface between the segmented VM and an external data source, transferring data from the external data source to an interface buffer, transferring a first selected amount of data from the interface buffer to a shell VM buffer, transferring a second selected amount of data from the shell VM buffer to a core VM buffer, and providing portions of the data from the core VM buffer to the application in response to read requests from the application.

Claims (79)

1. A method of providing data to an application running on a segmented virtual machine (VM), comprising:

opening an interface to a logical channel between the segmented VM and an external data source, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

transferring data from the external data source to an interface buffer;

transferring a first selected amount of data from the interface buffer to a shell VM buffer associated with the shell VM of the segmented VM;

transferring a second selected amount of data from the shell VM buffer to a core VM buffer associated with the core VM of the segmented VM; and

providing portions of the data from the core VM buffer to the application in response to read requests from the application.

2. A method as recited in claim 1 , wherein transferring the first or second selected amount of data is performed independently of an application requesting data.

3. A method as recited in claim 1 , wherein transferring the first or second selected amount of data is performed when data is available at the interface.

4. A method as recited in claim 1 , wherein transferring the first or second selected amount of data is performed periodically at the interface.

5. A method as recited in claim 1 , wherein the interface is a socket.

6. A method as recited in claim 1 , wherein the interface is a file descriptor.

7. A method as recited in claim 1 , wherein the first selected amount is the same as the second selected amount.

8. A method as recited in claim 1 , wherein the size of the shell VM buffer and the size of the core VM buffer are equal.

9. A method as recited in claim 1 , wherein the first or second selected amount is based on the amount of available space in the core VM buffer.

10. A method as recited in claim 1 , further including sending information about the amount of available space in the core VM buffer to the shell VM.

11. A method as recited in claim 1 , wherein the size of at least one buffer varies with time.

12. A method as recited in claim 1 , wherein transferring data to the core VM buffer includes aggregating the data with data from other channels.

13. A method as recited in claim 1 , wherein transferring data to the core VM buffer includes multiplexing the data with data from other channels.

14. A method as recited in claim 1 , further including redirecting a native API call from the shell VM to the core VM.

15. A method as recited in claim 1 , wherein the segmented VM includes a shell VM, and wherein the shell VM provides the interface buffer.

16. A method as recited in claim 1 , wherein the interface is an interface to a logical channel between the segmented VM and an external application.

17. A method as recited in claim 1 , wherein the shell VM and core VM communicate over a control channel and a data channel.

18. A method as recited in claim 17 , wherein the second selected amount of data is transferred data from the shell VM buffer to the core VM buffer over the data channel.

19. A method as recited in claim 17 , wherein the control channel is used to perform a setup process to create one or more of: the shell VM buffer, the core VM buffer, and the interface buffer.

20. A method as recited in claim 1 , wherein the interface resides in an operating system kernel outside of the shell VM.

21. A method as recited in claim 1 , wherein the interface resides in the shell VM.

22. A method of transmitting data from an application running on a segmented virtual machine (VM), comprising:

opening an interface to a logical channel between the segmented VM and an external data destination, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

writing portions of data to a core VM buffer associated with the core VM of the segmented VM in response to write requests from the application;

transferring a first selected amount of data from the core VM buffer to a shell VM buffer associated with the shell VM of the segmented VM, wherein transferring the first selected amount of data is performed when a timer expires;

transferring a second selected amount of data from the shell VM buffer to an interface buffer; and

transmitting data from the interface buffer to the external data destination.

23. A method as recited in claim 22 , wherein transferring the first selected amount of data is performed periodically.

24. A method as recited in claim 22 , wherein transferring the first selected amount of data is performed when the core VM buffer is full.

25. A method as recited in claim 22 , wherein transferring the first selected amount of data is performed when the interface is being closed.

26. A method as recited in claim 22 , wherein a request to close the interface is complete when all buffered data in the core VM buffer and shell VM buffer is transferred to the interface buffer.

27. A method as recited in claim 22 , wherein a request to close the interface is complete when all buffered data in the core VM buffer, shell VM buffer, and interface buffer is transferred to the external data destination.

28. A method as recited in claim 22 , wherein transferring the first selected amount of data is performed when the amount of data in the core VM buffer equals the amount of available space in the shell VM buffer.

29. A method as recited in claim 22 , wherein the interface is a socket.

30. A method as recited in claim 22 , wherein the interface is a file descriptor.

31. A method as recited in claim 22 , wherein the first selected amount of data is the same as the second selected amount of data.

32. A method as recited in claim 22 , wherein the size of the shell VM buffer and the size of the core VM buffer are equal.

33. A method as recited in claim 22 , wherein the first selected amount is based on the amount of available space in the shell VM buffer.

34. A method as recited in claim 22 , further including sending information about the amount of available space in the shell VM buffer to the core VM.

35. A method as recited in claim 22 , wherein the size of at least one buffer varies with time.

36. A method as recited in claim 22 , wherein transferring data to the shell VM buffer includes aggregating the data with data from other channels.

37. A method as recited in claim 22 , wherein transferring data to the shell VM buffer includes multiplexing the data with data from other channels.

38. A method as recited in claim 22 , wherein the interface is an interface to a logical channel between the segmented VM and an external application.

39. A method as recited in claim 22 , wherein the shell VM and core VM communicate over a control channel and a data channel.

40. A method as recited in claim 39 , wherein the first selected amount of data is transferred data from the core VM buffer to the shell VM buffer over the data channel.

41. A method as recited in claim 39 , wherein the control channel is used to perform a setup process to create one or more of: the shell VM buffer, the core VM buffer, and the interface buffer.

42. A method as recited in claim 22 , wherein the interface resides in an operating system kernel outside of the shell VM.

43. A method as recited in claim 22 , wherein the interface resides in the shell VM.

44. A system for providing data to an application running on a segmented virtual machine (VM), comprising:

a processor configured to:

open an interface to a logical channel between the segmented VM and an external data source, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

transfer data from the external data source to an interface buffer;

transfer a first selected amount of data from the interface buffer to a shell VM buffer associated with the shell VM of the segmented VM;

transfer a second selected amount of data from the shell VM buffer to a core VM buffer associated with the core VM of the segmented VM; and

provide portions of the data from the core VM buffer to the application in response to read requests from the application.

45. A computer program product for providing data to an application running on a segmented virtual machine (VM), the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

opening an interface to a logical channel between the segmented VM and an external data source, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

transferring data from the external data source to an interface buffer;

transferring a first selected amount of data from the interface buffer to a shell VM buffer associated with the shell VM of the segmented VM;

transferring a second selected amount of data from the shell VM buffer to a core VM buffer associated with the core VM of the segmented VM; and

providing portions of the data from the core VM buffer to the application in response to read requests from the application.

46. A system for transmitting data from an application running on a segmented virtual machine (VM), comprising:

a processor configured to:

open an interface to a logical channel between the segmented VM and an external data destination, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

write portions of data to a core VM buffer associated with the core VM of the segmented VM in response to write requests from the application;

transfer a first selected amount of data from the core VM buffer to a shell VM buffer associated with the shell VM of the segmented VM, wherein transferring the first selected amount of data is performed when a timer expires;

transfer a second selected amount of data from the shell VM buffer to an interface buffer; and

transmit data from the interface buffer to the external data destination.

47. A computer program product for transmitting data from an application running on a segmented virtual machine (VM), the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:

opening an interface to a logical channel between the segmented VM and an external data destination, wherein the segmented VM functions as a single VM comprising a core VM configured to perform VM internal execution functionality and a shell VM configured to communicate with the core VM and perform interactions with the external data source over the interface;

writing portions of data to a core VM buffer associated with the core VM of the segmented VM in response to write requests from the application;

transferring a first selected amount of data from the core VM buffer to a shell VM buffer associated with the shell VM of the segmented VM, wherein transferring the first selected amount of data is performed when a timer expires;

transferring a second selected amount of data from the shell VM buffer to an interface buffer; and

transmitting data from the interface buffer to the external data destination.

Assignments (8)
RELEASE OF SECURITY INTERESTS IN PATENTS RECORDED AT REEL/FRAME 052293/0121 Recorded Dec 3, 2025
From: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
To: AZUL SYSTEMS, INC.
Reel/Frame 073466/0064 →
SECURITY INTEREST Recorded Dec 3, 2025
From: AZUL SYSTEMS, INC.
To: ARES CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 073828/0083 →
SECURITY INTEREST Recorded Apr 2, 2020
From: AZUL SYSTEMS, INC.
To: GOLUB CAPITAL LLC, AS COLLATERAL AGENT
Reel/Frame 052293/0121 →
RELEASE OF SECURITY INTEREST Recorded Apr 2, 2020
From: SILICON VALLEY BANK
To: AZUL SYSTEMS, INC.
Reel/Frame 052293/0869 →
RELEASE OF SECURITY INTEREST Recorded Feb 21, 2019
From: PARTNERS FOR GROWTH IV, L.P.
To: AZUL SYSTEMS, INC.
Reel/Frame 048411/0138 →
SECURITY INTEREST Recorded Mar 1, 2016
From: AZUL SYSTEMS, INC.
To: PARTNERS FOR GROWTH IV, L.P.
Reel/Frame 037959/0694 →
SECURITY AGREEMENT Recorded Nov 18, 2009
From: AZUL SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 023538/0316 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 7, 2005
From: TENE, GIL; WOLF, MICHAEL A.; SENGUPTA, ANIRBAN; ANNAMALAI, SIVAKUMAR; SUN, ADRIAN
To: AZUL SYSTEMS, INC.
Reel/Frame 016738/0789 →