file access rates of processes are regulated according to file type. An association table stores entries associating processes to be regulated with specific access rates for various file types. system calls that access files are intercepted, and a system call wrapper executes. The system call wrapper determines the type of file that is being accessed by the process. The system call wrapper examines the association table in order to determine if the calling process is associated with an access rate for the file type being accessed. If so, the system call wrapper regulates access to the file according to the appropriate rate.
|
21. A computer-implemented method for regulating file access rates of processes according to file type, the method comprising:
associating processes with rates for accessing files of specific types;
detecting attempts by processes to access files by intercepting system calls that access files;
determining associated access rates for the types of files being accessed; and
regulating processes to access of the files at the associated rates.
1. A computer-implemented method for regulating file access rates of processes according to file type, the computer-implemented method comprising:
intercepting a system call that attempts to access a file;
determining whether a process that made the intercepted system call is associated with an access rate corresponding to a type of the file being accessed;
in response to the attempt to access the file by the process, determining the associated access rate for the type of the file being accessed; and
regulating the process to access of the file at the determined rate.
10. A computer-readable program product for regulating file rates of processes according to file type, the computer-readable program product comprising:
program code for intercepting a system call that attempts to access a file;
program code for determining whether a process that made the intercepted system call is associated with an access rate corresponding to a type of the file being accessed;
program code for, in response to the attempt to access the file by the process, determining the associated access rate for the type of the file being accessed;
program code for regulating the process to access of the file at the determined rate; and
a computer readable medium on which the program codes are stored.
18. A computer implemented system for regulating file access rates of processes according to file type, the system comprising:
an interception module, for intercepting system calls that access files, the interception module being coupled to a determination module;
at least one system call wrapper, for determining whether a process that made an intercepted system call is associated with an access rate corresponding to a type of the file being accessed, the system call wrapper being coupled to the interception module;
the determination module for, in response to an attempt to access a file by the process, determining the associated access rate for the type of the file being accessed; and
coupled to the determination module, a file access rate regulation module, for regulating the process to access of the file at the determined rate.
2. The method of
storing an association between a selected process and the access rate for at least one file type.
3. The method of
storing the association is performed by a process executing in user address space.
4. The method of
selecting a process to associate with an access rate for at least one file type;
loading the selected process into process address space by a modified loader program; and
storing, by the modified loader program, an association between the selected process and the access rate for at least one file type.
5. The method of
associating at least two different access rates with a single process, each access rate corresponding to a different file type.
6. The method of
associating at least two different access rates with at least two different processes.
7. The method of
in response to the determination that the process is associated with the access rate, regulating the process to access of the file at the associated rate.
9. The method of
associating at least one process with the access rate for at least one file access type.
11. The computer-readable program product of
program code for storing an association between a selected process and an access rate for at least one file type.
12. The non-transitory computer-readable program product medium of
program code for selecting a process to associate with the access rate for at least one file type;
program code for loading the selected process into process address space; and
program code for storing an association between the selected process and the access rate for at least one file type.
13. The non-transitory computer-readable program product medium of
program code for associating at least two different access rates with a single process, each access rate corresponding to a different file type.
14. The non-transitory computer-readable program product medium of
program code for associating at least two different access rates with at least two different processes.
15. The non-transitory computer-readable program product medium of
program code for, in response to the determination that the process is associated with the access rate, regulating the process to access of the file at the associated rate.
16. The non-transitory computer-readable program product medium of
program code for determining the type of the file being accessed.
17. The computer-readable program product of
program code for associating at least one process with the access rate for at least one file type.
19. The computer system of
a selection module for selecting the process to associate with the access rate for at least one file type, the selection module being coupled to the determination module; and
a modified loader program for loading the selected process into process address space, and for storing the association between the selected process and the access rate for at least one file type, the modified loader program being coupled to the selection module.
20. The computer system of
a storage module, for storing the association between a selected process and the access rate for at least one file type, the storage module being coupled to the determination module.
|
This application is a reissue application for U.S. Pat. No. 6,907,421, issued from U.S. patent application Ser. No. 09/572,672 filed on May 16, 2000, which incorporates by reference the entirety of the following patent applications: U.S. patent application Ser. No. 09/500,212, now U.S. Pat. No. 6,560,613 entitled “Disambiguating File Descriptors,” filed on Feb. 8, 2000; U.S. patent application Ser. No. 09/499,098, now U.S. Pat. No. 6,529,985 entitled “Selective Interception of System Calls,” filed on Feb. 4, 2000; and U.S. patent application Ser. No. 09/452,286, now pending entitled “Providing Quality of Service Guarantees to Virtual Hosts,” filed on Nov. 30, 1999. The incorporated applications have the same assignee as the present application.
1. Field of Invention
The present invention relates generally to regulating access rates in a computer system, and specifically to regulating file access rates of software processes according to file type.
2. Background of Invention
Multitasking operating systems such as UNIX® and Microsoft WINDOWS NT®are widely utilized in commercial computing systems. Among their many commercial uses, these operating systems are commonly deployed on Internet and other network server computers. With the popularity and success of the Internet, server computer operating systems are currently of great commercial importance.
One function of a multitasking operating system is to allocate system resources to the multiple software processes that simultaneously execute under the control of the operating system. Control over the allocation of system resources by an operating system is commercially useful for a number of reasons. Multitasking operating system are commonly used on Internet web servers by Internet Service Providers (ISP's). Where an ISP provides host services to multiple customers on a single physical computer, it is desirable to allot to each virtual host a specific amount of computer resources appropriate to the needs of the customer, and preferably based upon the amount paid for the services.
For example, suppose two customers purchase host services from an ISP. The first customer is a large corporation providing financial services to thousands of clients internationally. The financial services host requires fast file access, as well as prompt response time to all client requests. Of course, the first customer is willing to compensate the ISP appropriately for providing such a level of host services. The second customer is a sole proprietorship that sells floral arrangements locally. The second customer has a very limited budget, but only requires minimal computer resources. Clearly, it is desirable for the ISP to allocate different percentages of the system resources to the two separate virtual hosts provided by the ISP for the two separate customers.
In the example above, the ISP may wish to provide the financial services host with the ability to access files at the rate of 1,000 bytes per second, but to allow the florist to access files at the rate of only 150 bytes per second. These different access rates would be based upon the different needs of the two customers, and the corresponding different compensation schemes of each. As multitasking operating systems operate today, it would be impossible for the ISP to regulate the file access rates of the different customers. Each process associated with either virtual host simply accesses the file system at the same unregulated rate, and thus it is impossible for the ISP to guarantee or restrict access rates based upon customer need and corresponding financial arrangement. What is needed is a method that facilitates the regulation of the rate at which individual processes access the file system of a multitasking operating system.
Many commercially popular operating systems such as UNIX® and Microsoft WINDOWS NT® treat communication channels as files. In such an operating system, when a process instructs the operating system to create a communication channel, the operating system returns a file descriptor. The communication channel is subsequently accessed via the file descriptor, in a similar manner as a file stored on media.
Communication channels and files stored on media are inherently different, despite the fact that both are accessed via file descriptors. It is often desirable to for an ISP to allow a single process to access files stored on media at one rate, and to access communication channels at another. For example, a customer of the ISP may need to receive and respond to client requests very quickly, but need only an average access time for files stored on the system storage device(s). Such a customer would require (and be willing to pay for) a fast communication channel access rate, but only need (and be willing to pay for) a slower access rate to files stored on media.
Multitasking operating systems today are not capable of regulating the file access rates of different processes generally, much less facilitating different access rates for specific processes based on file type. Currently, each process accesses both files stored on media and communication channels at unregulated rates, not controlled by the operating system. Thus, it is impossible for the ISP to provide customers with different access rates for files stored on media and for communication channels, based upon customer need and corresponding financial arrangement. What is further needed is a method that not only facilitates the regulation of the rate at which individual processes access the file system of a multitasking operating system, but which also allows processes to be regulated to different access rates for different file types.
It is further desirable to not only be able to set separate access rates for communication channels and files stored on media, but to be able set separate access rates for file types generally. Under some operating systems, entities other than communication channels and files stored on media are treated as files, and hence need separate access rates. For example, under the UNIX® operating system, hardware devices are treated as files. For the same reasons that it is desirable to set separate access rates for communication channels and files stored on media, it is further desirable to be able to set a separate access rate for any type of file. Accordingly, what is needed is a method to set separate access rates for individual processes according to file type.
The present invention allows regulation of the file access rates of processes according to file type. An association data structure stores associations between processes to be regulated and specific access rates for various file types. In order to regulate processes to their associated access rates, system calls that access files are intercepted. When a process to be regulated makes a system call that accesses a file, the system call is intercepted, and a system call wrapper executes instead. The system call wrapper determines the type of file that is being accessed by the process. The system call wrapper examines the association table in order to determine if the calling process is associated with an access rate for that file type. If not, then the process is not to be regulated for that file type, in which case the system call wrapper simply allows the file access to proceed. Otherwise, the system call wrapper regulates the rate of the access to the file according to the appropriate rate.
The features and advantages described in this summary and the following detailed description are not all-inclusive, and particularly, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter.
The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
Preferably, a data structure for storing associations 129 between processes 107 and access rates for file types is inserted into the operating system 117. In one embodiment, the data structure is an association table 127, but in other embodiments other data structures are utilized, for example a linked list. In one embodiment, the association table 127 (or other data structure) is dynamically loaded into the operating system kernel 109, while the kernel 109 is active. In another embodiment, the association table 127 is stored in user address space 103. The maintenance and use of the association table 127 is discussed in detail below.
In order to regulate file access rates, system calls 115 that access files are intercepted. A system call wrapper 111 is utilized in order to intercept system calls 115. In one embodiment, the system call wrapper 111 is dynamically loaded into the operating system kernel 109, while the kernel 109 is active. In another embodiment, the system call wrapper is loaded in user address space 103. The system call wrapper 111 is preferably in the form of object code, the functional features of which are described in detail below.
Pointers 114 to system calls 115 are located in an operating system call vector table 113. It is to be understood that the term “system call vector table” as used herein denotes an area in operating system address space 105 in which there are stored the addresses of system calls. In the UNIX® operating system, this part of the operating system is called the “system call vector table,” and that term is used in this specification. Other operating systems employ different terminology to denote the sane system component. A system call vector table by any other name is still within the scope of the present invention.
A copy 116 is made of a pointer 114 to each system call 115 to be intercepted. These copies 116 of pointers 114 are preferably stored in operating system address space 105, but in an alternative embodiment are stored in user address space 103. Once the copies 116 have been made and saved, the pointers 114 in the system call vector table 113 to the system calls 115 to be intercepted are replaced with pointers 118 to the system call wrapper 111, such that when a system call 115 to be intercepted is made, the system call wrapper 111 executes instead. In one embodiment, this copying, storing, and replacing of pointers is performed by the system call wrapper 111. In other embodiments, copying, storing, and replacing of pointers is performed by a pointer management module executing in either operating system address space 105 or user address space 103 as desired. The pointer management module can either be a stand alone program, or a component of a larger application program as desired.
Executing alternative code when a system call 115 is made comprises intercepting the system call 115. The steps of inserting a system call wrapper 111 into the operating system 117, making a copy 116 of an operating system pointer 114 to a system call 115, and replacing the operating system pointer 114 with a pointer 118 to the system call wrapper 111 facilitate interception of a system call 115. When a system call 115 to be intercepted is made, the operating system 117 uses the pointer 118 in the system call vector table 113 to the system call wrapper 111 to execute the system call wrapper 111.
It is to be understood that only system calls 115 that access files need be intercepted, and thus only pointers 114 to system calls 115 to be intercepted are replaced with pointers 118 to the system call wrapper 111. Pointers 114 to system calls 115 which are not to be intercepted are not replaced. Thus, when a non-intercepted system call 115 is made, the system call 115 executes, not the system call wrapper 111.
In one embodiment, a single system call wrapper 111 is loaded into operating system address space 105. Thus, whenever any process 107 makes a system call 115 to be intercepted, the system call wrapper 111 executes. In another embodiment, techniques described in the “Selective Interception of System Calls” application are used to associate a specific system call wrapper 111 with each process to be regulated.
Processes 107 execute in user address space 103 under control of the operating system 117, and make system calls 115. When a process makes a system call 115 that accesses a file, the system call wrapper 111 determines the type of the file being accessed. The system call wrapper 111 also examines the association table 127 to determine whether the process 107 that made the system call 115 is associated with an access rate for that file type. If so, the system call wrapper 111 regulates the file access rate appropriately. Otherwise, the access is allowed to proceed normally. Note that even in the embodiment in which processes 107 to be regulated are associated with individual system call wrappers 111, the system call wrapper still determines if the process 107 is associated with a rate for the file type being accessed, because an individual process 107 may be regulated for some file types and not for others.
The access rate regulator program 201 modifies the operating system 117 of the computer to include the association table 127. Preferably, the regulator program 201 loads the association table 127 into the kernel 109 of the operating system 117 while the kernel is active.
For each process 107 to be regulated, the regulator program 201 stores, in the association table 127, an association 129 between the process 107 and an access rate for at least one file type. For example, suppose a process 107 associated with a financial services host is to be regulated to 1,000 bytes per second for files stored on media, and to 1,400 bytes per second for communication channels. The regulator program 201 would store two associations for the process 107, the first indicating the access rate for files stored on media (1,000 bytes per second), and the second the access rate for communication channels (1,400 bytes per second). Of course, the regulator program 201 can add, modify, and delete associations 129 from the association table 127, as desired.
A loader program is an operating system utility that is used to execute computer programs that are stored on static media. Typically, a loader program loads an executable image from static media into user address space 103 of computer memory 101, and then initiates execution of the loaded image by transferring execution to the first instruction thereof.
Like a standard loader program, the modified loader 301 loads executable images from static media into user address space 103. Additionally, the modified loader program 301 stores, in the association table 127, at least one association 129 between the process 107 and a file access rate. Thus, whenever a process 107 to be regulated is loaded, the association table 127 is updated as needed.
In other embodiments, in addition to storing associations, the modified loader program 301 uses methodology described in detail in the “Selective Interception of System Calls” application in order to associate an individual system call wrapper 111 with the loaded process 107. In different embodiments, the system call wrapper 111 associated with the process is loaded into process address space of the process, user address space 103, or operating system address space 105 as described in the “Selective Interception of System Calls” application. In each of these embodiments, whenever the process 107 makes a system call 115 to be intercepted (i.e., a system call 115 that accesses a file) the system call wrapper 111 associated with the process 107 executes, and proceeds to manage the regulation of the file access rate. Regulation of file access rate by system call wrappers 111 generally is discussed in detail below.
When a system call wrapper 111 executes, the system call wrapper determines the type of the file being accessed. Once the file type has been determined, the system call wrapper 111 examines the association table 127 to determine whether the process 107 that made the system call 115 is associated with an access rate for that file type. If so, the system call wrapper 111 regulates the file access rate appropriately. Otherwise, access of files of that type by the process 107 is not to be regulated, so the access is allowed to proceed normally. In one embodiment, the determination is made using methodology described in the “Disambiguating File Descriptors” application. Other techniques such as file extension or file name can also be used as desired.
Many techniques for regulating access rate are known. In one embodiment, the file access rate regulation module 401 uses a leaky-bucket regulator to regulate the access rate. A leaky-bucket regulator is one specific example of a technique for regulating access rates. A leaky-bucket regulator is described in An Engineering Approach to Computer Networking, Srinivasan Keshav, 1997, Addison Wesley, Chapter 7, at pp 403-405, which is incorporated herein by reference.
Data arrives at the regulator 501 as input 507 from a source. A test module 509 examines the bucket 505, to determine the sum of the sizes of the tokens 503 therein. The regulator 501 only sends the data as output to a destination 511 if the sum equals or exceeds the size of the data. When data is sent as output 511, the regulator 501 removes tokens 503 corresponding to the output 511 size from the token bucket 505.
If the sum is less than the size of the input 507, the input 507 is held as stored data 513 in a data buffer 515. Once the bucket 505 contains sufficient tokens 503, the stored data 513 is sent as output 511.
A leaky-bucket regulator 501 limits the size of a burst of output 511 to a little more D. The size can be slightly greater than D because tokens 503 may be added to the bucket 505 while output 511 equal in size to D is being sent. Over the long term, the rate at which output 511 is sent by the regulator 501 is limited by the rate R at which tokens 503 are added to the bucket 505. Thus, the leaky-bucket regulator 501 can be used to regulate a process 107 to an access rate for a file type by setting R to that access rate.
For example, suppose the system call wrapper 111 determines that the file access write for a process 107 is 1,000 bytes per second. The system call wrapper passes the rate to the leaky-bucket regulator 501, which proceeds to set R to the rate. Thus, the regulator 501 adds 1,000 byte tokens 503 to a bucket 505 at a rate of once per second. The system call wrapper 111 then routes the communication between the process 107 and the file through the regulator 501, which regulates the access rate to 1,000 bytes per second.
Note that if the process 107 is writing data to a file 403, the input to the file 405 becomes the input 507 to the leaky bucket regulator 501, and the output 511 from the leaky bucket regulator 501 is sent to the file 403. On the other hand, if the process 107 is reading data from a file 403, the output from the file 407 becomes the input 507 to the leaky bucket regulator 501, and the output 511 from the leaky bucket regulator 501 is sent to the process 107.
In other embodiments, other access rate techniques are employed by the file access rate regulation module 401, for example moving average, jumping average, or peak rate.
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular capitalization or naming of the modules, protocols, features, attributes or any other aspect is not mandatory or significant, and the mechanisms that implement the invention or its features may have different names or formats. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.
Sharma, Rosen, Keshav, Srinivasan
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
3377624, | |||
4177510, | Nov 30 1973 | Compagnie Internationale pour l'Informatique, CII Honeywell Bull | Protection of data in an information multiprocessing system by implementing a concept of rings to represent the different levels of privileges among processes |
5189667, | Mar 01 1990 | Kabushiki Kaisha Toshiba | Method and apparatus for controlling call processing based upon load conditions |
5212793, | Sep 04 1991 | International Business Machines Corporation | Generic initiators |
5226160, | Jul 18 1989 | Visage | Method of and system for interactive video-audio-computer open architecture operation |
5249290, | Feb 22 1991 | AT&T Bell Laboratories | Method of and apparatus for operating a client/server computer network |
5263147, | Mar 01 1991 | Hughes Training, Inc. | System for providing high security for personal computers and workstations |
5279039, | Oct 11 1989 | Three-dimensional drawing device | |
5325530, | Jan 29 1993 | International Business Machines Corporation | Controller for sequential programming tools executed in a parallel computing environment |
5437032, | Nov 04 1993 | International Business Machines Corporation | Task scheduler for a miltiprocessor system |
5528753, | Jun 30 1994 | International Business Machines Corporation | System and method for enabling stripped object software monitoring in a computer system |
5566334, | Jun 12 1987 | BMC Software, Inc. | Method for processing interrupt requests in a computer system operating environment having different types of supervisor programs concerned with specified types of interrupt events |
5572680, | Dec 18 1992 | Fujitsu Limited | Method and apparatus for processing and transferring data to processor and/or respective virtual processor corresponding to destination logical processor number |
5584023, | Dec 27 1993 | OMNISECURE, INC | Computer system including a transparent and secure file transform mechanism |
5603020, | Oct 08 1993 | Fujitsu Limited | Method for detecting file names by informing the task of the identification of the directory antecedent to the file |
5615400, | Jun 30 1993 | Apple Inc | System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers |
5623492, | Mar 24 1995 | Qwest Communications International Inc | Methods and systems for managing bandwidth resources in a fast packet switching network |
5636371, | Jun 07 1995 | Bull HN Information Systems Inc.; BULL HN INFORMATION SYSTEMS INC | Virtual network mechanism to access well known port application programs running on a single host system |
5640595, | Jun 29 1993 | International Business Machines Corporation | Multimedia resource reservation system with graphical interface for manual input of resource reservation value |
5692047, | Dec 08 1995 | Oracle America, Inc | System and method for executing verifiable programs with facility for using non-verifiable programs from trusted sources |
5706097, | Sep 13 1996 | Eastman Kodak Company | Index print with a digital recording medium containing still images, motion sequences, and sound sequences |
5706453, | Feb 06 1995 | Intelligent real-time graphic-object to database linking-actuator for enabling intuitive on-screen changes and control of system configuration | |
5708774, | Jul 23 1996 | International Business Machines Corporation | Automated testing of software application interfaces, object methods and commands |
5719854, | Nov 23 1994 | Alcatel-Lucent USA Inc | Efficiently providing multiple grades of service with protection against overloads in shared resources |
5727147, | Dec 08 1995 | Oracle America, Inc | System and method for resolving symbolic references to externally located program files |
5727203, | Mar 31 1995 | Sun Microsystems, Inc. | Methods and apparatus for managing a database in a distributed object operating environment using persistent and transient cache |
5742772, | Nov 17 1995 | Alcatel Lucent | Resource management system for a broadband multipoint bridge |
5748614, | Jun 09 1995 | Siemens Aktiengesellschaft | Method for scheduling message cells leaving an ATM node |
5752003, | Jul 14 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Architecture for managing traffic in a virtual LAN environment |
5761477, | Dec 04 1995 | Microsoft Technology Licensing, LLC | Methods for safe and efficient implementations of virtual machines |
5764889, | Sep 26 1996 | International Business Machines Corporation | Method and apparatus for creating a security environment for a user task in a client/server system |
5781550, | Feb 02 1996 | Hewlett Packard Enterprise Development LP | Transparent and secure network gateway |
5799173, | Jul 25 1994 | International Business Machines Corporation | Dynamic workload balancing |
5809527, | Dec 23 1993 | Unisys Corporation | Outboard file cache system |
5828893, | Dec 24 1992 | Freescale Semiconductor, Inc | System and method of communicating between trusted and untrusted computer systems |
5838686, | Apr 22 1994 | Thomson Consumer Electronics, Inc. | System for dynamically allocating a scarce resource |
5838916, | Mar 14 1996 | RPX CLEARINGHOUSE LLC | Systems and methods for executing application programs from a memory device linked to a server |
5842002, | Jun 01 1994 | Quantum Leap Innovations, Inc. | Computer virus trap |
5845129, | Mar 22 1996 | Philips Electronics North America Corporation; Philips Electronics North America Corp | Protection domains in a single address space |
5850399, | Mar 27 1998 | RPX Corporation | Hierarchical packet scheduling method and apparatus |
5860004, | Jul 03 1996 | Oracle America, Inc | Code generator for applications in distributed object systems |
5864683, | Oct 12 1994 | McAfee, LLC | System for providing secure internetwork by connecting type enforcing secure computers to external network for limiting access to data based on user and process access rights |
5889956, | Jul 18 1996 | FUJITSU LIMITED, A JAPANESE CORPORATION | Hierarchical resource management with maximum allowable allocation boundaries |
5889996, | Dec 16 1996 | Oracle International Corporation | Accelerator for interpretive environments |
5892968, | Oct 16 1995 | GOOGLE LLC | Multimedia data transferring method |
5905730, | Mar 27 1998 | RPX Corporation | High speed packet scheduling method and apparatus |
5905859, | Jan 09 1997 | TREND MICRO INCORPORATED | Managed network device security method and apparatus |
5913024, | Feb 09 1996 | McAfee, LLC | Secure server utilizing separate protocol stacks |
5915085, | Feb 28 1997 | International Business Machines Corporation; IBM Corporation | Multiple resource or security contexts in a multithreaded application |
5915095, | Aug 08 1995 | RPX Corporation | Method and apparatus for balancing processing requests among a plurality of servers based on measurable characteristics off network node and common application |
5918018, | Feb 09 1996 | McAfee, LLC | System and method for achieving network separation |
5920699, | Nov 07 1996 | Hewlett Packard Enterprise Development LP | Broadcast isolation and level 3 network switch |
5933603, | Oct 27 1995 | EMC Corporation | Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location |
5937159, | Mar 28 1997 | DATA GENERAL CORP | Secure computer system |
5944795, | Jul 12 1996 | HANGER SOLUTIONS, LLC | Client-server architecture using internet and guaranteed quality of service networks for accessing distributed media sources |
5953685, | Nov 26 1997 | Intel Corporation | Method and apparatus to control core logic temperature |
5956481, | Feb 06 1997 | Microsoft Technology Licensing, LLC | Method and apparatus for protecting data files on a computer from virus infection |
5961582, | Oct 25 1994 | Xylon LLC | Distributed and portable execution environment |
5961583, | Nov 22 1996 | International Business Machines Corporation | Method and system for using the event wait list anchor as a lock for events |
5978373, | Jul 11 1997 | AG COMMUNICATION SYSTEMS CORPORATION, A CORPORATION OF DELAWARE | Wide area network system providing secure transmission |
5982748, | Oct 03 1996 | AVAYA Inc | Method and apparatus for controlling admission of connection requests |
5987242, | Jan 19 1996 | Bentley Systems, Incorporated | Object-oriented computerized modeling system |
5987524, | Apr 17 1997 | Fujitsu Limited | Local area network system and router unit |
5987608, | May 13 1997 | Meta Platforms, Inc | Java security mechanism |
5991812, | Jan 24 1997 | FONEWEB, INC | Methods and apparatus for fair queuing over a network |
5999963, | Nov 07 1997 | Alcatel Lucent | Move-to-rear list scheduling |
6016318, | Jul 12 1996 | NEC Corporation | Virtual private network system over public mobile data network and virtual LAN |
6018527, | Aug 13 1996 | RPX CLEARINGHOUSE LLC | Queue service interval based cell scheduler with hierarchical queuing configurations |
6023721, | May 14 1997 | Citrix Systems, Inc. | Method and system for allowing a single-user application executing in a multi-user environment to create objects having both user-global and system global visibility |
6038608, | Nov 25 1996 | NEC Corporation | Virtual LAN system |
6038609, | Apr 04 1997 | Telefonaktiebolaget LM Ericsson | Method, communication network and service access interface for communications in an open system interconnection environment |
6047325, | Oct 24 1997 | Network device for supporting construction of virtual local area networks on arbitrary local and wide area computer networks | |
6055617, | Aug 29 1997 | International Business Machines Corporation | Virtual address window for accessing physical memory in a computer system |
6055637, | Sep 27 1996 | Hewlett Packard Enterprise Development LP | System and method for accessing enterprise-wide resources by presenting to the resource a temporary credential |
6061349, | Nov 03 1995 | Cisco Technology, Inc | System and method for implementing multiple IP addresses on multiple ports |
6065118, | Aug 09 1996 | Citrix Systems, Inc | Mobile code isolation cage |
6075791, | Oct 28 1997 | WSOU Investments, LLC | System for guaranteeing data transfer rates and delays in packet networks |
6075938, | Jun 10 1997 | The Board of Trustees of the Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
6078929, | Jun 07 1996 | DROPBOX, INC | Internet file system |
6078957, | Nov 20 1998 | CHECK POINT SOFTWARE TECHNOLOGIES INC | Method and apparatus for a TCP/IP load balancing and failover process in an internet protocol (IP) network clustering system |
6086623, | Jun 30 1997 | Oracle America, Inc | Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system |
6092178, | Sep 03 1998 | Oracle America, Inc | System for responding to a resource request |
6094674, | May 06 1994 | Hitachi, Ltd. | Information processing system and information processing method and quality of service supplying method for use with the system |
6101543, | Oct 25 1996 | Hewlett Packard Enterprise Development LP | Pseudo network adapter for frame capture, encapsulation and encryption |
6108701, | Jul 20 1998 | THE CHASE MANHATTAN BANK, AS COLLATERAL AGENT | Soft switch extension for internet protocol applications |
6108759, | Feb 23 1995 | Veritas Technologies LLC | Manipulation of partitions holding advanced file systems |
6122673, | Jul 22 1998 | Ericsson AB | Port scheduler and method for scheduling service providing guarantees, hierarchical rate limiting with/without overbooking capability |
6154776, | Mar 20 1998 | Oracle America, Inc | Quality of service allocation on a network |
6154778, | May 19 1998 | Hewlett Packard Enterprise Development LP | Utility-based multi-category quality-of-service negotiation in distributed systems |
6161139, | Jul 10 1998 | ENTRUST, INC | Administrative roles that govern access to administrative functions |
6167520, | Nov 08 1996 | FINJAN LLC | System and method for protecting a client during runtime from hostile downloadables |
6172981, | Oct 30 1997 | International Business Machines Corporation | Method and system for distributing network routing functions to local area network stations |
6189046, | Mar 27 1997 | Hewlett Packard Enterprise Development LP | Mechanism and method for merging cached location information in a distributed object environment |
6192389, | Mar 28 1997 | International Business Machines Corporation | Method and apparatus for transferring file descriptors in a multiprocess, multithreaded client/server system |
6192512, | Sep 24 1998 | TREND MICRO INCORPORATED | Interpreter with virtualized interface |
6230203, | Oct 20 1995 | Scientific-Atlanta, LLC | System and method for providing statistics for flexible billing in a cable environment |
6240463, | Nov 24 1998 | Lucent Technologies Inc | Router placement methods and apparatus for designing IP networks with performance guarantees |
6243825, | Apr 17 1998 | Microsoft Technology Licensing, LLC | Method and system for transparently failing over a computer name in a server cluster |
6247057, | Oct 22 1998 | Microsoft Technology Licensing, LLC | Network server supporting multiple instance of services to operate concurrently by having endpoint mapping subsystem for mapping virtual network names to virtual endpoint IDs |
6247068, | Mar 07 1997 | Advanced Micro Devices Inc. | Winsock-data link library transcoder |
6259699, | Dec 30 1997 | WSOU Investments, LLC | System architecture for and method of processing packets and/or cells in a common switch |
6266678, | Dec 31 1998 | GOOGLE LLC | System and method for dynamically viewing contents of a data file |
6269404, | Jul 14 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Virtual network architecture for connectionless LAN backbone |
6279039, | Apr 03 1996 | NCR Voyix Corporation | Resource management method and apparatus for maximizing multimedia performance of open systems |
6279040, | Dec 06 1995 | Industrial Technology Research Institute | Scalable architecture for media-on demand servers |
6282581, | Mar 27 1997 | Hewlett-Packard Company; HEWLETT-PACKARD DEVELOPMENT COMPANY, L P ; Agilent Technologies, Inc | Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment |
6282703, | Oct 29 1998 | International Business Machines Corporation | Statically linking an application process with a wrapper library |
6286047, | Sep 10 1998 | Viavi Solutions Inc | Method and system for automatic discovery of network services |
6298479, | May 29 1998 | Oracle America, Inc | Method and system for compiling and linking source files |
6308216, | Nov 14 1997 | International Business Machines Corporation | Service request routing using quality-of-service data and network resource information |
6314558, | Aug 27 1996 | JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT | Byte code instrumentation |
6327622, | Sep 03 1998 | Oracle America, Inc | Load balancing in a network environment |
6336138, | Aug 25 1998 | Hewlett Packard Enterprise Development LP | Template-driven approach for generating models on network services |
6351775, | May 30 1997 | SAP SE | Loading balancing across servers in a computer network |
6353616, | May 21 1998 | Lucent Technologies Inc | Adaptive processor schedulor and method for reservation protocol message processing |
6363053, | Feb 08 1999 | UNILOC 2017 LLC | Method and apparatus for measurement-based conformance testing of service level agreements in networks |
6366958, | Oct 21 1996 | International Business Machines Corporation | NETBIOS protocol support for a DCE RPC mechanism |
6370583, | Aug 17 1998 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for portraying a cluster of computer systems as having a single internet protocol image |
6374292, | Jul 20 1999 | Oracle America, Inc | Access control system for an ISP hosted shared email server |
6381228, | Jan 15 1999 | Northrop Grumman Systems Corporation | Onboard control of demand assigned multiple access protocol for satellite ATM networks |
6385638, | Sep 04 1997 | HANGER SOLUTIONS, LLC | Processor resource distributor and method |
6385722, | Jan 27 2000 | Oracle America, Inc | Method, system, and article of manufacture for limiting access to program files in a shared library file |
6389448, | Dec 06 1999 | WARP Solutions, Inc.; WARP SOLUTIONS, INC | System and method for load balancing |
6393484, | Apr 12 1999 | International Business Machines Corp. | System and method for controlled access to shared-medium public and semi-public internet protocol (IP) networks |
6425003, | Jan 22 1999 | Cisco Technology, Inc | Method and apparatus for DNS resolution |
6430622, | Sep 22 1999 | International Business Machines Corporation | Methods, systems and computer program products for automated movement of IP addresses within a cluster |
6434631, | Oct 15 1999 | WSOU Investments, LLC | Method and system for providing computer storage access with quality of service guarantees |
6434742, | May 10 1999 | Alcatel Lucent | Symbol for automatically renaming symbols in files during the compiling of the files |
6438134, | Aug 19 1998 | Alcatel-Lucent Canada Inc | Two-component bandwidth scheduler having application in multi-class digital communications systems |
6442164, | Jun 03 1999 | Fujitsu Limited | Method and system for allocating bandwidth and buffer resources to constant bit rate (CBR) traffic |
6449647, | Aug 01 1997 | Cisco Technology, Inc | Content-aware switching of network packets |
6449652, | Jan 04 1999 | EMC IP HOLDING COMPANY LLC | Method and apparatus for providing secure access to a computer system resource |
6457008, | Aug 28 1998 | Oracle International Corporation | Pluggable resource scheduling policies |
6463454, | Jun 17 1999 | Level 3 Communications, LLC | System and method for integrated load distribution and resource management on internet environment |
6463459, | Jan 22 1999 | JPMORGAN CHASE BANK, N A , AS SUCCESSOR AGENT | System and method for executing commands associated with specific virtual desktop |
6466985, | Apr 10 1998 | AT&T Corp | Method and apparatus for providing quality of service using the internet protocol |
6470398, | Aug 21 1996 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for supporting a select () system call and interprocess communication in a fault-tolerant, scalable distributed computer environment |
6484173, | Feb 07 2000 | EMC IP HOLDING COMPANY LLC | Controlling access to a storage device |
6487578, | Sep 29 1997 | Intel Corporation | Dynamic feedback costing to enable adaptive control of resource utilization |
6487663, | Oct 19 1998 | Intel Corporation | System and method for regulating the transmission of media data |
6490670, | Apr 24 1998 | International Business Machines Corporation | Method and apparatus for efficiently allocating objects in object oriented systems |
6496847, | May 15 1998 | VMware, Inc.; VMWARE, INC | System and method for virtualizing computer systems |
6499137, | Oct 02 1998 | Microsoft Technology Licensing, LLC | Reversible load-time dynamic linking |
6499652, | Oct 05 1999 | CONTINENTAL DATALABEL, INC | Envelope assembly having fold lines |
6529950, | Jun 17 1999 | International Business Machines Corporation | Policy-based multivariate application-level QoS negotiation for multimedia services |
6529985, | Feb 04 2000 | CUFER ASSET LTD L L C | Selective interception of system calls |
6542167, | Jan 28 2000 | WIND RIVER SYSTEMS, INC | System and method for flexible software linking |
6553413, | Jul 14 1998 | Massachusetts Institute of Technology | Content delivery network using edge-of-network servers for providing content delivery to a set of participating content providers |
6560613, | Feb 08 2000 | DATACLOUD TECHNOLOGIES, LLC | Disambiguating file descriptors |
6578055, | Jun 05 2000 | International Business Machines Corporation | Methods, system and computer program products for mirrored file access through assuming a privileged user level |
6578068, | Aug 31 1999 | Accenture Global Services Limited | Load balancer in environment services patterns |
6580721, | Aug 11 1998 | Apple Inc | Routing and rate control in a universal transfer mode network |
6590588, | May 29 1998 | Qualcomm Incorporated | Wireless, radio-frequency communications using a handheld computer |
6622159, | Jun 30 1999 | International Business Machines Corporation | Method, apparatus and computer program product for automatically restarting an RPC server without losing client RPC calls |
6647422, | Feb 26 1996 | Network Engineering Technologies, Inc. | Web server employing multi-homed, modular framework |
6658571, | Feb 09 1999 | JPMORGAN CHASE BANK, N A ; MORGAN STANLEY SENIOR FUNDING, INC | Security framework for dynamically wrapping software applications executing in a computing system |
6691312, | Mar 19 1999 | MASSACHUSETTS, UNIVERSITY OF | Multicasting video |
6711607, | Feb 04 2000 | SERVSTOR TECHNOLOGIES, LLC | Dynamic scheduling of task streams in a multiple-resource system to ensure task stream quality of service |
6723568, | Jun 11 1999 | MSP CORPORATION | Method and apparatus for cascade impactor testing of inhalable drug therapies recovery for chemical analysis |
6725456, | Nov 29 1999 | Alcatel Lucent | Methods and apparatus for ensuring quality of service in an operating system |
6732211, | Sep 18 2000 | CUFER ASSET LTD L L C | Intercepting I/O multiplexing operations involving cross-domain file descriptor sets |
6754716, | Feb 11 2000 | UNWIRED BROADBAND, INC | Restricting communication between network devices on a common network |
6760775, | Mar 05 1999 | AT&T Corp | System, method and apparatus for network service load and reliability management |
6779016, | Aug 23 1999 | Oracle America, Inc | Extensible computing system |
6785728, | Mar 10 1997 | DROPBOX, INC | Distributed administration of access to information |
6820117, | Oct 18 1999 | COBALT NETWORKS, INC | Bandwidth management |
6859835, | Oct 05 1999 | CA, INC | Virtual port multiplexing |
6907421, | May 16 2000 | DATACLOUD TECHNOLOGIES, LLC | Regulating file access rates according to file type |
6909691, | Aug 07 2000 | SERVSTOR TECHNOLOGIES, LLC | Fairly partitioning resources while limiting the maximum fair share |
6912590, | Dec 18 1998 | Telefonaktiebolaget LM Ericsson | Single IP-addressing for a telecommunications platform with a multi-processor cluster using a distributed socket based internet protocol (IP) handler |
6948003, | Mar 15 2000 | Intellectual Ventures I LLC | Enabling a service provider to provide intranet services |
6968389, | Jul 17 2001 | Cisco Technology, Inc | System and method for qualifying requests in a network |
6976258, | Nov 30 1999 | HANGER SOLUTIONS, LLC | Providing quality of service guarantees to virtual hosts |
6981029, | Jul 17 2001 | Cisco Technology, Inc | System and method for processing a request for information in a network |
6985937, | May 11 2000 | Intellectual Ventures I LLC | Dynamically modifying the resources of a virtual server |
7117354, | Jul 20 2000 | International Business Machines Corporation | Method and apparatus for allowing restarted programs to use old process identification |
7143024, | Jul 07 2000 | CUFER ASSET LTD L L C | Associating identifiers with virtual processes |
7219354, | Dec 22 2000 | ALTO DYNAMICS, LLC | Virtualizing super-user privileges for multiple virtual processes |
7343421, | Feb 14 2000 | LONGHORN HD LLC | Restricting communication of selected processes to a set of specific network addresses |
20030061338, | |||
JP64002145, | |||
RE42214, | Nov 30 1999 | HANGER SOLUTIONS, LLC | Providing quality of service guarantees to virtual hosts |
WO9939261, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 20 2001 | KESHAV, SRINIVASAN | Ensim Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025626 | /0729 | |
May 03 2001 | SHARMA, ROSEN | Ensim Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025626 | /0729 | |
Jun 07 2007 | Ensim Corporation | DIGITAL ASSET ENTERPRISES L L C | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 025626 | /0804 | |
Jun 14 2007 | Digital Asset Enterprises, L.L.C. | (assignment on the face of the patent) | / | |||
Aug 12 2015 | DIGITAL ASSET ENTERPRISES, L L C | CUFER ASSET LTD L L C | MERGER SEE DOCUMENT FOR DETAILS | 037118 | /0001 | |
Oct 31 2019 | CUFER ASSET LTD L L C | INTELLECTUAL VENTURES ASSETS 151 LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 050915 | /0089 | |
Nov 15 2019 | INTELLECTUAL VENTURES ASSETS 151 LLC | DATACLOUD TECHNOLOGIES, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 051409 | /0324 |
Date | Maintenance Fee Events |
Nov 28 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jan 21 2017 | 4 years fee payment window open |
Jul 21 2017 | 6 months grace period start (w surcharge) |
Jan 21 2018 | patent expiry (for year 4) |
Jan 21 2020 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 21 2021 | 8 years fee payment window open |
Jul 21 2021 | 6 months grace period start (w surcharge) |
Jan 21 2022 | patent expiry (for year 8) |
Jan 21 2024 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 21 2025 | 12 years fee payment window open |
Jul 21 2025 | 6 months grace period start (w surcharge) |
Jan 21 2026 | patent expiry (for year 12) |
Jan 21 2028 | 2 years to revive unintentionally abandoned end. (for year 12) |