Handle (informàtica)

De la Viquipèdia, l'enciclopèdia lliure

En programació d'ordinadors, un handle és una referència abstracta a un recurs que s'utilitza quan el programari d'aplicació fa referència a blocs de memòria o objectes que són gestionats per un altre sistema com una base de dades o un sistema operatiu.[1]

Un identificador de recurs pot ser un identificador opac, en aquest cas sovint és un nombre enter (sovint un índex de matriu en una matriu o "taula" que s'utilitza per gestionar aquest tipus de recurs), o pot ser un punter que permet l'accés a més informació. Els controladors de recursos habituals inclouen descriptors de fitxers, endolls de xarxa, connexions a bases de dades, identificadors de procés (PID) i identificadors de treballs. Els PID i els ID de treball són nombres enters visibles explícitament; mentre que els descriptors de fitxers i els sòcols (que sovint s'implementen com una forma de descriptor de fitxers) es representen com a nombres enters, normalment es consideren opacs. En les implementacions tradicionals, els descriptors de fitxers són índexs en una taula de descriptors de fitxers (per procés), i per tant una taula de fitxers (a tot el sistema).[2]

Comparació amb punters[modifica]

Mentre que un punter conté l'adreça de l'element al qual fa referència, un handle és una abstracció d'una referència que es gestiona externament; la seva opacitat permet que el referent sigui reubicat a la memòria pel sistema sense invalidar el maneig, fent-lo semblant a la memòria virtual per a punters, però encara més abstracte. De la mateixa manera, la capa extra d'indirecció també augmenta el control que té el sistema gestor sobre les operacions que es fan sobre el referent. Normalment, el mànec és un índex o un punter a una matriu global de làpides.[3]

Una fuga d'identificador és un tipus d'error de programari que es produeix quan un programa informàtic no allibera un identificador que havia assignat anteriorment. Aquesta és una forma de fuga de recursos, anàloga a una fuga de memòria per a la memòria assignada prèviament.

Seguretat[modifica]

En termes informàtics segurs, com que l'accés a un recurs mitjançant un identificador està mediat per un altre sistema, un maneig funciona com una capacitat: no només identifica un objecte, sinó que també associa drets d'accés. Per exemple, mentre que un nom de fitxer és falsificable (és només un identificador endevinable), un sistema extern dóna un identificador a un usuari i, per tant, representa no només la identitat, sinó també l'accés concedit.

Exemples[modifica]

Les nanses eren una solució popular per a la gestió de memòria en sistemes operatius dels anys noranta, com Mac OS [4] i Windows. L'estructura de dades FILE a la biblioteca d'E/S estàndard C és un identificador de fitxers, abstraint de la representació del fitxer subjacent (a Unix aquests són descriptors de fitxers). Igual que altres entorns d'escriptori, l'API de Windows utilitza en gran manera els identificadors per representar objectes del sistema i per proporcionar una via de comunicació entre el sistema operatiu i l'espai d'usuari. Per exemple, una finestra a l'escriptori es representa amb un mànec de tipus HWND (handle, finestra).Els identificadors doblement indirectes (on el maneig no és necessàriament un punter, però pot ser, per exemple, un nombre enter) han caigut en desgracia en els últims temps, ja que els augments de la memòria disponible i els algorismes de memòria virtual millorats han fet que l'ús del punter més senzill sigui més. atractiu. No obstant això, molts sistemes operatius encara apliquen el terme als punters a estructures de dades opaques i "privades" (punters opacs) o als índexs en matrius internes passats d'un procés al seu client.

Referències[modifica]

  1. Hertzfeld, Andy. The Original Macintosh: Hungarian (en anglès), 1982-01. 
  2. «Handles vs Threads vs Processes» (en anglès). [Consulta: 9 desembre 2023].
  3. «On Computing Handle and Tunnel Loops» (en anglès). [Consulta: 9 desembre 2023].
  4. Hertzfeld, Andy. «The Original Macintosh: Hungarian», gener 1982. [Consulta: 10 maig 2010].