SlideShare una empresa de Scribd logo
1 de 7
UNIVERSIDAD TECNOLOGICA DE SANTIAGO
UTESA
Área de Arquitectura e Ingeniería
Carrera de Informática
Sistema Operativo I
“¿Cómo UNIX implemente el ciclo de los procesos?”
Presentado A:
Ing. Héctor Fernández
Presentado Por:
Cristian García 2-12-0819
Santiago Rep. Dom.
20 de Febrero del 2015
Procesos
Se le llama proceso en Unix a un programa en ejecución y al objeto abstracto
que crea el sistema operativo para manejar el acceso de ese programa a los
recursos delsistema (memoria, CPU, dispositivos deE/S). Pueden coexistir
varias instancias de un mismo programa ejecutando en forma simultánea.
Cada una de ellas es un proceso diferente.
Unix es un sistema multiproceso por tiempo compartido. A los ojos de un
usuario en un momento dado hay múltiples programas en ejecución, cada
uno de ellos avanzando en su tarea. Sin embargo en una máquina con un solo
procesador hay en cada instante solamente un proceso ejecutando. Es el
sistema operativo el que va rotando el uso del procesador a intervalos breves
(alguna decena de milisegundos) entre los procesos definidos en el sistema
de forma que secrea la ilusión que todos avanzan simultáneamente.
El administrador del sistema dispone de herramientas para supervisar el
estado de los procesos y eventualmente tomar acciones para suspender o
detener la ejecución de un proceso o simplemente modificar su
comportamiento.
Las implementaciones clásicas de Unix administran los procesos en un
esquema similar al de nSystem. La estrategia de scheduling de procesos es un
poco más elaborada pues implementa procesos con prioridades y al mismo
tiempo intenta dar un buen tiempo de respuesta a los usuarios interactivos,
algo que no es fácil de lograr debido a las restricciones que impone la
memoria del procesador.
Información almacenada por el kernel
Para cada proceso definido en el sistema, el kernel del sistema operativo
almacena y mantiene al día varios tipos de información sobreel proceso. Esta
información podemos ordenarla de la siguiente forma:
* Información general. Identificadores deproceso, usuario y grupo
* Ambiente (variables, directorio actual, etc.)
* Información deE/S
* Información deEstado
* Espacio de direcciones del proceso. Áreas de trabajo (código ("text"), datos,
stack).
Identificadores
ProcessID (PID)
Al crearseun nuevo proceso sele asigna un identificador de proceso único.
Este número debe utilizarse por el administrador para referirsea un proceso
dado al ejecutar un comando.
Los PID son asignados por el sistema a cada nuevo proceso en orden
creciente comenzando desdecero. Si antes de un reboot del sistema se llega
al nro. Máximo, se vuelve a comenzar desde cero, salteando los procesos que
aún estén activos.
ParentProcessID (PPID)
La creación de nuevos procesos en Unix serealiza por la vía de duplicar un
proceso existente invocando al comando fork(). Alproceso originalse le
llama "padre" y al nuevo proceso "hijo". ElPPID deun proceso es el PID desu
proceso padre.
El mecanismo de creación de nuevos procesos en Unix con el comando fork()
se ve con más detalle en el apartado "Ciclo de vida de un proceso".
UID y EUID
Normalmente estos dos identificadores coinciden pero hay excepciones.
El User ID (UID) delproceso identifica al creador del proceso, esto es a la
persona que lo lanzó a correr. Este usuario y root son los únicos que pueden
modificar al proceso. El UID seutiliza con fines de tarificación o accounting. El
sistema de accounting carga a la cuenta del usuario identificado por el UID
del proceso por los recursos del sistema que el proceso utilice (tiempo de
CPU, impresoras, terminales, etc.).
El Effective User ID (EUID) en cambio seutiliza para determinar si el proceso
tiene permiso para acceder a archivos y otros recursos delsistema.
La forma más habitual de hacer que el EUID de un proceso sea el de un
usuario diferente del que lanza a correr el programa es activando el flag
setuid en el archivo del programa. Un ejemplo de esto son los comandos que
permiten a un usuario modificar su password, en quese debe modificar el
archivo passwd o equivalente del sistema sobreel cual el usuario obviamente
no tiene permiso de escritura. Habitualmente ese comando es un archivo de
root con setuid y el proceso correcon EUID de root.
GID y EGID
Es totalmente análogo a los identificadores de usuario pero para grupos de
usuarios. El GID se hereda del proceso padre. El EGID puede utilizarse igual que
el EUID para controlar el acceso del proceso a archivos.
En la mayoría de los sabores actuales de Unix el proceso puede estar en varios
grupos y se chequea contra toda la lista de grupos para definir si el proceso puede
acceder o no a un recurso.
Información de ambiente
Directorio actual
El proceso mantiene actualizado cuál es su directorio de trabajo.
Variablesdeambienteglobales.
Son heredadas por los procesos hijos.
Variablesdeambientelocales.
Solamente existen en el proceso que las define.
Terminaldecontrol.
En general los procesos están asociados a una terminal de control. Esta
terminal determina el valor por defecto de los archivos stdin, stdouty stderr
del proceso.
Una excepción a esto son los procesos llamados daemons, queuna vez
lanzados sedesvinculan de su terminal de controly siguen ejecutando
inclusive después de cerrada la sesión de usuario desdela cual se lanzaron a
correr.
Espacio de direcciones virtual
En la mayoría de los sistemas multiproceso como Unix, cada proceso tiene la
ilusión de disponer para siel espacio de direcciones completo del
procesador. En realidad el procesador veun espacio de direcciones virtual.
Este espacio está organizado en secciones para el código (text), datos, stack y
otras y generalmente está dividido en páginas. En un instante dado una
página puede estar residiendo en la memoria físicadel procesador o puede
estar almacenada en disco en un procedimiento llamado "swapping". El
sistema operativo, con el auxilio del hardware, mantiene al día una tabla con
el estado de cada página de memoria del proceso.
Estado de un proceso
Los estados básicos en los que puede estar un proceso son los siguientes:
* Durmiendo (asleep). En generala la espera de algún recurso compartido.
* Listo para ejecutar (runnable). A la espera que le toque el turno en el uso
de la CPU.
* Ejecutando (running). Puede estar ejecutando en modo kernel o en modo
usuario.
A su vez el proceso (o partes del espacio de memoria virtual del proceso)
puede estar cargado en memoria o "swapped" a disco.
Además de estos estados básicos un proceso puede estar detenido
(stopped). En este caso se le prohíbe ejecutar al proceso. Hay mecanismos
para detener y rearrancar un proceso a través de las señales STOP y CONT
que veremos más adelante.
El estado stopped es el estado en que queda un proceso lanzado a correr
desde un intérprete de comandos (Shell) cuando se presiona <Control-Z> o la
tecla configurada como "suspend" en el terminal que estemos utilizando.
Finalmente el otro estado en que a menudo un administrador encuentra a un
proceso es el estado zombie o exiting. Un proceso en este estado está en
proceso de terminación. Este caso se discute más en detalle en el apartado
"Ciclo de vida de un proceso".
Ciclo de vida de un proceso
El mecanismo de creación de un proceso en Unix es un poco peculiar. Un
proceso se crea invocando a una función del sistema operativo
llamada fork(). La función fork() crea una copia idéntica del proceso que la
invoca con excepción de:
* El nuevo proceso tiene un PID diferente
* El PPID delnuevo proceso es el PID del proceso original
* Se reinicia la información de tarificación del proceso (uso deCPU, etc.)
Al retorno de fork() sesiguen ejecutando las siguientes sentencias del
programa en forma concurrente. Para distinguir entre los dos procesos la
función fork() devuelveun cero al proceso hijo y el PID del nuevo proceso al
proceso padre. Normalmente el proceso hijo lanza luego un nuevo programa
ejecutando alguna variante de comando exec().
Si este es el mecanismo para crear un proceso, entonces ¿quién lanza a
correr el primer proceso? Luego del boot del sistema el kernel instala y deja
corriendo un proceso llamado init con PID=1. Una delas funciones
principales de init es lanzar mediante fork() intérpretes de comandos quea
su vez lanzarán los scripts de inicialización del sistema y los procesos delos
usuarios. Además deinit el kernel lanza algunos procesos más cuyo nombrey
función varía en los diferentes sabores deUnix. A excepción de estos
procesos lanzados por el kernel al inicio, todos los demás son descendientes
de init.
Normalmente un proceso termina invocando a la función exit() pasando
como parámetro un código de salida o exit code. El destinatario de ese
código de salida es el proceso padre. El proceso padrepuede esperar la
terminación de su proceso hijo invocando la función wait(). Esta función
manda al padre a dormir hasta que el hijo ejecute su exit() y devuelve el exit
code del proceso hijo.
Cuando el proceso hijo termina antes que el padre, el kernel debe conservar
el valor del exit code para pasarlo al padrecuando ejecute wait(). En esta
situación sedice que el proceso hijo está en el estado zombie. El kernel
devuelve todas las áreas de memoria solicitadas por el proceso pero debe
mantener alguna información sobreel proceso (al menos su PID y el exit
code).
Cuando el proceso padre termina primero el kernel encarga a init la tarea de
ejecutar el wait() necesario para terminar todo en forma ordenada. A
menudo init falla en esta función y suelen quedar procesos en estado zombie
hasta un nuevo reboot. Dado que un proceso zombieno consume recursos
fuera de su PID, esto por lo general no provoca problemas.

