'Diferència entre procés i fil' és una de les preguntes més freqüents de les entrevistes tècniques. Tant els processos com els fils estan relacionats entre si i molt semblants, per tant, creen confusió per entendre les diferències entre tots dos. El procés i el fil són una seqüència d'execució independent, però tots dos es diferencien de manera que els processos s'executen en diferents espais de memòria, mentre que els fils del mateix procés s'executen a l'espai de memòria compartida.
En aquest tema, entendrem la breu introducció dels processos i fils i quines altres diferències hi ha entre tots dos.
Què és el procés?
Un procés és una instància d'un programa que s'està executant. Quan executem un programa, no s'executa directament. Es necessita una mica de temps per seguir tots els passos necessaris per executar el programa, i seguir aquests passos d'execució es coneix com a procés.
Un procés pot crear altres processos per realitzar diverses tasques alhora; els processos creats es coneixen com clon o procés fill , i el procés principal es coneix com a procés parental . Cada procés conté el seu propi espai de memòria i no el comparteix amb els altres processos. Es coneix com l'entitat activa. Un procés típic es manté en la forma següent a la memòria.
Un procés al sistema operatiu pot romandre en qualsevol dels estats següents:
Com funcionen els processos?
Quan comencem a executar el programa, el processador comença a processar-lo. Fa els passos següents:
- En primer lloc, el programa es carrega a la memòria de l'ordinador en codi binari després de la traducció.
- Un programa requereix memòria i altres recursos del sistema operatiu per executar-lo. Els recursos com registres, comptador de programes i una pila, i aquests recursos els proporciona el sistema operatiu.
- Un registre pot tenir una instrucció, una adreça d'emmagatzematge o altres dades necessàries pel procés.
- El comptador de programes manté el seguiment de la seqüència del programa.
- La pila té informació sobre les subrutines actives d'un programa informàtic.
- Un programa pot tenir instàncies diferents, i cada instància del programa en execució es coneix com a procés individual.
Característiques del procés
- Cada vegada que creem un procés, hem de fer una crida de sistema independent per a cada procés al sistema operatiu. El forquilla La funció () crea el procés.
- Cada procés existeix dins de la seva pròpia adreça o espai de memòria.
- Cada procés és independent i tractat com un procés aïllat pel sistema operatiu.
- Els processos necessiten IPC (Inter-process Communication) per comunicar-se entre ells.
- No cal una sincronització adequada entre processos.
Què és Thread?
Un fil és el subconjunt d'un procés i també es coneix com a procés lleuger. Un procés pot tenir més d'un fil, i aquests fils són gestionats de manera independent pel planificador. Tots els fils d'un procés estan interrelacionats entre si. Els fils tenen informació comuna, com ara segment de dades, segment de codi, fitxers, etc., que es comparteix amb els seus fils iguals. Però conté els seus propis registres, pila i comptador.
Com funciona el fil?
Com hem comentat que un fil és un subprocés o una unitat d'execució dins d'un procés. Un procés pot contenir un sol fil a diversos fils. Un fil funciona de la següent manera:
- Quan s'inicia un procés, el sistema operatiu li assigna la memòria i els recursos. Cada fil d'un procés només comparteix la memòria i els recursos d'aquest procés.
- Els fils s'utilitzen principalment per millorar el processament d'una aplicació. En realitat, només s'executa un únic fil a la vegada, però a causa del canvi de context ràpid entre fils dóna la il·lusió que els fils funcionen paral·lelament.
- Si un sol fil s'executa en un procés, es coneix com un sol fil I si s'executen diversos fils simultàniament, es coneix com a multithreading.
Tipus de fils
Hi ha dos tipus de fils, que són:
1. Fil de nivell d'usuari
Com el seu nom indica, els fils a nivell d'usuari només són gestionats pels usuaris i el nucli no té la seva informació.
Són més ràpids, fàcils de crear i gestionar.
El nucli pren tots aquests fils com un sol procés i els gestiona com un sol procés.
Els fils a nivell d'usuari són implementats per biblioteques a nivell d'usuari, no per les trucades del sistema.
2. Fil a nivell de nucli
Els fils de nivell del nucli són gestionats pel sistema operatiu i gestionats pel seu nucli. Aquests fils són més lents que els fils a nivell d'usuari perquè la informació de context la gestiona el nucli. Per crear i implementar un fil a nivell del nucli, hem de fer una trucada al sistema.
Característiques de Thread
- Els fils comparteixen dades, memòria, recursos, fitxers, etc., amb els seus fils iguals dins d'un procés.
- Una trucada al sistema és capaç de crear més d'un fil.
- Cada fil té la seva pròpia pila i registre.
- Els fils poden comunicar-se directament entre ells, ja que comparteixen el mateix espai d'adreces.
- Els fils s'han de sincronitzar per evitar escenaris inesperats.
Diferències clau entre procés i fil
- Un procés és independent i no està contingut dins d'un altre procés, mentre que tots els fils estan continguts lògicament dins d'un procés.
- Els processos són molt pesats, mentre que els fils són lleugers.
- Un procés pot existir individualment ja que conté la seva pròpia memòria i altres recursos, mentre que un fil no pot tenir la seva existència individual.
- No cal una sincronització adequada entre processos. En canvi, els fils s'han de sincronitzar per evitar escenaris inesperats.
- Els processos es poden comunicar entre ells només mitjançant la comunicació entre processos; en canvi, els fils poden comunicar-se directament entre ells, ja que comparteixen el mateix espai d'adreces.
Taula de diferències entre procés i fil
Procés | Fil |
---|---|
Un procés és una instància d'un programa que s'està executant o processant. | El fil és un segment d'un procés o un procés lleuger que el planificador gestiona de manera independent. |
Els processos són independents els uns dels altres i, per tant, no comparteixen memòria ni altres recursos. | Els fils són interdependents i comparteixen memòria. |
Cada procés és tractat com un procés nou pel sistema operatiu. | El sistema operatiu pren tots els fils a nivell d'usuari com un sol procés. |
Si un procés es bloqueja pel sistema operatiu, l'altre procés pot continuar l'execució. | Si es bloqueja algun fil a nivell d'usuari, tots els seus fils iguals també es bloquegen perquè el sistema operatiu els pren tots com un sol procés. |
El canvi de context entre dos processos requereix molt de temps, ja que són pesats en comparació amb el fil. | El canvi de context entre els fils és ràpid perquè són molt lleugers. |
El segment de dades i el segment de codi de cada procés són independents de l'altre. | Els fils comparteixen el segment de dades i el segment de codi amb els seus fils iguals; per tant, també són els mateixos per a altres fils. |
El sistema operatiu triga més temps a finalitzar un procés. | Els fils es poden acabar en molt poc temps. |
La creació de nous processos requereix més temps, ja que cada procés nou necessita tots els recursos. | Un fil necessita menys temps per a la seva creació. |