IP Library Granted Patent US 6,842,901
Granted Patent B1
US 6,842,901 · App. 09/326,007 · Granted Jan 11, 2005

Thread memory reclamation

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 6,842,901
App. No.
09/326,007
Granted
Jan 11, 2005
Kind
B1
Abstract

An apparatus and method of managing memory utilized by a process executing on a computer system with an operating system frees memory segments allocated to threads (in the process) if it is determined that such threads have stopped operating. To that end, messages forwarded between the process and operating system are intercepted. The location of a memory segment that is allocated to a given thread in the process then is ascertained from at least one of the intercepted messages. The given thread thus is monitored and its allocated memory segment is freed if it is determined that the given thread has stopped operating.

Claims (93)

1. A method of managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the method comprising:

intercepting messages forwarded between the process and the operating system;

ascertaining, from at least one of the intercepted messages, locations of at least two memory segments that are allocated to a given thread in the process;

storing a linked list of memory segments associated with the given thread;

monitoring the given thread; and

freeing each memory segment indicated in the linked list of memory segments if it is determined that the given thread has stopped operating.

2. The method as defined by claim 1 wherein the given thread that has stopped executing is deemed to have stopped operating.

3. The method as defined by claim 1 wherein each thread executed a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

4. The method as defined by claim 1 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

5. The method as defined by claim 1 wherein locations of each memory segment is stored in the linked list in a memory device, the act of freeing comprising:

retrieving the location of the memory segment from the linked list in the memory device; and

forwarding a release message to the operating system, the release message including both data identifying the location of each memory segment, and a request to free each memory segment.

6. The method as defined by claim 1 wherein the operating system utilizes a standard operating system application program interface.

7. The method as defined by claim 6 wherein the operating system is POSIX.

8. An apparatus for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the apparatus comprising:

an intercepting module that intercepts messages forwarded between the process and the operating system;

a location ascertaining module that ascertains, from at least one intercepted messages, a location of each memory segment of at least two memory segments that are allocated to a given thread in the process;

storing the location of each memory segment associated with the given thread in a linked list:

a monitoring thread that monitors the given thread; and

a segment freeing module that frees each memory segment indicated in the linked list if it is determined that the given thread has stopped operating.

9. The apparatus as defined by claim 8 wherein the given thread that has stopped executing is deemed to have stopped operating.

10. The apparatus as defined by claim 8 wherein each thread executes a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

11. The apparatus as defined by claim 8 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

12. The apparatus as defined by claim 8 wherein the location of each memory segment is stored in the linked list in a memory device, the segment freeing module comprising:

a retrieving module that retrieves the location of each memory segment from the linked list in the memory device; and

an output that forwards a release message to the operating system, the release message including both data identifying the location of each memory segment, and a request to free each memory segment.

13. The apparatus as defined by claim 8 wherein the operating system utilizes a standard operating system application program interface.

14. A computer program product for use on a computer system for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread, the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code including: program code for intercepting messages forwarded between the process and the operating system;

program code for ascertaining, from at least one intercepted message, the locations of at least two memory segments allocated to a given thread in the process;

program code for generating a linked list of the at least two memory segments associated with the given thread;

program code for monitoring the given thread; and

program code for freeing the locations of the at least two memory segments by traversing the linked list if it is determined that the given thread has stopped operating.

15. The computer program as defined by claim 14 wherein the given thread that has stopped executing is deemed to have stopped operating.

16. The computer program product as defined by claim 14 wherein each thread executes a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

17. The computer program produce as defined by claim 14 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

18. The computer program product as defined by claim 14 wherein the the locations of the at least two memory segments are stored in the linked list in a memory devices, the program code for freeing comprising:

program code for retrieving the location of the at least two memory segment from the linked list of the memory device; and

program code for forwarding a release message to the operating system, the release message including both data identifying the locations of the at least two memory segments, and a request to free the at least two memory segments.

19. The computer program product as defined by claim 14 wherein the operating system utilizes a standard operating system application program interface.

20. The computer program product as defined by claim 19 wherein the operating system is POSIX.

21. A method of managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread comprised of at least two memory segments, the method comprising:

intercepting memory allocation requests from the process, the memory allocation requests being directed toward the operating system and requesting that the operating system allocate at least two memory segments for a given thread in the process;

storing locations of the at least two memory segments in a linked list associated with the given thread;

forwarding the memory allocation requests to the operating system, the operating system responsively allocating memory segments for the given thread;

receiving a memory segment message from the operating system identifying the locations of the at least two memory segments allocated for the given thread;

storing the location of each memory segment in a linked list associated with the given thread; and

forwarding a memory allocation reply message to the process identifying the locations of the at least two memory segments associated with the given thread.

22. The method as defined by claim 21 further comprising:

monitoring the given thread in the process; and

freeing the at least two memory segments if it is determined that the given thread has stopped operating.

23. The method as defined by claim 22 wherein the given thread that has stopped executing is deemed to have stopped operating.

24. The method as defined by claim 22 wherein each thread executes a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

25. The method as defined by claim 22 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

26. The method as defined by claim 22 wherein the locations of the at least two memory segments are stored in the linked list in a memory device, the act of freeing comprising:

retrieving the locations of the at least two memory segments from the linked list in the memory device; and

