You are on page 1of 17

PROCESOS

Procesos + UNIX + Hilos


Vctor Martn Hernndez

15

INTRODUCCIN
Requisitos que un sistema operativo debe cumplir:
-

Debe intercalar la ejecucin de mltiples procesos.


Debe reservar recursos para los procesos conforme a una poltica especfica mientras que al
mismo tiempo evita interbloqueos.
Puede requerir dar soporte a la comunicacin entre procesos y la creacin de procesos.

QU ES UN PROCESO?
Tambin llamado tarea, es la ejecucin de un programa individual, siendo la entidad que se puede
asignar y ejecutar en un procesador. Adems, es una unidad de actividad que se caracteriza por la
ejecucin de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema
asociados. Por tanto, para que un programa se ejecute, se debe crear un proceso para dicho
programa.
La imagen del proceso se mantiene como un bloque de memoria contiguo o continuo y
habitualmente se encuentra en memoria secundaria. Para que el SO pueda gestionar el proceso, al
menos una pequea porcin de su imagen se debe mantener en memoria principal.
Se puede caracterizar el comportamiento de un determinado proceso, listando la secuencia de
instrucciones que se ejecuta para dicho proceso. A esta lista de la denomina traza del proceso.
Los procesos estn compuestos por:

Cabe destacar que el cdigo de programa puede compartirse con otros procesos.
El bloque de control de procesos (BCP) es una estructura de datos que almacena informacin como:
identificador, estado, prioridad, control de programa (direccin a la siguiente instruccin de
programa), punteros a memoria (incluye punteros a cdigo de programa y datos asociados a dicho
proceso), datos de contexto (datos de registros), informacin de estado de E/S (peticiones E/S
pendientes), informacin de auditora (cantidad de tiempo utilizado). El BCP es creado y controlado
por el SO, y lo que le permite la multiprogramacin.

Como podemos observar en la imagen, cuando un proceso se interrumpe, los datos de contexto se
guardan en el BCP y el estado del proceso cambia. Esto se ver con ms detalle en los cambios de
ejecucin.

ESTADOS DE LOS PROCESOS


Dispatcher: pequeo programa que intercambia el procesador de un proceso a otro (realiza el
cambio de contexto).
2 ESTADOS

Cuando el SO crea un nuevo proceso, crea el BCP y reserva espacio de direcciones en memoria
principal para el nuevo proceso e inserta dicho proceso en el sistema en estado No Ejecutando. El
proceso existe y est esperando su oportunidad de ejecutar.
Problemas: slo hay una cola de No Ejecucin (podra no tenerse en cuenta el envejecimiento).

5 ESTADOS

Listo: un proceso que se prepara para ejecutar cuando tenga oportunidad.


Bloqueado: un proceso que no puede ejecutar hasta que se cumpla un evento determinado o se
complete una operacin E/S.
Nuevo: un proceso que se acaba de crear y que an no ha sido admitido en el grupo de procesos
ejecutables por el SO.
Saliente: un proceso que ha sido liberado del grupo de procesos ejecutables por el SO, debido a que
ha sido detenido, que ha sido abortado por alguna razn o que alcanza su punto de finalizacin.
Las posibles transiciones son las siguientes:
Nuevo Listo. El SO mueve a un proceso del estado listo cuando ste se encuentre
preparado para ejecutar un nuevo proceso. La mayora de sistemas fijan un lmite basado en
el n de procesos existentes o la cantidad de memoria virtual que se podr utilizar.
Listo Ejecutando. Cuando llega el momento de seleccionar un nuevo proceso para
ejecutar, el SO selecciona uno de los procesos que se encuentre en el estado Listo. Esta
tarea la lleva acabo el planificador (sheduler).
Ejecutando Listo. La razn ms habitual para esta transicin es que el proceso en
ejecucin haya alcanzado el mximo tiempo posible de ejecucin de forma ininterrumpida.
Ejecutando Bloqueado. Un proceso se pone en el estado Bloqueado si solicita algo por lo
cual debe esperar (una solicitud al SO y que no puede realizar en ese mismo momento).
Listo Saliente. Un padre puede terminar la ejecucin de un proceso hijo.
Cada proceso admitido por el sistema, se coloca en la cola (puede ser de tipo FIFO) de Listos.
Tambin habr mltiples colas de bloqueados (organizadas dependiendo del tipo de suceso).

