The present described embodiments are embodied in a system and method for
generating and validating reference handles for consumers requiring access
to resources in a computer system. The system of the present described
embodiments includes a resource manager having a handle administrator, a
plurality of consumers, and a plurality of resources. The handle
administrator includes an assignment routine, a release routine, and a
dereference routine. The assignment routine issues new handles, the
release routine releases handles that are no longer required (thus
rendering the handle invalid), and the dereference routine dereferences
handles into a pointer to a resource, which entails verifying that the
handle is valid. Also included is an auxiliary sub-routine for managing
used and unused records, an expansion sub-routine for efficiently
expanding the handle database, a handle recycling sub-routine for
recycling handles, a contraction sub-routine for efficiently contracting
the handle database, a hysteresis sub-routine for probabilistically
contracting the handle database, and a memory allocation failure
sub-routine to improve functionality in the event of memory allocation
failure. Further, the systems and methods include routines that enable a
handle value to be reserved for an indication of a lack of a valid handle.
The reserved handle value is never issued to a consumer for use in
accessing a resource.
Les incorporations décrites actuelles sont incorporées dans un système et une méthode pour produire et valider des poignées de référence pour des consommateurs ayant besoin de l'accès aux ressources dans un système informatique. Le système des incorporations décrites actuelles inclut un directeur de ressource ayant un administrateur de poignée, une pluralité de consommateurs, et une pluralité de ressources. L'administrateur de poignée inclut une routine de tâche, une routine de dégagement, et une routine de déréférence. Poignées d'issues courantes de tâche les nouvelles, les poignées de rejets routiniers de dégagement qui ne sont plus exigées (de ce fait rendant l'invalide de poignée), et la routine de déréférence déréférencie des poignées dans un indicateur à une ressource, qui nécessite de vérifier que la poignée est valide. En outre incluse est une sous-routine auxiliaire pour les disques d'utilisés et inutilisés de gestion, une sous-routine d'expansion pour augmenter efficacement la base de données de poignée, une poignée réutilisant la sous-routine pour réutiliser des poignées, une sous-routine de contraction pour contracter efficacement la base de données de poignée, une sous-routine d'hystérésis pour contracter probabilistically la base de données de poignée, et une sous-routine d'échec d'attribution de mémoire pour améliorer la fonctionnalité en cas de l'échec d'attribution de mémoire. De plus, les systèmes et les méthodes incluent les routines qui permettent à une valeur de poignée d'être réservée pour une indication d'un manque d'une poignée valide. La valeur réservée de poignée n'est jamais publiée à un consommateur pour l'usage en accédant à une ressource.