forwarding a release message to the operating system, the release message including both data identifying the locations of the at least two memory segments, and a request to free the at least two memory segments.

27. The method as defined by claim 21 , wherein the operating system utilizes a standard operating system application program interface.

28. The method as defined by claim 27 wherein the operating system is POSIX.

29. The method as defined by claim 21 wherein the memory allocation requests and memory segment messages are received by an interceptor module, the interceptor module being independent from the operating system.

30. An apparatus for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread executing using at least two memory segments, the apparatus comprising:

a first input that receives a memory segment messages from the operating system identifying the locations at least two memory segments allocated for the given thread, the memory segment messages being forwarded from the operating system in response to memory allocation requests from the process to allocate the memory segments for the given thread;

a memory device including a linked list for storing the locations of the at least two memory segments and

a first output that forwards a memory allocation reply messages to the process, the memory allocation reply messages identifying the locations of each memory segment of the given thread.

31. The apparatus as defined by claim 30 further comprising:

a second input that receives the memory allocation requests from the process, the memory allocation requests being directed toward the operating system; and

a second output that forwards the memory allocation requests to the operating system.

32. The apparatus as defined by claim 30 wherein the first input and first output collectively utilize at least one interface for interfacing with messages.

33. The apparatus as defined by claim 30 further comprising:

a monitoring thread that monitors the given thread in the process; and

a segment freeing module that frees the memory segments if it is determined that the given thread has stopped operating.

34. The apparatus as defined by claim 33 wherein the given thread that has stopped executing is deemed to have stopped operating.

35. The apparatus as defined by claim 33 wherein each thread executes a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

36. The apparatus as defined by claim 33 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

37. The apparatus as defined by claim 33 wherein the segment freeing module comprises:

a retriever that retrieves the locations of the at least two memory segments from the linked list in the memory device; and

a releaser that forwards a release messages to the operating system, the release messages including both data identifying the locations of the at least two memory segments, and a request to free the at least two memory segments.

38. The apparatus as defined by claim 30 wherein the operating system utilizes a standard operating system application program interface.

39. A computer program product for use on a computer system for managing memory utilized by a process executing on a computer system having an operating system, the process including at least one thread each thread executing using at least two memory segments, the computer program product comprising a computer usable medium having computer readable program code thereon, the computer readable program code including:

program code for receiving memory allocation requests from the process, the memory allocation requests being directed toward the operating system and requesting that the operating system allocate memory segments for a given thread in the process;

program code for forwarding the memory allocation requests to the operating system, the operating system responsively allocating at least two memory segments for the given thread;

program code for receiving memory segment messages from the operating system identifying the locations of the at least two memory segments allocated for the given thread;

program code for storing the locations of the memory segments; and

program code for forwarding at least two memory allocation reply messages to the process identifying the locations of the at least two memory segments of the given thread.

40. The computer program product as defined by claim 39 further comprising:

program code for monitoring the given thread in the process; and

program code for freeing the memory segments if it is determined that the given thread has stopped operating.

41. The computer program product as defined by claim 40 wherein the given thread that has stopped executing is deemed to have stopped operating.

42. The computer program as defined by claim 40 wherein each thread executes a prescribed function, an executing thread that is determined to have been not executing its prescribed function being deemed to have stopped operating.

43. The computer program product as defined by claim 40 wherein an executing thread that is corrupting other processes or threads is deemed to have stopped operating.

44. The computer program product as defined by claim 40 wherein the locations of the at least two memory segments are stored in a memory device, the program code for freeing comprising:

program code for retrieving the locations of the at least two memory segments from the memory device; and

program code for forwarding a release messages to the operating system the release messages including both data identifying the locations of the at least two memory segments, and a request to free the at least two memory segments.

45. The computer program product as defined by claim 40 wherein the operating system utilizes a standard operating system application program interface.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded Oct 26, 2020
From: JEFFERIES FINANCE LLC
To: RPX CLEARINGHOUSE LLC
Reel/Frame 054305/0505 →
SECURITY INTEREST Recorded Jun 29, 2018
From: RPX CLEARINGHOUSE LLC
To: JEFFERIES FINANCE LLC
Reel/Frame 046485/0644 →
RELEASE (REEL 038041 / FRAME 0001) Recorded Jan 2, 2018
From: JPMORGAN CHASE BANK, N.A.
To: RPX CORPORATION; RPX CLEARINGHOUSE LLC
Reel/Frame 044970/0030 →
SECURITY AGREEMENT Recorded Mar 9, 2016
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038041/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2015
From: ROCKSTAR CONSORTIUM US LP; ROCKSTAR CONSORTIUM LLC; BOCKSTAR TECHNOLOGIES LLC; CONSTELLATION TECHNOLOGIES LLC; MOBILESTAR TECHNOLOGIES LLC; NETSTAR TECHNOLOGIES LLC
To: RPX CLEARINGHOUSE LLC
Reel/Frame 034924/0779 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2014
From: ROCKSTAR BIDCO, LP
To: ROCKSTAR CONSORTIUM US LP
Reel/Frame 032436/0804 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 28, 2011
From: NORTEL NETWORKS LIMITED
To: ROCKSTAR BIDCO, LP
Reel/Frame 027164/0356 →