US6272518B1 - System and method for porting a multithreaded program to a job model - Google Patents
System and method for porting a multithreaded program to a job model Download PDFInfo
- Publication number
- US6272518B1 US6272518B1 US09/135,253 US13525398A US6272518B1 US 6272518 B1 US6272518 B1 US 6272518B1 US 13525398 A US13525398 A US 13525398A US 6272518 B1 US6272518 B1 US 6272518B1
- Authority
- US
- United States
- Prior art keywords
- job
- thread
- jobs
- worker
- line
- 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.)
- Expired - Fee Related
Links
- 238000000034 methods Methods 0 claims description 20
- 230000000875 corresponding Effects 0 claims description 3
- 239000002609 media Substances 0 claims description 2
- 230000000694 effects Effects 0 claims 2
- 238000004519 manufacturing process Methods 0 claims 2
- 239000011800 void materials Substances 0 description 33
- 239000000872 buffers Substances 0 description 17
- 230000015654 memory Effects 0 description 9
- 238000006467 substitution reaction Methods 0 description 5
- 239000010410 layers Substances 0 description 3
- 230000002633 protecting Effects 0 description 3
- 239000008186 active pharmaceutical agents Substances 0 description 2
- 238000001914 filtration Methods 0 description 2
- 230000004044 response Effects 0 description 2
- 230000007958 sleep Effects 0 description 2
- 230000001276 controlling effects Effects 0 description 1
- 230000004048 modification Effects 0 description 1
- 238000006011 modification Methods 0 description 1
- 230000003287 optical Effects 0 description 1
- 230000004224 protection Effects 0 description 1
- 238000004088 simulation Methods 0 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Abstract
Description
U.S. patent applications Ser. No. 09/135,102, filed Jan. 30, 2001, now U.S. Pat. No. 6,182,228 entitled “System and Method for Very Fast IP Packet Filtering”, and Ser. No. 09/135,148, filed Aug. 17, 1998 entitled “System and Method for IP Network Address Translation and IP Filtering With Dynamic Address Resolution”, assignee docket numbers EN998066 and EN998067, respectively, filed concurrently herewith are assigned to the same assignee hereof and contain subject matter related, in certain respect, to the subject matter of the present application. The above identified patent applications are incorporated herein by reference.
1. Technical Field of the Invention
This invention pertains to a method and system for porting multi-threaded application programs to a computer system supporting a job model. In particular, this invention provides for globalizing variables and wrappering job related commands thereby to function as thread function calls.
2. Background Art
In a prior art multithreaded application based on the POSIX draft standard 1003.4, threads process multiple execution environments with sharing of data as global values among threads.
Job models, such as the ILE C environment on the IBM AS/400 System, process work for application programs, but typically do not share data across jobs. There is a need in the art for a system and method for adapting code based on threading model concepts yet interfacing with an underlying job model.
It is an object of the invention to provide a system and method for implementing a job-based application on a threaded model.
It is a further object of the invention to provide a system and method for enabling sharing of data as global values among threads within a job model.
It is a further object of the invention to provide an HTTP server implemented as jobs built on a threaded model.
In accordance with the invention, a method is provided for porting a multi-threaded program to a job model, comprising the steps of globalizing data that need to be shared between different jobs by storing data in a user space accessible to all of the jobs; and replacing thread controls by job controls, including replacing thread function calls by job commands wrappered to appear as functions.
Other features and advantages of this invention will become apparent from the following detailed description of the presently preferred embodiment of the invention, taken in conjunction with the accompanying drawings.
FIG. 1 is a high level system diagram illustrating server threading.
FIG. 2 is a high level flow diagram illustrating server threading flow.
FIG. 3 illustrates the preferred embodiment of the invention for globalizing variables and wrappering jobs for use in an application program based upon a thread model.
FIG. 4 illustrates the job structure of the HTTP server of the preferred embodiment of the invention.
The invention relates to running a thread model on top of a job model. In a preferred embodiment of the invention, an HTTP server 190 is implemented as IBM System AS/400 jobs built on a threaded HTTP server.
In building a job model from a threading model, first the data that needs to be shared between the main server thread (parent job) and the worker threads (child jobs) are globalized. This is accomplished by storing globalized data in a user space that is accessible to all of the jobs. Second, the thread controls are replaced by job controls. This is done by rewriting thread specific function calls such as PthreadCreate, PthreadExit and PthreadMutexLock as AS/400 commands, API calls and MI instructions.
Referring to FIG. 1, in accordance with the Internet connection secure server embodiment of the invention, a server can listen on both a secure port 204 using secure sockets layer (SSL) and a non-secure port 202 using sockets for requests coming from HTTP clients on network 200. When a listening thread 206 detects a request coming into port 202 or 204 from network 200, it passes the socket descriptor for the request off to a worker thread 212 or 214 that is waiting in a thread pool 210 of initialized threads. Worker thread 212 or 214 processes the request and completes the transaction by sending a response back to the HTTP client on network 200. Service threads 220 run in the background to handle server utility functions including alarm 222 and log writer 224.
Referring to FIG. 2 in connection with FIG. 1, as part of initialization, main thread 240 processes configuration file 244 directives. The MinActiveThreads and MaxActiveThreads directives are used to set the boundaries of the pool 210 of available threads that can be used by the server 190. Main program thread 240 initializes thread pool 210 and then uses a thread 202 to bind( ) 260 and listens 262 on an IP address port 202. When server 190 is started with directives normalmode on and sslmode on there will be one thread 206, 262 listening on port 80 (the HTTP default port 202) and one thread 206, 272 listening on port 443 (the HTTPS default port 204). Hereafter, these threads may be referred to as listing threads, or parent threads. HTTP and HTTPS default ports 202, 204 can be overriden with a directives port (for (HTTP) and an sslport (for HTTPS). These threads 206 will listen on all IP addresses defined for this host unless the BindSpecific directive is in configuration file 244 and it contains a valid IP address for this host. Then threads 206 only listen on the ports for that IP address.
When a request comes in on either or both ports 202, 204, the listening thread 262, 272 does an accept 264, 274 and passes the incoming request off to a work thread 266, 276 that comes from thread pool 210. Listening thread 262, 272 then goes back to accepts mode 264, 274. The work thread 266, 276 processes the incoming request and sends a response to the client. When work thread 266, 276 completes its tasks it returns to pool 210 of available threads.
Two service threads 220, including log writer thread 224 and alarm thread 222, are spun off at server 190 initialization and wait in the background until their services are needed.
Log writer routine 224 is spun off in its own thread when server 190 starts. It spends most of its time sleeping, but wakes up periodically to write out to log files 226 anything that needs to be logged. It handles writing to the access and error logs.
At initialization, startup job 240, 250 opens the log files 226 that are specified in configuration directives 244 (or over-rides) and then passes the file descriptors to the log writer thread 224. As is represented by lines 234 and 236, server listening threads 206 and worker threads 210 add log data to log queue 228 for log writer thread 224 to log. When log writer thread 224 wakes up it checks queue 228 for data to be logged. When there is data to be logged, log writer thread 224 locks the queue with a mutually exclusive (mutex) lock on line 218 and, as is represented by line 238, copies the log data from queue 228 into list 216, zeros out queue 228, and then releases mutex 218. Log writer thread 224 can then log the data from list 216 without having other threads 206, 210 blocked from writing to queue 228.
Alarm thread 222 is spun off (spawned) in its own thread when server 190 starts. It spends most of its time sleeping. It wakes up periodically and checks a list of timers 232 that are associated with active work threads 210, such as 266, 268, 276, 278. When a timer 232 expires it indicates that a work thread 210 had a problem completing its task on time. When alarm thread 222 finds an expired timer the timer is removed from the list of timers 232, the outstanding function being processed is terminated, and the socket 202, 204 being used by the request is closed.
Hereafter, when the terms “thread” and “threading” are used they are, generally, referring to a server 190 threading model that is implemented in accordance with the invention within a job model.
Referring to FIG. 3, globalizing and wrappering in accordance with a preferred embodiment of the invention are presented. Application program 100 is based on a thread model, and includes a series of thread creation steps 104, 112 and thread calls 106, 114. Thread X 106 establishes a global variable VAR Y 108, and thread Z 114 requires, as is illustrated at 116, use of that VAR Y. Data area 120 includes a thread ID to job ID mapping table 122, and global variable space 124. Jobs 130, 132 reside outside of data area 120 at locations addressed by pointers 107, 119, respectively.
Variables 124 are globalized by being stored in data area 120, where they are accessible for use by steps 108, 116.
Jobs are wrappered to present themselves to program 100 as though they were threads by responding to create thread steps 104, 112 by mapping, through table 122, the respective thread identifier 105, 117 to corresponding job identifiers 107, 119, and placing in code string 106, 114 code 109, 121 derived from job characteristics 130, 132.
Referring to FIG. 3 in connection with Tables 1 and 2, application program code string 100 is implemented in Table 2 as the ICS server job model; create threads 104 is implemented at Table 2 line 6; pointer 105 to mapping table 122 is implemented at Table 2 line 115; (thread ID X) 106 is implemented at Table 2 line 90; pointers 107, 119 from mapping table 122 to job characteristics 130 is implemented at Table 2 lines 122, 133; VAR Y 108 is implemented at Table 2 lines 108-109; pointers 109, 115 and 121 from job characteristics 130, 132 are implemented a Table 2 lines 134-141; ? thread ID X 110 is implemented at Table 2 line 90; pointer 111 to VAR Y 126 is implemented at Table 2 line 110; create threads 112 is implemented at Table 2 line 6; pointer 113 to mapping table 122 is implemented at Table 2 line 115; (thread ID Z) 114 is implemented at Table 2 line 90; VAR Y=? 116 is implemented at Table 2 lines 108, 109; pointer 117 to mapping table 122 is implemented at Table 2 line 115; data area 120 is implemented in Table 2 lines 4, 58, and 90 as PJOBSTRUCT; mapping table 122 is implemented at Table 1 lines 28, 29; pointer 123 to VAR Y=? 116 is implmented at Table 2 line 110; global variables table 124 is implemented at Table 1 line 18; VAR Y entry 126 within table 124 is implemented at Table 1 line 28 ; and job characteristics 130, 132 is implemented as structure _HOTTHREAD at Table 1 line 29 and Table 2 lines 125, 127 and 145.
Referring to FIG. 4, the manner in which the code set forth in Tables 1 through 8A,B, is next described. HTTP server 190 (that is, QTMHHTTP) is set up in block 140 and started in block 142. These steps are implemented by Table 3 lines 21-23. QUSCRTUS 144 is implemented by Table 4 lines 1 through 40. SBM job QTMHHTTP Main 146 is implemented by Table 5. QTMHHTTP 160 is implemented by Table 6B line 1. USRSPC 150 is implemented by Table 6A. Spawn QTMHHTTP SSL 162 is implemented by Table 6B line 17. Spawn QTMHHTTP ALARM 164 is implemented by Table 6B line 27. Spawn QTMHHTTP LOG 166 is implemented by Table 6B line 81. Spawn QTMHHTTP WORKER 168 is implemented by Table 6B line 46. RSLVSP 170, 172, 174, 176, and 178 are implemented by Table 7, which also describes Table 2 line 90. QTMHHTTP SSL 180 is a main( ) routine implemented by Table 6B lines 1 and 17. QTMHHTTP ALARM 182 is a main( ) routine implemented by Table 6B lines 1 and 27. QTMHHTTP LOG 184 is a main( ) routine implemented by Table 6B lines 1 and 81. QTMHHTTP WORKER 186 is a main( ) routine implemented by Table 6B lines 1 and 46.
Referring further to FIG. 4, in operation, in accordance with a specific embodiment of the invention, various AS/400 jobs are started to support an HTTP server 190. The purpose of the jobs is analogous to those of a thread version. For example, a main job 160 is created that will then create additional jobs SSL 180, alarm 182, log 184, and worker 178. Upon properly configuring SSL, a spawn( ) 162 is issued to create job SSL 180 that will then listen 272 on port 204 for https requests. This job SSL 180 becomes a listening, or parent job to, for example, worker jobs 186. In addition, a number of worker jobs 186 are created (spawn 168) that are kept in a pool and at a later time are dispensed as appropriate with units of work (either requests for documents or to execute CGI programs). Finally, spawn log 166 creates log job 184 and spawn alarm 164 creates alarm job 182. USRSPC 150 is used to share global data across these jobs. USRSPC 150 is a system domain object that is uniquely named per server or worker job instance with the instance name and is located in the QHTTP library.
Referring to Table 1, pseudo code (in C-like syntax) sets forth the content of the ICS server thread jobs file thrdjobs.h. This file is included in Table 2 at line 3, and provides various declarations, definitions, and structures used in the server job model, as will be more fully described hereafter.
Referring to Table 2, pseudo code (in C-like syntax) sets forth the ICS server job model. At lines 6 and 7, the function pthread_create( ) is defined. This function pthread_create( ) includes the parameters passed to allow the server job model to simulate the corresponding thread function. This will be done hereafter by spawning the required jobs using the C-language spawn function. At line 58, variables are initialized and space is created in memory for the global variables that need to be shared between listener job 206 and worker jobs 210 and other jobs 220. At line 90, a spawned job (for example, HTTP work thread 1 job 266) identifies the memory location of the listener job (for this example, listen( ) job 262) to enable worker job 266 to access the global variables defined by the listener job. At line 105, * thread_malloc( ) creates a list of worker threads 210 used to dispatch threads using a job model. At lines 115-117, the listener job (say, 262) looks for an idle worker job in list, or pool, 210 and dispatches to that worker job the specific work to be done. In the specific embodiment of this server example, the work being done may be to look up a document the listening thread 262 needs to return to a client (on network 200) that has requested a web page.
Referring to Table 3, high level pseudo code describes create job, the C function main ( ), which calls the various functions discussed in connection with table 2.
Referring to Table 4, high level pseudo code describes the process for creating user space, which is the global shared space needed for sharing global variables.
Referring to Table 5, the C code used to create a batch job to start the server. The parameters defined are those needed to start the job. At line 5 both user( ) and main( ) are named qtmhhttp. Lines 6 and 7 specify that messages out to library qusersys are identified a user identifier of qtmhhttp.
Referring to Table 6A, an expanded version of Table 1 lines 18-22 provides C code definitions for all variables inside global shared space 124 used by all the jobs. Lines 2, 4-8, 242-245, 252 define the most important. Line 2 defines the structure _jobstruct{ }. Lines 4-8 use the C function mutex to define the names of the worker and server jobs, with both having the same name. Lines 242-245 define memory space where unique worker job information is kept. Line 252 defines the name given to structure jobstruct. Line 253 allows other modules access to the unique pointer, pSpacePtr, to jobstruct. Line 254 defines a unique mapping of name jobdata to pointer pSpacePtr.
Referring to Table 6B, C code for the spawn function is provided. This provides a more complete statement of the pseudo code statement of the server job model set forth in Table 2. Spawn is a C language function provided by include file qp0z1170.h.
Referring to Table 7, a high level pseudo code statement is provided for the resolve user space function of line 90 in Table 2.
Referring to Table 8A, a high level pseudo code statement is provided of the start thread function. This defines the process for starting a thread in the simulated job model, and relates to line 6 of Table 2 where code is provided to create pthread and spawn a job. Table 8 line 27 through line 37 describes line 115 of Table 2.
Referring to Table 8B, the thread wrapper function is described. In this example, the mutex function is implemented.
Referring to further and in more detail to Tables 1 and 2 in connection with FIG. 3, in Table 1 the thrdjobs.h include file is described for the ICS server jobmodel of Table 2. Tables 1 and 2 are a pseudo code representation (C-like in syntax and structure), of application program 100, together with data area 120, of FIG. 3.
Referring to Table 1, pseudo code (in C-like syntax) sets forth the content of the ICS server thread jobs file thrdjobs.h. This file is included in the ICS server job model, Table 2, at line 3, and provides various declarations, definitions, and structures used in the server job model, as follows:
Referring to Table 2 , pseudo code in C-like syntax sets forth the jobmodel of the ICS server 190, as follows:
The advantages of the system and method of the referred embodiment of this invention include the provision of: a system and method for implementing a job-based application on a threaded model; a system and method for enabling sharing of data as global values among threads within a job model; and an HTTP server implemented as jobs built on a threaded model.
It will be appreciated that, although specific embodiments of the invention have been described herein for purposes of illustration, various modifications may be made without departing from the spirit and scope of the invention. In particular, it is within the scope of the invention to provide a memory device, such as a transmission medium, magnetic or optical tape or disc, or the like, for storing signals for controlling the operation of a computer according to the method of the invention and/or to structure its components in accordance with the system of the invention.
Accordingly, the scope of protection of this invention is limited only by the following claims and their equivalents.
Claims (13)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/135,253 US6272518B1 (en) | 1998-08-17 | 1998-08-17 | System and method for porting a multithreaded program to a job model |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/135,253 US6272518B1 (en) | 1998-08-17 | 1998-08-17 | System and method for porting a multithreaded program to a job model |
Publications (1)
Publication Number | Publication Date |
---|---|
US6272518B1 true US6272518B1 (en) | 2001-08-07 |
Family
ID=22467240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/135,253 Expired - Fee Related US6272518B1 (en) | 1998-08-17 | 1998-08-17 | System and method for porting a multithreaded program to a job model |
Country Status (1)
Country | Link |
---|---|
US (1) | US6272518B1 (en) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010027462A1 (en) * | 2000-03-28 | 2001-10-04 | Kabushiki Kaisha Toshiba | Automatic distributed processing system and computer program product |
US20040064814A1 (en) * | 2002-10-01 | 2004-04-01 | Heather Bowers | System and method for task arbitration in multi-threaded simulations |
US6721943B2 (en) * | 2001-03-30 | 2004-04-13 | Intel Corporation | Compile-time memory coalescing for dynamic arrays |
US20040103110A1 (en) * | 2002-11-25 | 2004-05-27 | International Business Machines Corporation | Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system |
US6820261B1 (en) * | 1999-07-14 | 2004-11-16 | Sun Microsystems, Inc. | Inheritable thread-local storage |
US6842901B1 (en) * | 1999-04-23 | 2005-01-11 | Nortel Networks Limited | Thread memory reclamation |
US6874027B1 (en) * | 2000-04-07 | 2005-03-29 | Network Appliance, Inc. | Low-overhead threads in a high-concurrency system |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
US20060045099A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Third party, broadcast, multicast and conditional RDMA operations |
US20060047771A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | RDMA server (OSI) global TCE tables |
US20060045005A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Failover mechanisms in RDMA operations |
US20060045109A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Early interrupt notification in RDMA and in DMA operations |
US20060045108A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Half RDMA and half FIFO operations |
US20060059282A1 (en) * | 2004-08-30 | 2006-03-16 | International Business Machines Corporation | Snapshot interface operations |
US20060059242A1 (en) * | 2004-08-30 | 2006-03-16 | International Business Machines Corporation | Lazy deregistration of user virtual machine to adapter protocol virtual offsets |
US20060075067A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access with striping over an unreliable datagram transport |
US20070211690A1 (en) * | 2006-03-13 | 2007-09-13 | Microsoft Corporation | Network interface routing using computational context |
US20070240115A1 (en) * | 2006-03-31 | 2007-10-11 | Microsoft Corporation | Debugging in an operating system with multiple subsystems |
US7522597B2 (en) | 2004-08-30 | 2009-04-21 | International Business Machines Corporation | Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit |
US20090199212A1 (en) * | 2008-02-04 | 2009-08-06 | Red Hat, Inc. | Configuration interface manager |
US7835896B1 (en) * | 1998-04-06 | 2010-11-16 | Rode Consulting, Inc. | Apparatus for evaluating and demonstrating electronic circuits and components |
US8037476B1 (en) * | 2005-09-15 | 2011-10-11 | Oracle America, Inc. | Address level log-based synchronization of shared data |
US8139246B2 (en) | 2006-08-07 | 2012-03-20 | Infoprint Solutions Company, Llc | Printer dynamically tracking print jobs and method of tracking print jobs |
US8245207B1 (en) | 2003-07-31 | 2012-08-14 | Netapp, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US9529643B2 (en) * | 2015-01-26 | 2016-12-27 | Qualcomm Incorporated | Method and system for accelerating task control flow |
EP2798518B1 (en) * | 2013-02-20 | 2017-06-28 | Fastly Inc. | Enhanced thread handling in security handshaking |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247677A (en) | 1992-05-22 | 1993-09-21 | Apple Computer, Inc. | Stochastic priority-based task scheduler |
US5404521A (en) | 1990-07-31 | 1995-04-04 | Top Level Inc. | Opportunistic task threading in a shared-memory, multi-processor computer system |
US5421014A (en) | 1990-07-13 | 1995-05-30 | I-Tech Corporation | Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices |
US5485626A (en) | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US5504898A (en) | 1994-06-20 | 1996-04-02 | Candle Distributed Solutions, Inc. | Threaded environment for AS/400 |
US5511192A (en) | 1991-11-30 | 1996-04-23 | Kabushiki Kaisha Toshiba | Method and apparatus for managing thread private data in a parallel processing computer |
-
1998
- 1998-08-17 US US09/135,253 patent/US6272518B1/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5421014A (en) | 1990-07-13 | 1995-05-30 | I-Tech Corporation | Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices |
US5404521A (en) | 1990-07-31 | 1995-04-04 | Top Level Inc. | Opportunistic task threading in a shared-memory, multi-processor computer system |
US5511192A (en) | 1991-11-30 | 1996-04-23 | Kabushiki Kaisha Toshiba | Method and apparatus for managing thread private data in a parallel processing computer |
US5247677A (en) | 1992-05-22 | 1993-09-21 | Apple Computer, Inc. | Stochastic priority-based task scheduler |
US5485626A (en) | 1992-11-03 | 1996-01-16 | International Business Machines Corporation | Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing |
US5504898A (en) | 1994-06-20 | 1996-04-02 | Candle Distributed Solutions, Inc. | Threaded environment for AS/400 |
Non-Patent Citations (7)
Title |
---|
Iliev, R. et al. Discrete event simulation of distributed memory parallel computers at concurrent threads' level, Parallel Computing: State-of-the-Art Perspectives, 1996, pp. 637-640, INSM abstract No. 5614067. |
Placide, P. et al. A consistent global state algorithm to debug distributed object-oriented applications, 2nd Int'l Workshop on Automated and Algorithmic Debugging, 1995, pp. 2330247, INSM abstract No. 5093601. |
Portable Applications Standards Comm. of the IEEE Computer Society, Information Technology-Portable Operating System Interface (POSIX)-part 1: System Application Program Interface (API), Rpt. No. ISO/IEC 9945-1:1996(E), Jul. 12, 1996, INSM abstract No. 5424125. |
Portable Applications Standards Comm. of the IEEE Computer Society, Information Technology—Portable Operating System Interface (POSIX)—part 1: System Application Program Interface (API), Rpt. No. ISO/IEC 9945-1:1996(E), Jul. 12, 1996, INSM abstract No. 5424125. |
Roos, J.F. et al. Execution replay of parallel programs, Proc. Eoromicro Workshop on Parallel and Distributed Processing, 1993, pp. 429-434, INSM abstract No. 4658032. |
Sande, B.I. Entity-life modeling in a distributed environment, Proceedings of the 4th International Workshop on Parallel and Distributed Real-Time Systems, pp. 35-41, IEEE Compt. Soc. Press, 1996, INSM abstract No. 5437415. |
Vellejo, F. et al. Shared memory multimicroprocessor operating system with an extended Petri net model, IEEE Transactions on Parallel and Distributed Systems, Jul. 1994, pp.749-762, INSM abstract No. 4724275. |
Cited By (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7835896B1 (en) * | 1998-04-06 | 2010-11-16 | Rode Consulting, Inc. | Apparatus for evaluating and demonstrating electronic circuits and components |
US6842901B1 (en) * | 1999-04-23 | 2005-01-11 | Nortel Networks Limited | Thread memory reclamation |
US6820261B1 (en) * | 1999-07-14 | 2004-11-16 | Sun Microsystems, Inc. | Inheritable thread-local storage |
US8181183B2 (en) | 1999-11-18 | 2012-05-15 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations |
US20050149934A1 (en) * | 1999-11-18 | 2005-07-07 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
US20010027462A1 (en) * | 2000-03-28 | 2001-10-04 | Kabushiki Kaisha Toshiba | Automatic distributed processing system and computer program product |
US6874027B1 (en) * | 2000-04-07 | 2005-03-29 | Network Appliance, Inc. | Low-overhead threads in a high-concurrency system |
US6721943B2 (en) * | 2001-03-30 | 2004-04-13 | Intel Corporation | Compile-time memory coalescing for dynamic arrays |
US7318228B2 (en) * | 2002-10-01 | 2008-01-08 | Broadcom Corporation | System and method for task arbitration in multi-threaded simulations |
US20040064814A1 (en) * | 2002-10-01 | 2004-04-01 | Heather Bowers | System and method for task arbitration in multi-threaded simulations |
US6938054B2 (en) | 2002-11-25 | 2005-08-30 | International Business Machines Corporation | Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system |
US20040103110A1 (en) * | 2002-11-25 | 2004-05-27 | International Business Machines Corporation | Systems, methods, and computer program products to optimize serialization when porting code to IBM S/390 UNIX system services from a UNIX system |
US8245207B1 (en) | 2003-07-31 | 2012-08-14 | Netapp, Inc. | Technique for dynamically restricting thread concurrency without rewriting thread code |
US20060045108A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Half RDMA and half FIFO operations |
US20060045109A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Early interrupt notification in RDMA and in DMA operations |
US20060059242A1 (en) * | 2004-08-30 | 2006-03-16 | International Business Machines Corporation | Lazy deregistration of user virtual machine to adapter protocol virtual offsets |
US20060075067A1 (en) * | 2004-08-30 | 2006-04-06 | International Business Machines Corporation | Remote direct memory access with striping over an unreliable datagram transport |
US8364849B2 (en) | 2004-08-30 | 2013-01-29 | International Business Machines Corporation | Snapshot interface operations |
US20060045005A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Failover mechanisms in RDMA operations |
US20060047771A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | RDMA server (OSI) global TCE tables |
US7430615B2 (en) | 2004-08-30 | 2008-09-30 | International Business Machines Corporation | RDMA server (OSI) global TCE tables |
US7478138B2 (en) | 2004-08-30 | 2009-01-13 | International Business Machines Corporation | Method for third party, broadcast, multicast and conditional RDMA operations |
US7480298B2 (en) | 2004-08-30 | 2009-01-20 | International Business Machines Corporation | Lazy deregistration of user virtual machine to adapter protocol virtual offsets |
US7522597B2 (en) | 2004-08-30 | 2009-04-21 | International Business Machines Corporation | Interface internet protocol fragmentation of large broadcast packets in an environment with an unaccommodating maximum transfer unit |
US20090125604A1 (en) * | 2004-08-30 | 2009-05-14 | International Business Machines Corporation | Third party, broadcast, multicast and conditional rdma operations |
US20060045099A1 (en) * | 2004-08-30 | 2006-03-02 | International Business Machines Corporation | Third party, broadcast, multicast and conditional RDMA operations |
US7813369B2 (en) | 2004-08-30 | 2010-10-12 | International Business Machines Corporation | Half RDMA and half FIFO operations |
US8023417B2 (en) | 2004-08-30 | 2011-09-20 | International Business Machines Corporation | Failover mechanisms in RDMA operations |
US20060059282A1 (en) * | 2004-08-30 | 2006-03-16 | International Business Machines Corporation | Snapshot interface operations |
US7953085B2 (en) | 2004-08-30 | 2011-05-31 | International Business Machines Corporation | Third party, broadcast, multicast and conditional RDMA operations |
US8037476B1 (en) * | 2005-09-15 | 2011-10-11 | Oracle America, Inc. | Address level log-based synchronization of shared data |
US7821985B2 (en) * | 2006-03-13 | 2010-10-26 | Microsoft Corporation | Network interface routing using computational context |
US20070211690A1 (en) * | 2006-03-13 | 2007-09-13 | Microsoft Corporation | Network interface routing using computational context |
US20070240115A1 (en) * | 2006-03-31 | 2007-10-11 | Microsoft Corporation | Debugging in an operating system with multiple subsystems |
US8104019B2 (en) * | 2006-03-31 | 2012-01-24 | Microsoft Corporation | Debugging in an operating system with multiple subsystems |
US8139246B2 (en) | 2006-08-07 | 2012-03-20 | Infoprint Solutions Company, Llc | Printer dynamically tracking print jobs and method of tracking print jobs |
US20090199212A1 (en) * | 2008-02-04 | 2009-08-06 | Red Hat, Inc. | Configuration interface manager |
US9992226B2 (en) | 2013-02-20 | 2018-06-05 | Fastly Inc. | Enhanced thread handling in security handshaking |
EP2798518B1 (en) * | 2013-02-20 | 2017-06-28 | Fastly Inc. | Enhanced thread handling in security handshaking |
US9529643B2 (en) * | 2015-01-26 | 2016-12-27 | Qualcomm Incorporated | Method and system for accelerating task control flow |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cho | A Framework for Alternate Queueing: Towards Traffic Management by PC-UNIX Based Routers. | |
JP4267462B2 (en) | Method and system for problem determination in distributed enterprise applications | |
US6966060B1 (en) | Method and system for remote client installation | |
US6868442B1 (en) | Methods and apparatus for processing administrative requests of a distributed network application executing in a clustered computing environment | |
US6832238B1 (en) | Local transaction management | |
US7818721B2 (en) | Dynamic application tracing in virtual machine environments | |
CA2402933C (en) | Method of and apparatus for recovery of in-progress changes made in a software application | |
Ghormley et al. | SLIC: An Extensibility System for Commodity Operating Systems. | |
US5630049A (en) | Method and apparatus for testing software on a computer network | |
US6226788B1 (en) | Extensible network management system | |
US7895153B2 (en) | System and method for performing commutative operations in data access systems | |
US5924102A (en) | System and method for managing critical files | |
US6505228B1 (en) | Dynamic determination of execution sequence | |
US7047529B2 (en) | Software installation and validation using custom actions | |
US5475817A (en) | Object oriented distributed computing system processing request to other object model with code mapping by object managers located by manager of object managers | |
CN100570565C (en) | Method and system for providing policy-based operation system service in management procedure | |
US6915455B2 (en) | Test tool and methods for testing a system-managed duplexed structure | |
KR100472807B1 (en) | System and method for automatically modifying database access methods to insert database object handling instructions | |
Speight et al. | Brazos: A third generation DSM system | |
US5970248A (en) | Method of walking-up a call stack for a client/server program that uses remote procedure call | |
US6205465B1 (en) | Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information | |
US6275863B1 (en) | System and method for programming and executing long running transactions | |
US6684387B1 (en) | Method and apparatus for verifying Enterprise Java Beans | |
US6219666B1 (en) | Autonomous transactions in a database system | |
US6950964B1 (en) | Driver protection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BLAZO, GARY M.;HALL, KEVIN D.;MENG, CHUNG;AND OTHERS;REEL/FRAME:009393/0177;SIGNING DATES FROM 19980807 TO 19980811 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Expired due to failure to pay maintenance fee |
Effective date: 20090807 |