Problema: el procesador es ms rpido que la E/S, por lo que suele ser habitual que todos los
procesos de memoria estn esperando por E/S y por lo tanto se tiene toda la memoria ocupada con
procesos pero ninguno se est ejecutando.
6 ESTADOS

El swapping (memoria de intercambio) es una solucin al modelo de 5 estados. Este mtodo implica
mover parte o todo el proceso de memoria principal a disco (cuando el proceso est en estado
suspendido). El swapping es una operacin de E/S pero debido a que es sobre disco, es
habitualmente ms rpida que la E/S sobre otros sistemas.
El SO tiene como prioridad traer un proceso que anteriormente estuviese suspendido a crear uno
nuevo.

Problema: slo pueden ser suspendidos aquellos procesos que estn en estado de bloqueado.

7 ESTADOS

Bloqueado. El proceso est en memoria principal y esperando un evento.


Bloqueado/Suspendido. El proceso est en almacenamiento secundario y esperando un
evento.
Listo/Suspendido. El proceso est en almacenamiento secundario pero est disponible para
su ejecucin tan pronto como sea argado en memoria ppal.

Las posibles transiciones son:

Bloqueado Bloqueado/Suspendido. Si no hay procesos listos, entonces al menos uno de


los procesos bloqueados se transfiere al disco para hacer espacio para oto proceso que no se
encuentra bloqueado.
Bloqueado/Suspendido Listo/Suspendido. Cuando sucede un evento al que estaba
esperando. Esto requiere que la informacin de estado concierne a un proceso suspendido
sea accesible para el SO.
Listo/Suspendido Listo. Cuando no hay ms procesos listos en memoria principal, el SO
necesitar traer uno para continuar la ejecucin. Adicionalmente, puede darse el caso de
que un proceso en estado Listo/Suspendido tenga mayor prioridad que cualquiera de los
procesos en estado Listo.
Listo Listo/Suspendido. El SO preferir suspender procesos bloqueados que un proceso
listo, pero puede ser necesario suspender un proceso Listo si con ello se consigue liberar un
bloque suficientemente grande de memoria.
Nuevo Listo/Suspendido y Nuevo a Listo. Con el fin de conseguir espacio en memoria
principal.
Bloqueado/Suspendido Bloqueado. Cuando hay un proceso con mayor prioridad en la
cola de Bloqueados/Suspendidos que en la cola de Listos/Suspendidos.
Ejecutando Listo/Suspendido. El tiempo del uso del procesador finaliza.

Es posible ejecutar un proceso que est slo parcialmente en memoria principal. Si se hace
referencia a una direccin de proceso que no se encuentra en memoria secundaria, la porcin
correspondiente del proceso se trae a ella.

ESTRUCTURAS DE CONTROL DEL SO


El SO construye tablas de informacin sobre cada entidad que est administrando. El SO
puede acceder a cualquier tipo de tabla.

Tablas de memoria
Se usan para mantener un registro tanto de la memoria principal como de la secundaria. Las
tablas de memoria deben incluir la siguiente informacin:

Reservas de memoria principal por parte de los procesos.


Reservas de memoria secundaria por parte de los procesos.
Todos los atributos de proteccin que restringe el uso de la memoria principal y
secundaria, de forma que los procesos puedan acceder a ciertas reas de memoria
compartida.
La informacin necesaria para manejar la memoria virtual.

Tablas de archivos (ficheros)