Más contenido relacionado

La actualidad más candente

La actualidad más candente (16)

Guia de procesos
Guia de procesosGuia de procesos
Guia de procesos
 
Doc. bismarck brito
Doc. bismarck britoDoc. bismarck brito
Doc. bismarck brito
 
Gnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemasGnu linux programacion-de-sistemas
Gnu linux programacion-de-sistemas
 
Sistemas operativos unidad 2
Sistemas operativos unidad 2Sistemas operativos unidad 2
Sistemas operativos unidad 2
 
Programaciongnulinux
ProgramaciongnulinuxProgramaciongnulinux
Programaciongnulinux
 
Unidad 2 jacinto
Unidad 2 jacintoUnidad 2 jacinto
Unidad 2 jacinto
 
Planificador
PlanificadorPlanificador
Planificador
 
Manual Bàsic PS Tools
Manual Bàsic PS ToolsManual Bàsic PS Tools
Manual Bàsic PS Tools
 
Ps tools
Ps toolsPs tools
Ps tools
 
Trabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzonTrabajo sistemas operativos de camilo pinzon
Trabajo sistemas operativos de camilo pinzon
 
Azucenabarzola
AzucenabarzolaAzucenabarzola
Azucenabarzola
 
Procesos linux
Procesos linuxProcesos linux
Procesos linux
 
Contenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMXContenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMX
 
37 reunir información del sistema
37  reunir información del sistema37  reunir información del sistema
37 reunir información del sistema
 
Tema3 procesos
Tema3 procesos Tema3 procesos
Tema3 procesos
 
Sistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesosSistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesos
 

Destacado

Gatorade_Mediosgraficos_luisfelipebustamante
Gatorade_Mediosgraficos_luisfelipebustamanteGatorade_Mediosgraficos_luisfelipebustamante
Gatorade_Mediosgraficos_luisfelipebustamanteLuis Bustamante
 
Historia de gatorade
Historia de gatoradeHistoria de gatorade
Historia de gatoradeCELAYA92
 
Red Bull Marketing Campaign
Red Bull Marketing CampaignRed Bull Marketing Campaign
Red Bull Marketing CampaignJessica Dunning
 
Etiqueta, envase, empaque, embalaje
Etiqueta, envase, empaque, embalajeEtiqueta, envase, empaque, embalaje
Etiqueta, envase, empaque, embalajevictorhdezr
 
Redbull Marketing strategy
Redbull Marketing strategyRedbull Marketing strategy
Redbull Marketing strategyApurva Kavishwar
 

Destacado (10)

Armandonavarrounidad3
Armandonavarrounidad3Armandonavarrounidad3
Armandonavarrounidad3
 
Tabla comparativa
Tabla comparativaTabla comparativa
Tabla comparativa
 
