0% encontró este documento útil (0 votos)
106 vistas9 páginas

Procesos

Este documento describe los procesos y su funcionamiento en sistemas operativos. Un proceso es un programa en ejecución que tiene asociado un espacio de direcciones y una entrada en la tabla de procesos que almacena la información necesaria para reiniciar el proceso. Los sistemas operativos pueden ejecutar múltiples procesos de forma concurrente mediante el cambio rápido entre ellos.

Cargado por

piosodom
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
106 vistas9 páginas

Procesos

Este documento describe los procesos y su funcionamiento en sistemas operativos. Un proceso es un programa en ejecución que tiene asociado un espacio de direcciones y una entrada en la tabla de procesos que almacena la información necesaria para reiniciar el proceso. Los sistemas operativos pueden ejecutar múltiples procesos de forma concurrente mediante el cambio rápido entre ellos.

Cargado por

piosodom
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Procesos

Generalidades
Un proceso es en esencia un programa en ejecución. Cada proceso tiene
asociado un espacio de direcciones, una lista de ubicaciones de memoria que
va desde algún mínimo (generalmente 0) hasta cierto valor máximo, donde
el proceso puede leer y escribir información. El espacio de direcciones
contiene el programa ejecutable, los datos del programa y su pila. También
hay asociado a cada proceso un conjunto de recursos, que comúnmente
incluye registros (el contador de programa y el apuntador de pila, entre ellos),
una lista de archivos abiertos, alarmas pendientes, listas de procesos
relacionados y toda la demás información necesaria para ejecutar el
programa. En esencia, un proceso es un recipiente que guarda toda la
información necesaria para ejecutar un programa.

Sesión con varios procesos abiertos y en ejecución


El usuario puede haber iniciado un programa de edición de video para
convertir un video de una hora a un formato específico (algo que puede tardar
horas) y después irse a navegar en la Web. Mientras tanto, un proceso en
segundo plano que despierta en forma periódica para comprobar los mensajes
entrantes puede haber empezado a ejecutarse. Así tenemos (cuando menos)
tres procesos activos: el editor de video, el navegador Web y el lector de
correo electrónico. Cada cierto tiempo, el sistema operativo decide detener
la ejecución de un proceso y empezar a ejecutar otro; por ejemplo, debido a
que el primero ha utilizado más tiempo del que le correspondía de la CPU en
el último segundo. Cuando un proceso se suspende en forma temporal como
en el ejemplo anterior, debe reiniciarse después exactamente en el mismo
estado que tenía cuando se detuvo. Esto significa que toda la información
acerca del proceso debe guardarse en forma explícita en alguna parte durante
la suspensión. Por ejemplo, el proceso puede tener varios archivos abiertos
para leerlos al mismo tiempo. Con cada uno de estos archivos hay un
apuntador asociado que proporciona la posición actual (es decir, el número
del byte o registro que se va a leer a continuación). Cuando un proceso se
suspende en forma temporal, todos estos apuntadores deben guardarse de
manera que una llamada a read que se ejecute después de reiniciar el proceso
lea los datos apropiados. En muchos sistemas operativos, toda la información
acerca de cada proceso (además del contenido de su propio espacio de
direcciones) se almacena en una tabla del sistema operativo, conocida como
la tabla de procesos, la cual es un arreglo (o lista enlazada) de estructuras,
una para cada proceso que se encuentre actualmente en existencia.

REPORT THIS AD

Así, un proceso (suspendido) consiste en su espacio de direcciones, que se


conoce comúnmente como imagen de núcleo (en honor de las memorias de
núcleo magnético utilizadas antaño) y su entrada en la tabla de procesos, que
guarda el contenido de sus registros y muchos otros elementos necesarios
para reiniciar el proceso más adelante.

