1461181727-2859fad6-716b-4dc0-83c3-3f72c33d972f

1. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes; and
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one operator that implements a query on the database in at least one of the processes, wherein a profile of said operator is used to derive the second value for said operator; and
allocating memory in the amount of second value.
2. The method of claim 1 wherein:
all of the processes have access to a shared memory in the computer; and
the method includes storing the second value in the shared memory.
3. The method of claim 2 further comprising:
each process allocating memory based on the second value; and
each process storing in the shared memory the amount of memory allocated to the process.
4. The method of claim 1 wherein:
the computer includes additional processes unconstrained by the values.
5. The method of claim 1 wherein:
the second value is common to all of the operators in all of the processes.
6. The method of claim 1 further comprising:
periodically repeating the act of deriving.
7. The method of claim 1 further comprising:
repeating the act of deriving, at least when the total memory allocated to the plurality of processes exceeds the first value by a predetermined amount.
8. The method of claim 1 wherein:
during said deriving, the second value is set to one of (a) an operator-level internal value that is a common limit across all operators in all processes of the database, (b) an estimate of memory needed by said operator, and (c) an amount derived from at least either or both (a) and (b).
9. The method of claim 1 wherein:
the profile comprises a plurality of estimates needed by said operator; and
at least one of said estimates is used during said deriving.
10. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes;
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one operator in at least one of the processes;
wherein all of the processes have access to a shared memory in the computer; and
each process storing in the shared memory, the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
11. A method of allocating memory to a plurality of processes in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes;
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one of the processes;
allocating memory in the amount of second value;
changing the first value based at least on comparison of an externally-set global value and total memory currently allocated to the processes; and
repeating the act of deriving after changing the first value.
12. The method of claim 11 wherein:
the plurality of processes are related to a database; and
the second value of an amount of memory is to be allocated by at least one operator in at least one of the processes; and
said at least one operator implements a query on the database.
13. The method of claim 12 wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory a plurality of estimates of memory needed for a corresponding plurality of modes of execution of said at least one operator.
14. The method of claim 12 wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
15. The method of claim 11 wherein:
said repeating of the act of deriving is for said at least one process.
16. The method of claim 11 wherein:
said repeating of the act of deriving is for another process.
17. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 11.
18. A method of allocating memory to a plurality of processes in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes;
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one of the processes;
allocating memory in the amount of second value; and
repeating the act of deriving without changing the first value.
19. The method of claim 18 wherein:
the plurality of processes are related to a database;
the second value of an amount of memory is to be allocated by at least one operator in at least one of the processes; and
said at least one operator implements a query on the database.
20. The method of claim 19 wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory a plurality of estimates of memory needed for a corresponding plurality of modes of execution of said at least one operator.
21. The method of claim 20 further comprising:
comparing an operator-level internal value derived from the first value with at least one of the estimates;
wherein the outcome of the comparing is used in said deriving.
22. The method of claim 19 wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
23. The method of claim 18 further comprising:
repeating the act of deriving, at least when the total memory allocated to the plurality of processes exceeds the first value by a predetermined amount.
24. The method of claim 18 wherein the act of repeating is triggered by a change in the number of processes.
25. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 18.
26. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes;
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one operator in at least one of the processes;
wherein all of the processes have access to a shared memory in the computer; and
the method further comprises storing in the shared memory an estimate of memory to be used by the one operator.
27. The method of claim 26 wherein:
the estimate is of memory required by the one operator.
28. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
storing a first value of an amount of total memory to be allocated to the processes;
deriving, based on the first value, a second value of an amount of memory to be allocated by at least one operator in at least one of the processes;
wherein the method further comprises prior to said deriving, at least one process storing for said at least one operator a plurality of estimates for a corresponding plurality of modes in which said at least one operator can be executed by said at least one process; and
wherein the plurality of estimates are used during said deriving.
29. The method of claim 28 further comprising:
comparing an operator-level internal value derived from the first value with at least one of the estimates;
wherein the outcome of the comparing is used in said deriving.
30. The method of claim 28 wherein the plurality of estimates comprises:
a first estimate of memory needed for optimal mode;
a second estimate of memory needed for one pass mode; and
a third estimate of memory needed for minimal mode.
31. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 1.
32. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
comparing a predetermined value of memory to be allocated to an operator with at least one of three estimates: a first estimate of memory needed for optimal execution of the operator, a second estimate of memory needed for one pass execution of the operator, and a third estimate of memory needed for minimal execution of the operator; and
deriving an amount of memory to be allocated to the operator based on outcome of comparison.
33. The method of claim 32 wherein:
the amount is determined to be the first estimate if the first estimate is smaller than the predetermined value.
34. The method of claim 32 wherein:
the amount is derived from at least the second estimate if the predetermined value is between the first estimate and the second estimate.
35. The method of claim 34 wherein:
the amount is also derived from a priority of the process relative to other processes.
36. The method of claim 32 wherein:
the amount is derived from at least the predetermined value if the predetermined value is between the first estimate and the third estimate.
37. The method of claim 32 wherein:
the amount is derived from the third estimate if the predetermined value is smaller than the third estimate.
38. The method of claim 32 further comprising, prior to the act of comparing:
determining the predetermined value based on total memory to be allocated to the processes.
39. The method of claim 32 further comprising, prior to the act of comparing:
storing the three estimates in a memory shared by the plurality of processes;
wherein the operator implements a query on the database.
40. The method of claim 32 wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
41. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process storing in a shared memory of the computer, an estimate of an amount of memory needed by the process;
each process comparing the estimate with a value retrieved from the shared memory; and
each process allocating memory based on outcome of the comparing;
wherein said value is automatically computed based on memory usage statistics.
42. The method of claim 41 wherein:
each process is related to a database; and
the estimate and the value are for an operator that implements a database query.
43. The method of claim 41 wherein the estimate is of memory needed for a minimal mode of an operator, the operator implementing a query on a database to which the plurality of processes are related, and further wherein:
the allocating is performed even when the estimate exceeds the predetermined number.
44. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process storing an estimate of an amount of memory needed by the process;
each process comparing the estimate with a value retrieved from a shared memory in the computer;
each process allocating memory based on outcome of the comparing;
wherein each process stores a plurality of estimates for a corresponding plurality of modes of execution of the operator; and
wherein memory allocated in the act of allocating is determined to be a first estimate if the first estimate is smaller than the value.
45. The method of claim 44 wherein:
the operator is sort; and
memory allocated in the act of allocating is determined to be a middle estimate if the value is between the first estimate and the middle estimate, wherein the middle estimate is between the first estimate and the second estimate.
46. The method of claim 44 wherein:
the operator is hash-join; and
memory allocated in the act of allocating is determined to be the value, if the value is between the first estimate and a middle estimate, wherein the middle estimate is between the first estimate and the second estimate.
47. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process comparing with a predetermined number, an estimate of memory needed by an operator that implements a database query; and
each process allocating memory based on outcome of comparison;
wherein said operator of a first process in said plurality of processes is different from said operator of a second process in said plurality of processes.
48. The method of claim 47 further comprising, prior to the act of comparing:
storing the estimate in a memory shared by the plurality of processes.
49. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process comparing with a predetermined number, an estimate of memory needed by an operator that implements a database query; and
each process allocating memory based on outcome of comparison;
wherein the predetermined number indicates memory available for allocation, the method further comprising:
performing the allocating when the predetermined number exceeds the estimate; and
queuing a process if the estimate exceeds the predetermined number.
50. The method of claim 47 wherein the estimate is of memory needed for minimal mode of the operator, and further wherein:
the allocating is performed even when the estimate exceeds the predetermined number.
51. A method of allocating memory to a plurality of processes in a computer, the method comprising:
storing a first value related to total memory to be allocated to the processes;
deriving a second value from the first value;
using the second value to allocate memory for a process; and
revising the second value after said using.
52. The method of claim 51 wherein said revising provides a revised second value, and the method further comprising:
using the revised second value to allocate memory for another process.
53. The method of claim 52 wherein:
said revised second value is derived from each of said second value and said first value.
54. The method of claim 51 wherein:
said revising is performed periodically.
55. The method of claim 51 further comprising:
each process updating a statistic on memory usage on allocation and deallocation of memory; and
comparing the statistic with at least one of the first value and the second value;