Gatorade_Mediosgraficos_luisfelipebustamante
Gatorade_Mediosgraficos_luisfelipebustamanteGatorade_Mediosgraficos_luisfelipebustamante
Gatorade_Mediosgraficos_luisfelipebustamante
 
Gatorade
GatoradeGatorade
Gatorade
 
Historia de gatorade
Historia de gatoradeHistoria de gatorade
Historia de gatorade
 
Red bull ppt
Red bull pptRed bull ppt
Red bull ppt
 
Red Bull Marketing Campaign
Red Bull Marketing CampaignRed Bull Marketing Campaign
Red Bull Marketing Campaign
 
Etiqueta, envase, empaque, embalaje
Etiqueta, envase, empaque, embalajeEtiqueta, envase, empaque, embalaje
Etiqueta, envase, empaque, embalaje
 
Luminarias
LuminariasLuminarias
Luminarias
 
Redbull Marketing strategy
Redbull Marketing strategyRedbull Marketing strategy
Redbull Marketing strategy
 

Similar a Cómo UNIX implementa el ciclo de vida de los procesos

Similar a Cómo UNIX implementa el ciclo de vida de los procesos (20)

Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesos
 
Tarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis RiveroTarea 3_individual_Nelis Rivero
Tarea 3_individual_Nelis Rivero
 
Cuestionario procesos
Cuestionario procesos Cuestionario procesos
Cuestionario procesos
 
27 de oct
27 de oct27 de oct
27 de oct
 
Tarea 3 actividad individual
Tarea 3 actividad individualTarea 3 actividad individual
Tarea 3 actividad individual
 
Procesos concurrencia
Procesos  concurrenciaProcesos  concurrencia
Procesos concurrencia
 
27 de oct
27 de oct27 de oct
27 de oct
 
Funciones principales de los sistemas operativos
Funciones principales de los sistemas operativosFunciones principales de los sistemas operativos
Funciones principales de los sistemas operativos
 
acti27 de oct
acti27 de octacti27 de oct
acti27 de oct
 
Gestión de procesos
Gestión de procesosGestión de procesos
Gestión de procesos
 
Cap3
Cap3Cap3
Cap3
 
Programaciongnulinux
ProgramaciongnulinuxProgramaciongnulinux
Programaciongnulinux
 
Gestión de Procesos
Gestión de ProcesosGestión de Procesos
Gestión de Procesos
 
Portafolio 2
Portafolio 2Portafolio 2
Portafolio 2
 
Procesos
ProcesosProcesos
Procesos
 
Ejemplo Pdf
Ejemplo PdfEjemplo Pdf
Ejemplo Pdf
 
Ud Procesos
Ud  ProcesosUd  Procesos
Ud Procesos
 
Estados de un proceso
Estados de un procesoEstados de un proceso
Estados de un proceso
 
Nucleo del sistema operativo
Nucleo del sistema operativoNucleo del sistema operativo
Nucleo del sistema operativo
 
Le
LeLe
Le
 

Último

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 

Último (15)

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 