Estas tablas proporcionan informacin sobre la existencia de ficheros, su posicin en
almacenamiento secundario, su estado actual, y otros atributos. Esta informacin es
mantenida por un sistema de ficheros independientes y, el SO tiene poco o ningn
conocimiento sobre los ficheros.
Estas tablas residirn en memoria virtual o principal y sern accesibles mediante dispositivos
de E/S.
Tablas de procesos
Para gestionar los procesos. La parte restante de esta seccin se encuentra dedicada a
examinar los requisitos que tienen las tablas de procesos.
6

En ellas residen las ubicaciones de los proyectos (BCP+instrucciones a ejecutar+datos


variables locales y globales+constantes definidas+).
Tablas de E/S

Mantiene el estado de dispositivo de E/S que puede estar disponible o estar


asignado a un proceso en particular.
Estado de la operacin de E/S.
Posicin de memoria principal que se est utilizando como origen o destino de la
transferencia de E/S.

BCP
Identificacin del proceso

Identificador del proceso.


Identificador del proceso padre.
Identificador del usuario.

Informacin del estado del procesador

Registros visibles para el usuario.


Punteros de pila. Cada proceso tiene una o ms colas de tipo LIFO del sistema
asociadas.
Registros de control y estado. CP, flags, informacin de estado (indicadores
habilitacin e inhabilitacin).

Informacin del control del proceso

Informacin de planificacin y estado. Informacin que necesita el SO para llevar a


cabo sus funciones de planificacin.
o Estado del proceso.
o Prioridad.
o Informacin de planificacin.
o Suceso.

Estructuracin de datos. El BCP puede contener punteros a otros procesos (padrehijo).


Comunicacin entre procesos.
Privilegios de los procesos.
Gestin de memoria. Puede incluir punteros a las tablas de pginas que describen la
memoria virtual asignada a un proceso (los SO modernos suponen la existencia de
un hardware de paginacin que permite el uso de la memoria fsica no contigua, de

esta forma, las tablas mantenidas por SO deben mostrar la localizacin de cada
pgina de la imagen del proceso).
Prioridad de los recursos y utilizacin.

MODOS DE EJECUCIN
El motivo por el cual se usan los otros modos es porque se necesita proteger al SO y a las
tablas clave del sistema. El PSW es el bit que indica el modo de ejecucin.
Modo usuario
Es el modo menos privilegiado porque los programas de usuario tpicamente se ejecutan en
este modo.
Modo del sistema (modo ncleo)
Es el modo ms privilegiado. Se refiere al ncleo del SO, que es la parte del SO que engloba las
funciones ms importantes del sistema.

Manipulacin de procesos

Creacin de procesos:
o Asignar un nico identificador al nuevo identificador.
o Asignar espacio para el proceso.
o Iniciar el bloque del control de procesos.
o Establecer los enlaces apropiados.
o Crear o ampliar otras estructuras de datos.

Cambio de contexto (Guardar):


o Guardar CP en pila.
o Guardar el contenido de los registros del procesador en el BCP del proceso.
o Guardar el puntero de pila en el BCP.

Cambio de contexto (Recuperar):


o Recupera puntero de pila del BCP.
o Recupera los dems registros del BCP y de la pila.
o Cambia algunos bits de la palabra de estado (habilitar interrupciones, cambia
modo de ejecucin a usuario).
o Recupera el CP.

Cuando llega una interrupcin:


o Se salva el contexto del programa que se ejecuta.
o Asigna al CP el valor de la direccin de comienzo del programa de atencin a
la interrupcin.
8

o Cambia de modo usuario a modo ncleo, para que en el procesamiento de


interrupcin pueda haber instrucciones privilegiadas.
o Ejecuta la rutina de atencin a la interrupcin.

Cambio de proceso:
o Salva el contexto del P1 (BCP).
o Asigna a CP la direccin de comienzo de programa atencin a la interrupcin
de cambio de proceso.
o Cambia a modo ncleo.
o Ejecuta la rutina de atencin a la interrupcin.
Actualiza el BCP.
Mueve el BCP a la cola apropiada (listos/bloqueados/).
Selecciona otro proceso.
Actualiza el BCP seleccionado (nuevo estado: ejecucin).
Actualiza las estructuras de datos.
Restaura el contexto del proceso seleccionado, incluyendo modo
usuario.