Árbol de Procesos
Las llamadas al sistema de administración de procesos clave son las que se
encargan de la creación y la terminación de los procesos. Considere un
ejemplo común. Un proceso llamado intérprete de comandos o shell lee
comandos de una terminal. El usuario acaba de escribir un comando,
solicitando la compilación de un programa. El shell debe entonces crear un
proceso para ejecutar el compilador. Cuando ese proceso ha terminado la
compilación, ejecuta una llamada al sistema para terminarse a sí mismo.Si un
proceso puede crear uno o más procesos aparte (conocidos como procesos
hijos) y estos procesos a su vez pueden crear procesos hijos, llegamos
rápidamente la estructura de árbol de procesos de la gráfica. Los procesos
relacionados que cooperan para realizar un cierto trabajo a menudo necesitan
comunicarse entre sí y sincronizar sus actividades. A esta comunicación se
le conoce como comunicación entre procesos.
Hay otras llamadas al sistema de procesos disponibles para solicitar más
memoria (o liberar la memoria sin utilizar), esperar a que termine un proceso
hijo y superponer su programa con uno distinto. En algunas ocasiones se
tiene la necesidad de transmitir información a un proceso en ejecución que
no está esperando esta información. Por ejemplo, un proceso que se
comunica con otro, en una computadora distinta, envía los mensajes al
proceso remoto a través de una red de computadoras. Para protegerse contra
la posibilidad de que se pierda un mensaje o su contestación, el emisor puede
solicitar que su propio sistema operativo le notifique después de cierto
número de segundos para que pueda retransmitir el mensaje, si no se ha
recibido aún la señal de aceptación. Después de asignar este temporizador, el
programa puede continuar realizando otro trabajo. Cuando ha transcurrido el
número especificado de segundos, el sistema operativo envía una señal de
alarma al proceso. La señal provoca que el proceso suspenda en forma
temporal lo que esté haciendo, almacene sus registros en la pila y empiece a
ejecutar un procedimiento manejador de señales especial, por ejemplo, para
retransmitir un mensaje que se considera perdido. Cuando termina el
manejador de señales, el proceso en ejecución se reinicia en el estado en el
que se encontraba justo antes de la señal. Las señales son la analogía en
software de las interrupciones de hardware y se pueden generar mediante una
variedad de causas además de la expiración de los temporizadores. Muchas
traps detectadas por el hardware, como la ejecución de una instrucción ilegal
o el uso de una dirección inválida, también se convierten en señales que se
envían al proceso culpable.

REPORT THIS AD
Cada persona autorizada para utilizar un sistema recibe una UID (User
Identification, Identificación de usuario) que el administrador del sistema le
asigna. Cada proceso iniciado tiene el UID de la persona que lo inició. Un
proceso hijo tiene el mismo UID que su padre. Los usuarios pueden ser
miembros de grupos, cada uno de los cuales tiene una GID (Group
Identification, Identificación de grupo).

Una UID conocida como


superusuario (superuser en UNIX) tiene poder especial y puede violar
muchas de las reglas de protección. En instalaciones extensas, sólo el
administrador del sistema conoce la contraseña requerida para convertirse en
superusuario, pero muchos de los usuarios ordinarios (en especial los
estudiantes) dedican un esfuerzo considerable para tratar de encontrar fallas
en el sistema que les permitan convertirse en superusuario sin la contraseña.

Creación de un proceso
Los sistemas operativos necesitan cierta manera de crear procesos. En
sistemas muy simples o sistemas diseñados para ejecutar sólo una aplicación
(por ejemplo, el controlador en un horno de microondas), es posible tener
presentes todos los procesos que se vayan a requerir cuando el sistema inicie.
No obstante, en los sistemas de propósito general se necesita cierta forma de
crear y terminar procesos según sea necesario durante la operación. Ahora
analizaremos varias de estas cuestiones.

REPORT THIS AD

Hay cuatro eventos principales que provocan la creación de procesos:

 El arranque del sistema.


 La ejecución, desde un proceso, de una llamada al sistema para creación de
procesos.
 Una petición de usuario para crear un proceso.
 El inicio de un trabajo por lotes.
