# Estat del procés

En un sistema, els processos poden ocupar diversos estats. Aquests estats diferents poden no ser reconeguts com a tals pel nucli del sistema operatiu. Tanmateix, són una abstracció útil per a la comprensió dels processos.

## Estats del procés primari

Els següents estats de procés típics són possibles en sistemes informàtics de tot tipus. En la majoria d'aquests estats, els processos s'"emmagatzemen" a la memòria principal.

### Creat

Quan es crea un procés per primera vegada, ocupa l'estat " creat " o " nou ". En aquest estat, el procés espera l'admissió a l'estat "preparat". L'admissió serà aprovada o retardada per un programador d'admissió a llarg termini. Normalment, a la majoria dels sistemes informàtics d'escriptori, aquesta admissió s'aprovarà automàticament. Tanmateix, per als sistemes operatius en temps real, aquesta admissió es pot retardar. En un sistema en temps real, admetre massa processos a l'estat "preparat" pot provocar una sobresaturació i una sobrecontenció dels recursos del sistema, la qual cosa comporta la impossibilitat de complir els terminis del procés.

### A punt

S'ha carregat un procés "a punt" o "d'espera" a la memòria principal i s'està esperant l'execució en una CPU (per ser canviat de context a la CPU pel despatxador o planificador a curt termini). Pot haver-hi molts processos "preparats" en qualsevol punt de l'execució del sistema; per exemple, en un sistema d'un processador, només es pot executar un procés alhora, i tots els altres processos "executants simultàniament" estaran esperant execució.
Una cua preparada o una cua d'execució s'utilitza en la planificació de l'ordinador. Els ordinadors moderns són capaços d'executar molts programes o processos diferents al mateix temps. Tanmateix, la CPU només és capaç de gestionar un procés alhora. Els processos que estan preparats per a la CPU es mantenen en una cua per als processos "preparats". Altres processos que estan esperant que es produeixi un esdeveniment, com ara la càrrega d'informació des d'un disc dur o l'espera d'una connexió a Internet, no estan a la cua preparada.

### Corrent

Un procés passa a l'estat d'execució quan es tria per a l'execució. Les instruccions del procés les executa una de les CPU (o nuclis) del sistema. Hi ha com a màxim un procés en execució per CPU o nucli. Un procés es pot executar en qualsevol dels dos modes, és a dir, el mode del nucli o el mode d'usuari.

#### Mode de nucli

* Els processos en mode nucli poden accedir tant: adreces del nucli com de l'usuari.
* El mode nucli permet un accés sense restriccions al maquinari, inclosa l'execució d'instruccions privilegiades.
* Diverses instruccions (com les instruccions d'E/S i les instruccions d'aturada) tenen privilegis i només es poden executar en mode de nucli.
* Una crida al sistema des d'un programa d'usuari condueix a un canvi al mode del nucli.

#### Mode d'usuari

* Els processos en mode d'usuari poden accedir a les seves pròpies instruccions i dades, però no les instruccions i dades del nucli (o les d'altres processos).
* Quan el sistema informàtic s'executa en nom d'una aplicació d'usuari, el sistema està en mode d'usuari. Tanmateix, quan una aplicació d'usuari sol·licita un servei al sistema operatiu (mitjançant una crida al sistema), el sistema ha de passar del mode d'usuari al nucli per atendre la sol·licitud.
* El mode d'usuari evita diversos errors catastròfics:
** Hi ha un espai d'adreces virtuals aïllat per a cada procés en mode d'usuari.
** El mode d'usuari garanteix l'execució aïllada de cada procés perquè no afecti altres processos com a tals.
** No es permet l'accés directe a cap dispositiu de maquinari.

### Bloquejat

Un procés passa a un estat bloquejat quan no pot continuar sense que es produeixi un canvi extern d'estat o esdeveniment. Per exemple, un procés pot bloquejar-se en una crida a un dispositiu d'E/S, com ara una impressora, si la impressora no està disponible. Els processos també solen bloquejar-se quan requereixen l'entrada de l'usuari o requereixen accés a una secció crítica que s'ha d'executar atòmicament. Aquestes seccions crítiques estan protegides mitjançant un objecte de sincronització com un semàfor o un mutex.

### Acabat

Es pot finalitzar un procés, ja sigui des de l'estat "en execució" completant la seva execució o eliminant-se explícitament. En qualsevol d'aquests casos, el procés passa a l'estat "acabat". El programa subjacent ja no s'està executant, però el procés roman a la taula de processos com a procés zombi fins que el seu procés principal crida a la crida del sistema wait per llegir el seu estat de sortida, moment en què el procés s'elimina de la taula de processos i finalment finalitza el la vida útil del procés. Si el pare no pot trucar wait, això continua consumint l'entrada de la taula de processos (concretament l'identificador del procés o PID) i provoca una fuga de recursos.

## Referències

* ↑ «States of a Process in Operating Systems» (en anglès americà), 21-05-2018. [Consulta: 12 desembre 2023].
* ↑ «ps(1) - Linux manual page» (en anglès). [Consulta: 12 desembre 2023].
* ↑ «OS Process States - javatpoint» (en anglès). [Consulta: 12 desembre 2023].
* ↑ «3.2: Process States» (en anglès), 27-01-2021. [Consulta: 12 desembre 2023].
* ↑ Abraham Silberschatz. Operating System Concepts (en anglès), 2008-07-29. ISBN 978-0470128725.
* ↑ Maurice J. Bach. The design of the UNIX operating system (en anglès). Prentice-Hall, Inc. Upper Saddle River, NJ, USA ©1986, 1986. ISBN 0-13-201799-7.