SlideShare una empresa de Scribd logo
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

PPT
Curso de software03
PPTX
Administración y Comando Básicos
PPTX
Presentacion
PDF
Linux Kernel - System Calls - Modules - Drivers
DOCX
Proceso de arranque de un so
PDF
Unidad 2
PDF
Practica de procesos en Linux
PPSX
Curso básico linux
Curso de software03
Administración y Comando Básicos
Presentacion
Linux Kernel - System Calls - Modules - Drivers
Proceso de arranque de un so
Unidad 2
Practica de procesos en Linux
Curso básico linux

La actualidad más candente (16)

DOCX
Guia de procesos
DOCX
Doc. bismarck brito
PDF
Gnu linux programacion-de-sistemas
PPTX
Sistemas operativos unidad 2
PDF
PDF
Unidad 2 jacinto
PPT
Planificador
PDF
Manual Bàsic PS Tools
DOCX
Ps tools
DOCX
Trabajo sistemas operativos de camilo pinzon
DOCX
Azucenabarzola
PDF
Procesos linux
PDF
Contenedores 101 Digital Ocean CDMX
PDF
37 reunir información del sistema
PDF
PPTX
Sistemas Operativos Gestion de procesos
Guia de procesos
Doc. bismarck brito
Gnu linux programacion-de-sistemas
Sistemas operativos unidad 2
Unidad 2 jacinto
Planificador
Manual Bàsic PS Tools
Ps tools
Trabajo sistemas operativos de camilo pinzon
Azucenabarzola
Procesos linux
Contenedores 101 Digital Ocean CDMX
37 reunir información del sistema
Sistemas Operativos Gestion de procesos
Publicidad

Destacado (10)

PDF
Armandonavarrounidad3
PDF
Tabla comparativa
PPTX
Gatorade_Mediosgraficos_luisfelipebustamante
DOCX
Gatorade
PDF
Historia de gatorade
PPTX
Red bull ppt
PDF
Red Bull Marketing Campaign
PDF
Etiqueta, envase, empaque, embalaje
PPTX
Luminarias
PPT
Redbull Marketing strategy
Armandonavarrounidad3
Tabla comparativa
Gatorade_Mediosgraficos_luisfelipebustamante
Gatorade
Historia de gatorade
Red bull ppt
Red Bull Marketing Campaign
Etiqueta, envase, empaque, embalaje
Luminarias
Redbull Marketing strategy
Publicidad

Similar a Procesos sistema computacional UNIX (20)

PPT
Semana 10 administracion de procesos
DOCX
Tarea 3_individual_Nelis Rivero
DOCX
Cuestionario procesos
DOCX
DOCX
Tarea 3 actividad individual
PDF
Procesos concurrencia
DOCX
27 de oct
PDF
Funciones principales de los sistemas operativos
DOCX
acti27 de oct
PDF
Gestión de procesos
PPTX
Cap3
PDF
Programaciongnulinux
PDF
Gestión de Procesos
PPTX
Portafolio 2
PPSX
Procesos
PDF
Ejemplo Pdf
PDF
Ud Procesos
PDF
Estados de un proceso
PDF
2_PROCESOS de sistemas operativos de la.pdf
DOCX
Nucleo del sistema operativo
Semana 10 administracion de procesos
Tarea 3_individual_Nelis Rivero
Cuestionario procesos
Tarea 3 actividad individual
Procesos concurrencia
27 de oct
Funciones principales de los sistemas operativos
acti27 de oct
Gestión de procesos
Cap3
Programaciongnulinux
Gestión de Procesos
Portafolio 2
Procesos
Ejemplo Pdf
Ud Procesos
Estados de un proceso
2_PROCESOS de sistemas operativos de la.pdf
Nucleo del sistema operativo

Último (20)

PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Curso de generación de energía mediante sistemas solares
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
clase auditoria informatica 2025.........
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
informe_fichas1y2_corregido.docx (2) (1).pdf
historia_web de la creacion de un navegador_presentacion.pptx
Presentación PASANTIAS AuditorioOO..pptx
Curso de generación de energía mediante sistemas solares
Historia Inteligencia Artificial Ana Romero.pptx
clase auditoria informatica 2025.........
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Propuesta BKP servidores con Acronis1.pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
MANUAL de recursos humanos para ODOO.pdf
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Diapositiva proyecto de vida, materia catedra
Influencia-del-uso-de-redes-sociales.pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
SAP Transportation Management para LSP, TM140 Col18
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
TRABAJO DE TECNOLOGIA.pdf...........................
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...

Procesos sistema computacional UNIX

  • 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.