Cambio de modo:
No implica cambio de proceso. Se puede cambiar de modo, ejecutar instrucciones
privilegiadas en modo ncleo y volver a ejecutar otras instrucciones del mismo
proceso (no necesario cambio completo de proceso, basta con guardar el contexto
del procesador).
o
o
o
o
o
o
o

Salvar el contexto del procesador.


Actualizar el BCP del proceso que est en ejecucin.
Mover el BCP a la cola apropiada.
Seleccionar otro proceso para su ejecucin.
Actualizar el BCP del proceso seleccionado.
Actualizar las estructuras de datos.
Restaurar el contexto del proceso seleccionado.

Ejecucin del SO
El SO es un conjunto de programas ejecutados por un procesador. El SO con frecuencia cede
el control y depende del procesador para recuperar dicho control.

Ncleo sin procesos:


o El concepto de proceso se aplica nicamente a los programas de usuario.
o El cdigo del SO se ejecuta como una entidad independiente que requiere un
modo privilegiado de ejecucin.

Ejecucin dentro de los procesos de usuario:


o Alternativa comn en los SO de mquinas pequeas, que es ejecutar
virtualmente todo el software de SO en el contexto de un proceso de usuario.
o El cdigo de SO y sus datos estn en el espacio de direcciones compartidas y
se comparten entre todos los procesos.
o Se realiza un cambio de modo dentro del mismo proceso puesto que la
ejecucin contina dentro del proceso del usuario. Debido a esto, el usuario
no puede inferir con las rutinas del SO, incluso cuando se estn ejecutando
dentro del entorno del proceso del usuario.

SOs basados en procesos:


o Las funciones ms importantes del ncleo se organizan en procesos
separados.
o til en un entorno de multiprocesador o de varios computadores.

PROCESOS EN UNIX

Listo para ejecutar y en memoria: listo para ejecutar tan pronto como el ncleo lo
planifique.
Dormido y en memoria: incapaz de ejecutar hasta que se produzca un suceso; el
proceso est en memoria principal.
Dormido y descargado: el proceso est esperando un suceso y ha sido expulsado al
almacenamiento secundario.
Expulsado: el proceso retorna del modo del ncleo al modo de usuario, pero el
ncleo lo expulsa y realiza un cambio de contexto para planificar otro proceso.
Creado: proceso recin creado y an no est listo para ejecutar.

En el caso de ejecucin en modo ncleo, volvera sobre s mismo porque cuando llega una
interrupcin y stas estn habilitadas habra que atenderlas.
10

Caractersticas
Un proceso UNIX tiene dos reas de memoria: ejecucin y control.

El rea de ejecucin es el programa (texto) ms las zonas de memoria reservadas


para la pila y los datos. Est en la zona de memoria virtual asignada al proceso.

El rea de control contiene los bloques de control que conserva la informacin


acerca del proceso. Esta zona pertenece al ncleo del SO. El rea de control tiene
informacin que debe residir en memoria continuamente e informacin que puede
ser enviada a disco con el rea de ejecucin cuando el planificador de procesos
decida.

Pila, datos e instrucciones

En memoria virtual:
o Entre Pila y BSS se encuentran los datos no inicializados.
o Datos: datos inicializados.
o Instrucciones: cdigo compilado.

En memoria fsica:
o Instrucciones: instrucciones compartidas que tienen el mismo cdigo.

Control de procesos
La creacin de procesos en UNIX se realiza por medio de la llamada al sistema fork():

Solicita la entrada en la tabla de procesos para el nuevo proceso.


11

Asigna un ID de proceso nico al proceso hijo.