wherein the revising is based on an outcome of the comparing.
56. The method of claim 55 wherein:
each process performs the comparing and triggers the revising in response to the outcome.
57. The method of claim 51 wherein the plurality of processes are related to a database, and the second value takes into account:
memory that is allocated but not used; and
memory that is unrelated to operators that implement a query on the database.
58. The method of claim 57 further comprising, during said using:
computing an operator-level value that defines the amount of memory to be allocated by each process for each operator’s work area.
59. The method of claim 51 further comprising:
checking if total memory allocated to all processes is greater than the first value.
60. The method of claim 51 further comprising:
computing work area allocation factor as the ratio of work area memory to the sum of work area memory and other memory, the other memory being the difference between used memory and work area memory.
61. The method of claim 60 further comprising, during said revising:
using the work area allocation factor.
62. The method of claim 51 wherein:
said revising is based on memory usage statistics.
63. The method of claim 51 wherein:
said revising decreases the second value if allocated memory is greater than first value.
64. The method of claim 51 wherein:
second value is a global internal value.
65. The method of claim 51 wherein:
second value is an operator-level internal value.
66. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 51.
67. The method of claim 51 wherein:
all processes in the plurality are related to an application in the computer.
68. A computer executing a plurality of processes related to a database, the computer comprising:
means for storing a first value of an amount of total memory to be allocated to the processes;
means for deriving, based on the first value, a second value of an amount of memory to be allocated by at least one database operator that implements a query on the database in at least one of the processes, wherein a profile of said operator is used to derive the second value for said operator; and
means for allocating memory in the amount of second value.
69. The computer of claim 68 further comprising:
means for changing the first value based on the second value.
70. A computer executing a plurality of processes related to a database, the computer comprising:
means for comparing a predetermined value of memory to be allocated to a database operator with at least one of three estimates: a first estimate of memory needed for optimal execution of the database operator, a second estimate of memory needed for one pass execution of the database operator, and a third estimate of memory needed for minimal execution of the database operator; and
means for deriving an amount of memory to be allocated to the database operator, coupled to the means for comparing to receive therefrom an outcome of comparison.
71. The computer of claim 70 further comprising:
memory storing the three estimates; and
wherein said means for deriving includes means for selecting a first estimate if the first estimate is smaller than the value.
72. A computer allocating memory to a plurality of processes executing therein, the computer comprising:
means for storing a first value related to total memory to be allocated to the processes;
means for deriving a second value from the first value;
means for using the second value to allocate memory for a process;
means for revising the second value after said using; and
means for using the revised second value to allocate memory for another process.
73. The computer of claim 72 further comprising:
means for updating a statistic on memory usage on allocation and deallocation of memory; and
means for comparing the statistic with at least one of the first value and the second value.
74. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 32.
75. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process storing in a shared memory of the computer, an estimate of an amount of memory needed by the process;
each process comparing the estimate with a value retrieved from the shared memory;
each process allocating memory based on outcome of the comparing; and
each process storing in the shared memory the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
76. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 41.
77. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process comparing with a predetermined number, an estimate of memory needed by an operator that implements a database query; and
each process allocating memory based on outcome of comparison;
wherein all of the processes have access to a shared memory in the computer, the method further comprising:
each process storing in the shared memory the amount of memory used by each operator in the process, the amount of memory used by other portions of the process, and the amount of memory allocated but not used by the process.
78. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 41.
79. A method of allocating memory to a plurality of processes in a computer, the method comprising:
storing a first value related to total memory to be allocated to the processes;
deriving a second value from the first value;
using the second value to allocate memory for a process; and
in response to said using, repeating said deriving to obtain a revised second value.
80. The method of claim 79 further comprising:
using the revised second value to allocate memory for another process.
81. The method of claim 80 wherein:
each of the second value and the revised second value is an operator-level internal value.
82. The method of claim 80 wherein: each of the second value and the revised second value is a global internal value.
83. A method of allocating memory to a plurality of processes related to a database in a computer, the method comprising:
storing a value of an amount of total memory that should not be exceeded by total memory allocated on behalf of a number of operators in the plurality of processes; and
deriving, a bound on an amount of memory to be allocated by at least one operator that implements a query on the database in at least one of the processes, said deriving being performed based on said value and a profile, said profile comprising a plurality of estimates of memory needed for a corresponding plurality of modes of execution of said at least one operator; and
allocating memory on behalf of said at least one operator in an amount based on the profile and the bound.
84. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 83.
85. A method of allocating memory to a set of processes in a computer, the method comprising:
storing a global internal value of an amount of total memory that should not be exceeded by total memory allocated by the set of processes;
deriving, based on the global internal value, a bound on an amount of memory that should not be exceeded by memory allocated by at least one of the processes;
allocating memory in an amount of a second value, the second value being identified based on said bound and a profile of an operator to be executed by said at least one of the processes, said profile comprising a plurality of estimates of memory needed for a corresponding plurality of modes of execution of said operator;
calculating the global internal value based at least on comparison of total memory currently allocated to the set of processes and an externally-set global value; and
repeating, after calculating the global internal value, each of deriving, allocating, and calculating.
86. The method of claim 85 wherein:
the set of processes are current processes executing queries on a database.
87. The method of claim 85 wherein:
during said changing, the global internal value is increased if the amount of total memory currently allocated is less than the externally-set global value.
88. The method of claim 85 wherein:
during said changing, the global internal value is decreased if the amount of total memory currently allocated exceeds the externally-set global value by a predetermined amount.
89. The method of claim 85 further comprising:
computing an initial value for the bound assuming each operator consumes memory equal to the bound; and
revising the initial value based at least partially on operators that have not been assigned a memory size.
90. A computer-readable medium having stored therein a plurality of sequences of instructions, the plurality of sequences of instructions including sequences of instructions which, when executed by a computer, cause the computer to perform the method of claim 85.
91. A method of allocating memory to a plurality of processes in a computer, the method comprising:
storing a first value of an amount of total memory that should not be exceeded by the processes;
deriving, based on the first value, a bound on an amount of memory to be allocated by at least one of the processes;
allocating memory based on an estimate selected from among a plurality of estimates of memory needed for a corresponding plurality of modes of execution of said operator, the selected estimate being identified by comparison of at least one estimate with the bound; and
repeating the act of deriving without changing the first value.
92. A method of allocating memory to a plurality of processes in a computer, the method comprising:
each process storing a plurality of estimates of an amount of memory needed by the process for executing an operator in a corresponding plurality of modes;
deriving, based on a global internal value, a plurality of bounds on amount of memory to be allocated by operators of a corresponding plurality of types;
each process comparing the plurality of estimates with a bound that is specific to the type of operator to be executed by the process; and
each process allocating memory in an amount of one of the estimates selected based on the comparing.
93. The method of claim 92 wherein each of said deriving, said comparing and said allocating are performed at a first time, and repeated at least one time thereafter.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A dual layer authentication system for securing user access to remote systems, comprising:
a verification unit configured to receive multiple types of verification information as inputs including information stored on a smart card and further configured to verify a user of the smart card based upon the verification information;
a user authentication system coupled to the verification unit to receive a verification indication concerning the user of the smart card, the user authentication system being configured to generate an authentication personal identification number (authentication-PIN) associated with a positive verification of the user and to provide the authentication-PIN to the verification unit for receipt by the user of the smart card; and
an access control system coupled to the user authentication system, the access control system being configured to receive user login requests from remote systems including user identification and the authentication-PIN, to communicate with the user authentication system to verify the authentication-PIN, and to approve access to a remote system if the authentication-PIN is verified.
2. The system of claim 1, wherein the verification unit requires at least three types of verification information to verify a user of the smart card, including identification information known by the user, identification information possessed by the user, and a biological indicator from the user.
3. The system of claim 1, further comprising an authentication-PIN database within the user authentication system, the authentication-PIN database configured to store authentication-PINs corresponding to users.
4. The system of claim 3, further comprising an authentication-PIN control sub-system within the user authentication system, the control sub-system configured to receive the verification indication from a verification unit concerning the user of the smart card, to generate the authorization-PIN associated with a positive verification of the user, and to store authentication-PIN information within the database.
5. The system of claim 4, wherein the authentication-PIN is temporary.
6. The system of claim 4, wherein the authentication-PIN expires after a set amount of time or a set number of logins.
7. The system of claim 4, wherein the smart card is a Department of Defense Common Access Card.
8. The system of claim 7, wherein the verification unit communicates to the access control system security clearance level information of the user requesting authentication.
9. The system of claim 7, wherein the verification unit communicates to the access control system special access levels corresponding with the user requesting authentication.
10. The system of claim 7, wherein the verification unit communicates to the access control system special project lists corresponding to the user requesting authentication.
11. The system of claim 4, further comprising a user activity tracking component.
12. A user authentication system configured to receive and transmit data for user authentication to a remote system, comprising:
a database configured to store authentication-PINs corresponding to users; and
a control sub-system configured to receive a verification indication from a verification unit concerning the user of a smart card, to generate an authentication personal identification number (authentication-PIN) associated with a positive authentication of the user, and to store the authentication-PIN information within the database.
13. The system of claim 12, wherein the verification unit is coupled to the user authentication system through wireless communication connections, through wired communication connections, or through both.
14. The system of claim 13, wherein the verification unit is configured to receive multiple types of verification information as inputs including smart card information and is further configured to verify a user of the smart card based upon the verification information.
15. The system of claim 14, wherein the user authentication system is coupled to an access control system for a plurality of remote systems.
16. The system of claim 15, wherein the access control system is configured to receive user login requests from remote systems including user identification and an authentication-PIN, to communicate with the user authentication system to verify the authentication-PIN, and to approve access to a remote system if the authentication-PIN is verified.
17. A method of securing user access to remote systems using a dual layer authentication system, comprising:
using a verification unit to receive verification information from a user and to verify an identity of the user;
communicating user information and verification information from the verification unit to a user authentication system;
generating temporary authentication-PINs for verified users and storing the authentication-PINs in a user authentication system;
communicating to a user the temporary authentication-PIN from the user authentication system through the verification unit;
receiving a login request from a user on to a remote system, the login request including user identification information and an authentication-PIN;
communicating the user identification information and the authentication-PIN from the remote system to an access control system; and
verifying the authentication-PIN through communications between the access control system and the user authentication system.
18. The method of claim 17, further comprising storing authentication-PINs and corresponding user information in a database.
19. The method of claim 17, wherein the using a verification unit step comprises receiving multiple types of verification information.
20. The method of claim 19, wherein the using a verification unit step comprises receiving information from a smart card corresponding to a user, identification information known by the user and a biological indicator from the user.
21. The method of claim 20, wherein the authentication-PIN is temporary with a set expiration time.
22. The method of claim 20, wherein the authentication-PIN expires after a set number of logins.
23. The method of claim 20, wherein the smart card is a Department of Defense Common Access Card.
24. The method of claim 23, further comprising obtaining security clearance information from the smart card and communicating security clearance level information from the verification unit to the user authentication system and from the user authentication system to the access control system.