Administrador de Tareas de MS
Windows
Generalmente, cuando se arranca un sistema operativo se crean varios
procesos. Algunos de ellos son procesos en primer plano; es decir, procesos
que interactúan con los usuarios (humanos) y realizan trabajo para ellos.
Otros son procesos en segundo plano, que no están asociados con usuarios
específicos sino con una función específica. Por ejemplo, se puede diseñar
un proceso en segundo plano para aceptar el correo electrónico entrante, que
permanece inactivo la mayor parte del día pero que se activa cuando llega un
mensaje. Se puede diseñar otro proceso en segundo plano para aceptar
peticiones entrantes para las páginas Web hospedadas en ese equipo, que
despierte cuando llegue una petición para darle servicio. Los procesos que
permanecen en segundo plano para manejar ciertas actividades como correo
electrónico, páginas Web, noticias, impresiones, etcétera, se conocen como
demonios (daemons). Los sistemas grandes tienen comúnmente docenas de
ellos. En UNIX podemos utilizar el programa ps para listar los procesos en
ejecución. En Windows podemos usar el administrador de tareas. Además de
los procesos que se crean al arranque, posteriormente se pueden crear otros.
A menudo, un proceso en ejecución emitirá llamadas al sistema para crear
uno o más procesos nuevos, para que le ayuden a realizar su trabajo. En
especial, es útil crear procesos cuando el trabajo a realizar se puede formular
fácilmente en términos de varios procesos interactivos relacionados entre sí,
pero independientes en los demás aspectos. Por ejemplo, si se va a obtener
una gran cantidad de datos a través de una red para su posterior
procesamiento, puede ser conveniente crear un proceso para obtener los datos
y colocarlos en un búfer compartido, mientras un segundo proceso remueve
los elementos de datos y los procesa. En un multiprocesador, al permitir que
cada proceso se ejecute en una CPU distinta también se puede hacer que el
trabajo se realice con mayor rapidez.

Cónsola de UNIX
En los sistemas interactivos, los usuarios pueden iniciar un programa
escribiendo un comando o haciendo (doble) clic en un icono. Cualquiera de
las dos acciones inicia un proceso y ejecuta el programa seleccionado. En los
sistemas UNIX basados en comandos que ejecutan X, el nuevo proceso se
hace cargo de la ventana en la que se inició. En Microsoft Windows, cuando
se inicia un proceso no tiene una ventana, pero puede crear una (o más) y la
mayoría lo hace. En ambos sistemas, los usuarios pueden tener varias
ventanas abiertas a la vez, cada una ejecutando algún proceso. Mediante el
ratón, el usuario puede seleccionar una ventana e interactuar con el proceso,
por ejemplo para proveer datos cuando sea necesario.

REPORT THIS AD

La última situación en la que se crean los procesos se aplica sólo a los


sistemas de procesamiento por lotes que se encuentran en las mainframes
grandes. Aquí los usuarios pueden enviar trabajos de procesamiento por lotes
al sistema (posiblemente en forma remota). Cuando el sistema operativo
decide que tiene los recursos para ejecutar otro trabajo, crea un proceso y
ejecuta el siguiente trabajo de la cola de entrada. Técnicamente, en todos
estos casos, para crear un proceso hay que hacer que un proceso existente
ejecute una llamada al sistema de creación de proceso. Ese proceso puede ser
un proceso de usuario en ejecución, un proceso del sistema invocado
mediante el teclado o ratón, o un proceso del administrador de procesamiento
por lotes. Lo que hace en todo caso es ejecutar una llamada al sistema para
crear el proceso. Esta llamada al sistema indica al sistema operativo que cree
un proceso y le indica, directa o indirectamente, cuál programa debe
ejecutarlo.