Hace una copia de la imagen del proceso padre, con excepcin de las regiones de
memoria compartidas.
Incrementa el contador de cualquier fichero en posesin del padre para reflejar el
proceso adicional que ahora posee tambin dichos ficheros.
Asigna al proceso hijo el estado Listo para Ejecutar.
Devuelve el ID del proceso hijo al proceso padre, y un valor 0 al proceso hijo.

Todo este trabajo se realiza en modo ncleo, dentro del proceso padre.
Zombie: un hijo termina y el padre no recoge el cdigo de finalizacin del hijo. Como
proceso no tiene nada pero sigue ocupando una entrada en la tabla. Permanecer en el
sistema hasta que alguien los espere.
Hurfano: el padre muere antes que el hijo haya terminado. Ser adoptado por el proceso
init (PID = 1, ancestro de todos los procesos que se crearn posteriormente) del sistema. El
proceso con PID = 0 es el creado por el ncleo cuando arranca el SO (nico que no se crea
con una llamada a fork, se convierte posteriormente en el proceso intercambiador (gestin
memoria virtual)).
Comunicacin entre procesos
Los procesos se pueden comunicar mediante tuberas (pipes) que deben ser creadas antes
de la ejecucin del fork.
A los pipes se accede a travs de dos descriptores de ficheros (lectura/escritura) con tamao
variable. Es necesaria la relacin padre-hijo. Estas pipes son unidireccionales.

HILOS
Caractersticas

Unidad de propiedad de los recursos: conocida como proceso o tarea.


Unidad de expedicin: conocida como hilo.

Estas dos caractersticas son tratadas de manera independiente por el SO.


Sistema Multihilo
SO que mantiene varios hilos de ejecucin dentro de un mismo proceso. En un entorno
multihilo, un proceso se define como la unidad de asignacin de recursos y una unidad de
proteccin. Se asocian con procesos los siguientes:

Un espacio de direcciones virtuales que soporta la imagen del proceso.


12

Acceso protegido a procesadores, otros procesos, archivos y recursos de E/S.

Dentro de un proceso puede haber uno o ms hilos, cada uno con:

Un estado de ejecucin por hilo (adems, el proceso tiene el suyo propio).


Un contexto de hilo que se almacena cuando no est en ejecucin (registros).
Una pila de ejecucin.
Por cada hilo, espacio de almacenamiento para variables locales.
Acceso a la memoria y recursos de su proceso, compartido con todos los hilos de su
mismo proceso.

Algunos de los beneficios de los hilos son:

Se tarda menos tiempo en crear un nuevo hilo.


Se tarda menos tiempo en cambiar entre hilos.

Estados

Creacin: Se crea un nuevo hilo.


o Crear un proceso = crear 1 primer hilo.
o Un hilo puede crear otros hilos.
o El nuevo hilo tiene su propio contexto y espacio de pila.

Bloqueo:
o El hilo necesita esperar suceso.
o Al bloquearse se guarda el contexto del hilo.

Desbloqueo: el suceso ocurre, el hilo pasa a la cola de listos.

Terminacin.

Tipos de hilos

A nivel de usuario: el SO no conoce los hilos, por tanto, no puede planificarlos (slo
puede planificar el proceso) para ello se utiliza la biblioteca de hilos, que es un
programa independiente. En este caso, si se bloquea un hilo se bloquear el proceso
entero.

A nivel de ncleo: el SO es el que planifica tanto el proceso como los hilos. La


planificacin se realiza en funcin de los hilos.

Combinado.

13

Cambios de estado

14

Caractersticas

Proceso
o BCP
o Cdigo + datos + pila
Biblioteca hilos (ULT).
Hilos a nivel de ncleo (KLT).
Procesos ligeros (LWP):
o Asociacin entre ULT y KLT.
o Cada LWP: Se planifica de forma independiente por el ncleo.
Soporta uno o ms ULT.
Est asociado con un KLT.

15

BIBLIOGRAFA
Sistemas Operativos William Stallings (5 Edicin). Editorial Pearson.

16