Cómo UNIX implementa el ciclo de vida de los procesos

  • 1. UNIVERSIDAD TECNOLOGICA DE SANTIAGO UTESA Área de Arquitectura e Ingeniería Carrera de Informática Sistema Operativo I “¿Cómo UNIX implemente el ciclo de los procesos?” Presentado A: Ing. Héctor Fernández Presentado Por: Cristian García 2-12-0819 Santiago Rep. Dom. 20 de Febrero del 2015
  • 2. Procesos Se le llama proceso en Unix a un programa en ejecución y al objeto abstracto que crea el sistema operativo para manejar el acceso de ese programa a los recursos delsistema (memoria, CPU, dispositivos deE/S). Pueden coexistir varias instancias de un mismo programa ejecutando en forma simultánea. Cada una de ellas es un proceso diferente. Unix es un sistema multiproceso por tiempo compartido. A los ojos de un usuario en un momento dado hay múltiples programas en ejecución, cada uno de ellos avanzando en su tarea. Sin embargo en una máquina con un solo procesador hay en cada instante solamente un proceso ejecutando. Es el sistema operativo el que va rotando el uso del procesador a intervalos breves (alguna decena de milisegundos) entre los procesos definidos en el sistema de forma que secrea la ilusión que todos avanzan simultáneamente. El administrador del sistema dispone de herramientas para supervisar el estado de los procesos y eventualmente tomar acciones para suspender o detener la ejecución de un proceso o simplemente modificar su comportamiento. Las implementaciones clásicas de Unix administran los procesos en un esquema similar al de nSystem. La estrategia de scheduling de procesos es un poco más elaborada pues implementa procesos con prioridades y al mismo tiempo intenta dar un buen tiempo de respuesta a los usuarios interactivos, algo que no es fácil de lograr debido a las restricciones que impone la memoria del procesador. Información almacenada por el kernel Para cada proceso definido en el sistema, el kernel del sistema operativo almacena y mantiene al día varios tipos de información sobreel proceso. Esta información podemos ordenarla de la siguiente forma: * Información general. Identificadores deproceso, usuario y grupo * Ambiente (variables, directorio actual, etc.) * Información deE/S * Información deEstado * Espacio de direcciones del proceso. Áreas de trabajo (código ("text"), datos, stack).
  • 3. Identificadores ProcessID (PID) Al crearseun nuevo proceso sele asigna un identificador de proceso único. Este número debe utilizarse por el administrador para referirsea un proceso dado al ejecutar un comando. Los PID son asignados por el sistema a cada nuevo proceso en orden creciente comenzando desdecero. Si antes de un reboot del sistema se llega al nro. Máximo, se vuelve a comenzar desde cero, salteando los procesos que aún estén activos. ParentProcessID (PPID) La creación de nuevos procesos en Unix serealiza por la vía de duplicar un proceso existente invocando al comando fork(). Alproceso originalse le llama "padre" y al nuevo proceso "hijo". ElPPID deun proceso es el PID desu proceso padre. El mecanismo de creación de nuevos procesos en Unix con el comando fork() se ve con más detalle en el apartado "Ciclo de vida de un proceso". UID y EUID Normalmente estos dos identificadores coinciden pero hay excepciones. El User ID (UID) delproceso identifica al creador del proceso, esto es a la persona que lo lanzó a correr. Este usuario y root son los únicos que pueden modificar al proceso. El UID seutiliza con fines de tarificación o accounting. El sistema de accounting carga a la cuenta del usuario identificado por el UID del proceso por los recursos del sistema que el proceso utilice (tiempo de CPU, impresoras, terminales, etc.). El Effective User ID (EUID) en cambio seutiliza para determinar si el proceso tiene permiso para acceder a archivos y otros recursos delsistema. La forma más habitual de hacer que el EUID de un proceso sea el de un usuario diferente del que lanza a correr el programa es activando el flag setuid en el archivo del programa. Un ejemplo de esto son los comandos que permiten a un usuario modificar su password, en quese debe modificar el archivo passwd o equivalente del sistema sobreel cual el usuario obviamente
  • 4. no tiene permiso de escritura. Habitualmente ese comando es un archivo de root con setuid y el proceso correcon EUID de root. GID y EGID Es totalmente análogo a los identificadores de usuario pero para grupos de usuarios. El GID se hereda del proceso padre. El EGID puede utilizarse igual que el EUID para controlar el acceso del proceso a archivos. En la mayoría de los sabores actuales de Unix el proceso puede estar en varios grupos y se chequea contra toda la lista de grupos para definir si el proceso puede acceder o no a un recurso. Información de ambiente Directorio actual El proceso mantiene actualizado cuál es su directorio de trabajo. Variablesdeambienteglobales. Son heredadas por los procesos hijos. Variablesdeambientelocales. Solamente existen en el proceso que las define. Terminaldecontrol. En general los procesos están asociados a una terminal de control. Esta terminal determina el valor por defecto de los archivos stdin, stdouty stderr del proceso. Una excepción a esto son los procesos llamados daemons, queuna vez lanzados sedesvinculan de su terminal de controly siguen ejecutando inclusive después de cerrada la sesión de usuario desdela cual se lanzaron a correr.
  • 5. Espacio de direcciones virtual En la mayoría de los sistemas multiproceso como Unix, cada proceso tiene la ilusión de disponer para siel espacio de direcciones completo del procesador. En realidad el procesador veun espacio de direcciones virtual. Este espacio está organizado en secciones para el código (text), datos, stack y otras y generalmente está dividido en páginas. En un instante dado una página puede estar residiendo en la memoria físicadel procesador o puede estar almacenada en disco en un procedimiento llamado "swapping". El sistema operativo, con el auxilio del hardware, mantiene al día una tabla con el estado de cada página de memoria del proceso. Estado de un proceso Los estados básicos en los que puede estar un proceso son los siguientes: * Durmiendo (asleep). En generala la espera de algún recurso compartido. * Listo para ejecutar (runnable). A la espera que le toque el turno en el uso de la CPU. * Ejecutando (running). Puede estar ejecutando en modo kernel o en modo usuario. A su vez el proceso (o partes del espacio de memoria virtual del proceso) puede estar cargado en memoria o "swapped" a disco.
  • 6. Además de estos estados básicos un proceso puede estar detenido (stopped). En este caso se le prohíbe ejecutar al proceso. Hay mecanismos para detener y rearrancar un proceso a través de las señales STOP y CONT que veremos más adelante. El estado stopped es el estado en que queda un proceso lanzado a correr desde un intérprete de comandos (Shell) cuando se presiona <Control-Z> o la tecla configurada como "suspend" en el terminal que estemos utilizando. Finalmente el otro estado en que a menudo un administrador encuentra a un proceso es el estado zombie o exiting. Un proceso en este estado está en proceso de terminación. Este caso se discute más en detalle en el apartado "Ciclo de vida de un proceso". Ciclo de vida de un proceso El mecanismo de creación de un proceso en Unix es un poco peculiar. Un proceso se crea invocando a una función del sistema operativo llamada fork(). La función fork() crea una copia idéntica del proceso que la invoca con excepción de: * El nuevo proceso tiene un PID diferente * El PPID delnuevo proceso es el PID del proceso original * Se reinicia la información de tarificación del proceso (uso deCPU, etc.) Al retorno de fork() sesiguen ejecutando las siguientes sentencias del programa en forma concurrente. Para distinguir entre los dos procesos la función fork() devuelveun cero al proceso hijo y el PID del nuevo proceso al proceso padre. Normalmente el proceso hijo lanza luego un nuevo programa ejecutando alguna variante de comando exec(). Si este es el mecanismo para crear un proceso, entonces ¿quién lanza a correr el primer proceso? Luego del boot del sistema el kernel instala y deja corriendo un proceso llamado init con PID=1. Una delas funciones principales de init es lanzar mediante fork() intérpretes de comandos quea su vez lanzarán los scripts de inicialización del sistema y los procesos delos usuarios. Además deinit el kernel lanza algunos procesos más cuyo nombrey función varía en los diferentes sabores deUnix. A excepción de estos procesos lanzados por el kernel al inicio, todos los demás son descendientes de init.
  • 7. Normalmente un proceso termina invocando a la función exit() pasando como parámetro un código de salida o exit code. El destinatario de ese código de salida es el proceso padre. El proceso padrepuede esperar la terminación de su proceso hijo invocando la función wait(). Esta función manda al padre a dormir hasta que el hijo ejecute su exit() y devuelve el exit code del proceso hijo. Cuando el proceso hijo termina antes que el padre, el kernel debe conservar el valor del exit code para pasarlo al padrecuando ejecute wait(). En esta situación sedice que el proceso hijo está en el estado zombie. El kernel devuelve todas las áreas de memoria solicitadas por el proceso pero debe mantener alguna información sobreel proceso (al menos su PID y el exit code). Cuando el proceso padre termina primero el kernel encarga a init la tarea de ejecutar el wait() necesario para terminar todo en forma ordenada. A menudo init falla en esta función y suelen quedar procesos en estado zombie hasta un nuevo reboot. Dado que un proceso zombieno consume recursos fuera de su PID, esto por lo general no provoca problemas.