En UNIX sólo hay una llamada al sistema para crear un proceso: fork. Esta
llamada crea un clon exacto del proceso que hizo la llamada. Después de
fork, los dos procesos (padre e hijo) tienen la misma imagen de memoria, las
mismas cadenas de entorno y los mismos archivos abiertos. Eso es todo. Por
lo general, el proceso hijo ejecuta después a execveo una llamada al sistema
similar para cambiar su imagen de memoria y ejecutar un nuevo programa.
Por ejemplo, cuando un usuario escribe un comando tal como sort en el shell,
éste crea un proceso hijo, que a su vez ejecuta a sort. La razón de este proceso
de dos pasos es para permitir al hijo manipular sus descriptores de archivo
después de fork, pero antes de execve, para poder lograr la redirección de la
entrada estándar, la salida estándar y el error estándar. Por el contrario, en
Windows una sola llamada a una función de Win32 (CreateProcess) maneja
la creación de procesos y carga el programa correcto en el nuevo proceso.
Esta llamada tiene 10 parámetros, que incluyen el programa a ejecutar, los
parámetros de la línea de comandos para introducir datos a ese programa,
varios atributos de seguridad, bits que controlan si los archivos abiertos se
heredan, información de prioridad, una especificación de la ventana que se
va a crear para el proceso (si se va a crear una) y un apuntador a una estructura
en donde se devuelve al proceso que hizo la llamada la información acerca
del proceso recién creado. Además de CreateProcess, Win32 tiene cerca de
100 funciones más para administrar y sincronizar procesos y temas
relacionados.

REPORT THIS AD

Tanto en UNIX como en Windows, una vez que se crea un proceso, el padre
y el hijo tienen sus propios espacios de direcciones distintos. Si cualquiera
de los procesos modifica una palabra en su espacio de direcciones, esta
modificación no es visible para el otro proceso. En UNIX, el espacio de
direcciones inicial del hijo es una copia del padre, pero en definitiva hay dos
espacios de direcciones distintos involucrados; no se comparte memoria en
la que se pueda escribir (algunas implementaciones de UNIX comparten el
texto del programa entre los dos, debido a que no se puede modificar). Sin
embargo, es posible para un proceso recién creado compartir algunos de los
otros recursos de su creador, como los archivos abiertos. En Windows, los
espacios de direcciones del hijo y del padre son distintos desde el principio.

Terminación de procesos
Una vez que se crea un proceso, empieza a ejecutarse y realiza el trabajo al
que está destinado. Sin embargo, nada dura para siempre, ni siquiera los
procesos. Tarde o temprano el nuevo proceso terminará, por lo general
debido a una de las siguientes condiciones:

 Salida normal (voluntaria).


 Salida por error (voluntaria).
 Error fatal (involuntaria).
 Eliminado por otro proceso (involuntaria).
La mayoría de los procesos terminan debido a que han concluido su trabajo.
Cuando un compilador ha compilado el programa que recibe, ejecuta una
llamada al sistema para indicar al sistema operativo que ha terminado. Esta
llamada es exit en UNIX y ExitProcess en Windows. Los programas
orientados a pantalla también admiten la terminación voluntaria. Los
procesadores de palabras, navegadores de Internet y programas similares
siempre tienen un icono o elemento de menú en el que el usuario puede hacer
clic para indicar al proceso que elimine todos los archivos temporales que
tenga abiertos y después termine.

REPORT THIS AD

La segunda razón de terminación es que el proceso descubra un error. Por


ejemplo, si un usuario escribe el comando cc foo.c para compilar el programa
foo.c y no existe dicho archivo, el compilador simplemente termina. Los
procesos interactivos orientados a pantalla por lo general no terminan cuando
reciben parámetros incorrectos. En vez de ello, aparece un cuadro de diálogo
y se le pide al usuario que intente de nuevo.

La tercera razón de terminación es un error fatal producido por el proceso, a


menudo debido a un error en el programa. Algunos ejemplos incluyen el
ejecutar una instrucción ilegal, hacer referencia a una parte de memoria no
existente o la división entre cero. En algunos sistemas (como UNIX), un
proceso puede indicar al sistema operativo que desea manejar ciertos errores
por sí mismo, en cuyo caso el proceso recibe una señal (se interrumpe) en
vez de terminar.

También podría gustarte