Procés orfe

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

Un procés orfe és un procés informàtic el procés principal del qual s'ha acabat o finalitzat, tot i que continua executant-se.[1]

SO semblantc a Unix[modifica]

En un sistema operatiu semblant a Unix, qualsevol procés orfe serà adoptat immediatament per un procés del sistema definit per la implementació: el nucli configura el pare per a aquest procés. Aquesta operació s'anomena re-parenting i es produeix automàticament. Tot i que tècnicament el procés té un procés del sistema com a pare, encara es diu procés orfe ja que el procés que el va crear originalment ja no existeix. En altres sistemes, els processos orfes són immediatament finalitzats pel nucli. Històricament, la majoria dels sistemes Unix han utilitzat init com el procés del sistema al qual es reparenten els orfes, però en els sistemes moderns DragonFly BSD, FreeBSD i Linux, un procés orfe es pot convertir en un procés "subreaper" en lloc d'init.[2][3]

Un procés pot quedar orfe sense voler, com quan el procés principal finalitza o es bloqueja. El mecanisme del grup de processos a la majoria de sistemes operatius semblants a Unix es pot utilitzar per ajudar a protegir contra l'orfe accidental, on en coordinació amb l'intèrpret d'ordres de l'usuari intentarà finalitzar tots els processos secundaris amb el senyal de "penjar" (SIGHUP), en lloc de deixar-los. continuar corrent com a orfes. Més precisament, com a part del control de treballs, quan l'intèrpret d'ordres surt, perquè és el "líder de sessió" (el seu identificador de sessió és igual al seu identificador de procés), la sessió d'inici corresponent finalitza i l'intèrpret d'ordres envia SIGHUP a tots els seus treballs (representació interna de grups de processos).[4]

De vegades és desitjable deixar orfe intencionadament un procés, generalment per permetre que un treball de llarga durada es completi sense més atenció de l'usuari, o per iniciar un servei o agent d'execució indefinida; aquests processos (sense una sessió associada) es coneixen com a dimonis, especialment si s'executen indefinidament. Un enfocament de baix nivell és bifurcar dues vegades, executar el procés desitjat en el nét i acabar immediatament amb el nen. El procés de nét ara està orfe i no és adoptat pel seu avi, sinó més aviat per init. Les alternatives de nivell superior eluden el maneig de la penjada de l'intèrpret d'ordres, ja sigui dient al procés fill que ignori SIGHUP (utilitzant nohup), o eliminant la feina de la taula de treballs o dient a l'intèrpret d'ordres que no enviï SIGHUP al final de la sessió (utilitzant rebutjada en qualsevol dels casos).). En qualsevol cas, l'identificador de sessió (identificador de procés del líder de la sessió, l'intèrpret d'ordres) no canvia i l'identificador de procés de la sessió que ha finalitzat encara està en ús fins que tots els processos orfes finalitzin o canviïn l'identificador de sessió (iniciant un nova sessió mitjançant setsid(2)).

Per simplificar l'administració del sistema, sovint és desitjable utilitzar un embolcall de serveis de manera que els processos no dissenyats per ser utilitzats com a serveis responguin correctament als senyals del sistema. Una alternativa per mantenir els processos en execució sense deixar-los orfes és utilitzar un multiplexor de terminal i executar els processos en una sessió separada (o una sessió que es desconnecta), de manera que la sessió no s'acaba i el procés no queda orfe.

També es diu que un procés de servidor està orfe quan el client que va iniciar la sol·licitud es bloqueja inesperadament després de fer la sol·licitud mentre deixa el procés del servidor en execució.

Aquests processos orfes malgasten els recursos del servidor i poden deixar un servidor sense recursos. Tanmateix, hi ha diverses solucions al problema del procés orfe:

  1. La terminació és la tècnica més utilitzada; en aquest cas es mata l'orfe.
  2. La reencarnació és una tècnica en la qual les màquines intenten localitzar periòdicament els pares de qualsevol càlcul remot; moment en què es maten els processos orfes.
  3. La caducitat és una tècnica on cada procés té un cert temps per acabar abans de ser assassinat. Si cal, un procés pot "demanar" més temps per acabar abans que expiri el temps assignat.

Referències[modifica]

  1. «Zombie and Orphan Processes in C» (en anglès americà), 16-05-2016. [Consulta: 10 desembre 2023].
  2. «What is a "subreaper" process?» (en anglès).
  3. «New parent process when the parent process dies» (en anglès).
  4. «Orphan Process | USCIS» (en anglès), 24-07-2023. [Consulta: 10 desembre 2023].