Sie sind auf Seite 1von 60

Sistemas Operativos I

Unidad 2:
Procesos

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 1
Contenidos
• Conceptos de proceso. Estados de un proceso. Modelo
de cinco estados de procesos.
• Control de procesos. Modos de ejecución. Creación de
procesos.
• Administración de procesos en Unix/Linux.
• Procesos e hilos.
• Creación y ejecución de procesos. Propuesta de proyecto anual.
Control 1.
• Comunicación entre procesos:
– Concurrencia.
– Exclusión mutua.
– Semáforos.
– Mensajes.
– Taller 2: Comunicación entre procesos. Control 2.
• Clase de recapitulación.
• Clase de recapitulación.
• Prueba de Cátedra 1.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 2
Objetivos y Metodología

• Estudiar y comprender los procesos, sus


estados, la comunicación y administración
de éstos.

• Metodología:
– Clases expositivas mezclando teoría y ejercicios.
Se realizarán talleres en los que el estudiante
deberá programar algoritmos básicos en los que
se utilicen procesos, estados y su comunicación.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 3
Introducción a los Procesos

• Proceso:
– Concepto con mayor relevancia en los Sistemas
Operativos.
– Representan una abstracción de un programa en
ejecución.
– Todos los demás conceptos giran en torno al concepto
de proceso.
• Modelo del proceso:
– Todo el software ejecutable en la computadora, lo que
incluye al Sistema Operativo, se organiza en varios
procesos.
– Un proceso es un programa ejecutándose, con su Contador
de Programa (program counter - PC), registros y variables.
– De manera conceptual, cada proceso tiene su CPU virtual.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 4
Multiprogramación

• Para comprender el sistema, pensemos en un


conjunto de procesos que se ejecutan
concurrentemente, en seudo paralelismo:
a) Multiprogramación de cuatro programas.
b) Modelo conceptual de cuatro procesos secuenciales
independientes.
c) Sólo hay un programa activo en cualquier instante de
tiempo.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 5
Algoritmo de planificación

• La diferencia entre un proceso y un


programa es sutil, pero crucial: un proceso
es una actividad de algún tipo, tiene un
programa de entrada, salida y un estado.
• Mediante el uso de un algoritmo de
planificación (scheduler), un único
procesador puede ser compartido entre
varios procesos.
• El algoritmo de planificación se utiliza para
determinar cuando debe detenerse el
trabajo con un proceso para dar servicio a
otro proceso.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 6
Creación de procesos
• Los SO deben poseer una manera de conocer que todos
los procesos necesarios existen.
• En sistemas muy simples, ó diseñados para ejecutar una
única aplicación como puede ser controlar un dispositivo
en tiempo real, pudiera ser factible tener presentes en el
sistema a todos los procesos que se necesitan desde la
carga inicial (boot load) del sistema.
• Sin embargo, en sistemas de propósito general, deberá
existir alguna manera de crear y terminar procesos en la
medida en que dichos procesos sean necesarios durante
las operaciones.
• Hay cuatro principales eventos que causan que sean
creados nuevos procesos:
1. Inicialización del Sistema.
2. Un proceso en ejecución realiza una llamada al
sistema para crear un nuevo proceso.
3. Un usuario solicita crear un nuevo proceso.
4. Comienzo de una tarea por lotes (batch job).
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 7
Acciones del SO para crear un
proceso
1. Asignar un único identificador al nuevo proceso.
En ese momento se añade una nueva entrada a la tabla principal
de procesos, que contiene una entrada por proceso.

2. Asignar espacio para el proceso.


Esto incluye todos los elementos de la imagen del proceso.
El SO debe saber cuánto espacio se necesitará para el espacio
privado de direcciones del usuario (programas y datos) y para la
pila del usuario.
Estos valores se pueden asignar por omisión en función del tipo
de proceso o bien se puede asignar a partir de la solicitud del
usuario cuando se crea el trabajo.
Si un proceso es generado por otro, el proceso padre puede
pasarle al sistema operativo los valores necesarios como parte de
la solicitud de creación del proceso.
Si algún espacio de direcciones existente se va a compartir con
este nuevo proceso, entonces se deben establecer los enlaces
adecuados.
Por último, se debe asignar espacio para el bloque de control del
proceso.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 8
Acciones del SO … (2)
3. Inicializar el bloque de control del proceso.
La parte de identificación del proceso contiene el ID de este
proceso junto a otros ID apropiados, tales como el del proceso
padre.
La parte de información del estado del procesador normalmente
se inicializa con la mayor parte de las entradas a cero, excepto
para el contador de programa (que se prepara con el punto de
entrada del programa) y los punteros a las pilas del sistema (que
establecen los limites de la pila del proceso).
La parte de información de control del procesador se inicializa a
partir de los valores estándares por omisión y los atributos que
se han solicitado para el proceso. Por ejemplo, el estado del
proceso suele inicializarse a listo ó a listo y suspendido.
La prioridad puede asignarse por omisión al valor más bajo, a
menos que se haya hecho una solicitud explicita de un valor
mayor.
Inicialmente, puede que el proceso no posea ningún recurso
(dispositivos de E/S, archivos), a menos que se haya hecho una
solicitud explicita de los mismos o a menos que se hayan
heredado del proceso padre.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 9
Acciones del SO … (3)
4. Establecer los enlaces apropiados.
Por ejemplo, si el SO mantiene cada cola de planificación
como una lista enlazada, entonces el proceso nuevo se debe
poner en la cola de listos o de listos y suspendidos.

5. Crear o ampliar otras estructuras de datos.


El SO puede mantener un archivo de contabilidad para cada
proceso que sea utilizado más tarde con propósitos de
facturación y/o evaluación del rendimiento.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 10
Conclusión de un proceso

• Después que un proceso creado realiza su función,


puede ocurrir alguna de las siguientes condiciones:
1. Concluye normalmente (Normal exit - voluntariamente).
2. Termina con error (Error exit - voluntariamente).
3. Provoca un error fatal (Fatal error - involuntariamente).
4. Es destruido (Killed) por otro proceso (involuntario).
• La mayoría de los procesos termina porque realizó
su trabajo.
• Los programas orientados a pantalla comúnmente
incluyen herramientas para su conclusión
voluntaria.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 11
Jerarquías de procesos

• Los SO que soportan el concepto de proceso


deben poseer alguna herramienta que
permita crear todos los procesos que se
necesitan.
• Cuando un proceso crea a otro, padre e hijo
se mantienen asociados de cierta manera.
• El proceso hijo puede a su vez crear nuevos
procesos, constituyendo una jerarquía.
• Cada proceso tiene solamente un padre,
pero puede tener cero, uno ó mas hijos.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 12
Ejemplo de jerarquía
pstree
init-+-6*[agetty] // Proceso especial que se inicia al cargarse el SO
|-events/0
|-fcron
|-httpd---10*[httpd]
|-java
|-khelper
|-klogd
|-ksoftirqd/0
|-kswapd0
|-kthread-+-aio/0
| |-kacpid
| |-kblockd/0
| |-khubd
| |-2*[kjournald]
| |-kpsmoused
| |-kseriod
| |-2*[pdflush]
| `-shpchpd
|-master-+-pickup
| `-qmgr
|-mysqld_safe---mysqld
|-slapd
|-sshd---sshd---bash---pstree
|-syslogd
`-watchdog/0

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 13
Estados de los procesos
• Aunque cada proceso es una entidad independiente,
con su contador de programas y estado interno, es
muy frecuente que necesite interactuar con otros
procesos.
• Según la velocidad de ejecución relativa de ambos
procesos, dada por la relativa complejidad de ambos
programas y por la cantidad de tiempo de CPU que
cada uno de ellos alcance a emplear, puede ocurrir
que alguno de ellos esté listo para ejecutarse pero
que no alcance a disponer de los elementos
necesarios para poderlo hacer, por lo que deberá
bloquearse en espera de que pueda disponer de los
recursos que necesita.
• También es posible que el SO detenga a un proceso
listo para ejecutarse, ya que el algoritmo de
planificación de procesos ha decidido que debe
sustituirle: asignar el procesador a otro proceso.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 14
Estados … (2)
En resumen, los estados posibles para un proceso son:
1. En ejecución (Running): Realmente utiliza la CPU en el instante
actual.
2. Bloqueado (Blocked): No puede ejecutarse hasta que reciba la
señal de que ocurrió el evento externo a él pero que necesita para
disponer de los recursos con que continuar su ejecución.
3. Listo (Ready): Ejecutable. Posee todos los recursos que necesita
para trabajar excepto el procesador. Se detiene temporalmente
para permitir que se ejecute algún otro proceso.

Transiciones posibles:
1. El proceso se bloquea
en espera de recurso.
2. El planificador elige
otro proceso.
3. El planificador elige a
este proceso.
4. El recurso esperado
está disponible.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 15
Estados … (3)

• La capa inferior de un SO estructurado por


procesos maneja las interrupciones y realiza
la planificación (Scheduling).
• El resto del sistema consta de procesos
secuenciales.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 16
Otros estados posibles

• Los tres estados principales descritos: Listo,


Ejecución y Bloqueado, ofrecen una forma
sistemática de modelar el comportamiento
de los procesos y de guiar la
implementación del sistema operativo.
• Se han construido muchos sistemas
operativos empleando solamente estos tres
estados.
• Sin embargo, hay una buena justificación
para añadir más estados al modelo.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 17
Modelo con cinco estados

• Este modelo agrega al esquema clásico dos estados


posibles:
– Nuevo: Proceso que se acaba de crear, pero que aún no ha
sido admitido por el SO en el grupo de procesos ejecutables.
– Terminado: Proceso que ha sido excluido por el SO del
grupo de procesos ejecutables, bien porque se detuvo o
porque fue abandonado por alguna razón.
• Estos dos nuevos estados son útiles para toda la
gestión de los procesos.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 18
Transiciones en el Modelo de
cinco estados

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 19
Estado “suspendido”

• Este modelo complementa al modelo de cinco


estados incorporando el concepto de proceso
suspendido, así como el correspondiente estado
suspendido:

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 20
Proceso “suspendido” e
intercambio
• Cuando todos los procesos de la memoria principal
están en el estado bloqueado, el sistema operativo
puede suspender un proceso poniéndolo en estado
suspendido y transferirlo a disco.
• El espacio que se libera de la memoria principal
puede utilizarse entonces para traer otro proceso.
• Cuando el sistema operativo haya realizado una
operación de intercambio de un proceso a disco,
tendrá dos opciones para seleccionar el proceso que
se trae a memoria:
– admitir un proceso recién creado o
– traer un proceso suspendido previamente.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 21
Saliendo del estado suspendido
• Puede parecer que la preferencia debe ser traer un proceso
suspendido previamente para darle servicio, en lugar de hacer
crecer la carga total de procesos en el sistema.
• Pero esta línea de razonamiento presenta una dificultad:
– Todos los procesos que fueron suspendidos estaban en el
estado bloqueado en el momento de la suspensión.
– Realmente no haría ningún bien traer de nuevo a memoria
principal un proceso bloqueado porque no está todavía listo
para ejecutarse.
• Sin embargo, cada proceso en estado suspendido fue
bloqueado originalmente por un suceso concreto.
• Cuando se produzca tal suceso, el proceso se desbloqueará y
estará disponible para su ejecución.
• Por tanto, no se necesita volver a pensar sobre este aspecto
del diseño.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 22
Estados necesarios

• Aquí se tienen dos conceptos independientes:


– si un proceso está esperando un suceso (bloqueado o no),
y
– si un proceso ha sido expulsado de la memoria principal
(suspendido o no).
• Para ordenar estas combinaciones, hacen falta los
cuatro estados siguientes:
– Listo: El proceso está en memoria principal y listo para la
ejecución.
– Bloqueado: El proceso está en memoria principal
esperando un suceso.
– Bloqueado y suspendido: El proceso está en memoria
secundaria esperando un suceso.
– Listo y suspendido: El proceso está en memoria secundaria
pero está disponible para su ejecución tan pronto como se
cargue en la memoria principal.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 23
Estados y Memoria Virtual
• Antes de observar el diagrama de transición de
estados que engloba dos nuevos estados de
suspensión, debe mencionarse otro punto: El empleo
de Memoria Virtual (virtual memory - VM).
• Se ha supuesto hasta ahora que no se utiliza VM y
que un proceso estará bien en memoria principal o
bien fuera de ella por completo.
• Con un esquema de VM, es posible ejecutar un
proceso que esté solo parcialmente en memoria
principal. Si se hace una referencia a una dirección
del proceso que no está en memoria principal,
entonces la parte apropiada del proceso debe traerse
a memoria.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 24
Procesos de usuario en
memoria virtual

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 25
Estados y Memoria Virtual (2)
• El uso de la VM parece eliminar la necesidad del
intercambio explicito, ya que cualquier dirección
deseada de cualquier proceso puede ser trasladada
dentro o fuera de la memoria principal por el
hardware de gestión de memoria del procesador.
• Sin embargo, como se estudiará en la unidad 3, el
rendimiento del sistema de VM puede desplomarse si
hay un número suficientemente grande de procesos
activos, todos los cuales están en parte en la
memoria principal.
• Por tanto, incluso en un sistema de VM, el SO
siempre tendrá que expulsar de cuando en cuando
algunos procesos, de forma completa y explicita,
para mejorar el rendimiento.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 26
Diagrama de transición de estados
con dos estados suspendidos

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 27
Nuevas transiciones
1. Bloqueado → Bloqueado y suspendido:
Si no hay procesos Listos, entonces al menos un proceso
Bloqueado se expulsa para dar cabida a otro proceso que
no esté bloqueado.
Esta transición puede hacerse aun cuando hay procesos
listos disponibles, cuando el sistema operativo determina
que el proceso que está actualmente en Ejecución o un
proceso Listo que sería conveniente expedir requiere más
memoria principal para mantener un rendimiento adecuado.
2. Bloqueado y suspendido → Listo y suspendido:
Un proceso en estado Bloqueado y suspendido se pasa al
estado Listo y suspendido cuando ocurre el suceso que
estaba esperando.
Nótese que esto requiere que esté accesible para el sistema
operativo la información relativa a los procesos
suspendidos.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 28
Nuevas transiciones (2)
3. Listo y suspendido → Listo:
Cuando no hay procesos Listos en la memoria principal, el SO tendrá
que traer uno para continuar la ejecución.
Además, puede darse el caso de que un proceso en estado Listo y
suspendido tenga una prioridad mayor que la de un proceso en estado
Listo.
En tal caso, el diseñador del SO puede decidir que es más importante
tomar el proceso de mayor prioridad que minimizar el intercambio.
4. Listo → Listo y suspendido:
Generalmente, el SO prefiere suspender a un proceso Bloqueado en vez
de a uno Listo, ya que el proceso Listo podría ejecutarse de inmediato,
mientras que el proceso Bloqueado estará ocupando espacio en la
memoria principal sin poder ejecutarse.
Sin embargo, puede ser necesario suspender un proceso Listo si ésta es
la única forma de liberar un bloque lo suficientemente grande de
memoria principal.
Por último el SO puede escoger suspender un proceso Listo de más baja
prioridad en lugar de uno Bloqueado que sea de prioridad más alta si
estima que dicho proceso Bloqueado pronto estará listo.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 29
Otras transiciones importantes
5. Nuevo → Listo, Suspendido y Nuevo → Listo:
Cuando se crea un nuevo proceso, se le puede añadir a la
cola de listos o a la de listos y suspendidos.
En ambos casos, el SO necesita construir unas tablas para
poder administrar el proceso y asignarle un espacio de
direcciones.
Podría ser preferible que el SO llevara a cabo estas labores en
un primer momento, de modo que se mantuviera una reserva
grande de procesos que no están bloqueados.
Con esta estrategia sería frecuente el caso de que hubiese
poco espacio en memoria principal para un nuevo proceso; de
ahí el uso de la nueva transición Nuevo → Listo y suspendido.
Por otro lado, puede argumentarse que una filosofía de
creación de los procesos “justo a tiempo”, retrasando la
creación todo lo que se pueda, reducirla la sobrecarga del SO
y le permitirla llevar a cabo las tareas de creación de
procesos en el momento en el que el sistema esté atascado
de todas maneras con procesos Bloqueados.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 30
Otras transiciones … (2)
6. Bloqueado y suspendido → Bloqueado:
La inclusión de esta transición puede parecer resultado de un
mal diseño.
Después de todo: si un proceso no está listo para ejecutarse
y aún no está en memoria principal, ¿cuál es el interés por
traerlo a memoria?
Pero es posible la siguiente situación:
Un proceso termina, liberando memoria principal.
Hay un proceso en la cola de Bloqueados y suspendidos que
tiene una prioridad mayor que la de cualquier proceso de la
cola de Listos y suspendidos, así que el sistema operativo
tiene razones para suponer que pronto ocurrirá el suceso por
el que el proceso está bloqueado.
En estas circunstancias, podría parecer razonable traer un
proceso Bloqueado a memoria antes que un proceso Listo.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 31
Otras transiciones … (3)
7. Ejecución → Listo y suspendido:
Generalmente, un proceso en Ejecución pasa al estado Listo
cuando expira su fracción de tiempo asignado.
Sin embargo, si se está expulsando al proceso porque hay un
proceso de prioridad mayor en la lista de Bloqueados y
suspendidos que se acaba de desbloquear, entonces el SO
podría pasar el proceso en Ejecución directamente a la cola
de Listos y suspendidos, liberando espacio en la memoria
principal.
8. Varios → Terminado:
Normalmente, los procesos terminan mientras están
ejecutándose, bien porque se completaron o bien por causa
de alguna condición drástica de error.
Sin embargo, en algunos sistemas operativos, un proceso
puede ser finalizado por el proceso que lo creó o bien finalizar
cuando termina el proceso padre.
Si se permite esto, un proceso situado en cualquier estado
podrá pasar al estado Terminado.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 32
Otros usos de la suspensión
• Hasta ahora, se ha identificado el concepto de proceso
suspendido con el hecho de que el proceso no está en
memoria principal.
• Un proceso que no esté en memoria no estará disponible de
inmediato para su ejecución, esté o no esperando un suceso.
• Se puede generalizar este concepto de proceso suspendido
definiéndole como aquel proceso que tiene las características
siguientes:
1. Un proceso que está suspendido no está disponible de
inmediato para ejecución.
2. El proceso puede estar esperando o no un suceso. Si lo está,
la condición de bloqueado es independiente de la condición de
suspendido y el hecho de que ocurra el evento por el cuál se
bloqueó no lo habilita para la ejecución.
3. El proceso fue situado en el estado suspendido por un agente
(por si mismo, por el proceso padre o por el sistema
operativo) con el fin de impedir su ejecución.
4. El proceso no puede apartarse de este estado hasta que el
agente lo ordene explícitamente.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 33
Razones para la Suspensión de
procesos
• Intercambio (SWAP): El sistema operativo necesita liberar
suficiente memoria principal para cargar un proceso que está
listo para ejecutarse.
• Otra razón del SO: El sistema operativo puede suspender un
proceso de fondo, de utilidad o cualquier proceso que se
sospecha sea el causante de un problema.
• Solicitud de un usuario: Un usuario puede querer
suspender a ejecución de un programa con fines de
depuración o en conexión con el uso de un recurso.
• Por tiempo: Un proceso puede ejecutarse periódicamente
(por ejemplo, un proceso de contabilidad o de supervisión del
sistema) y puede ser suspendido mientras espera el siguiente
intervalo de tiempo.
• Solicitud del proceso padre: Un proceso padre puede
querer suspender a ejecución de un proceso descendiente
para examinar o modificar el proceso suspendido o para
coordinar la actividad de varios descendientes.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 34
Tablas de control del SO

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 35
Control de procesos
• El bloque de control de proceso es la estructura de datos
central y más importante de un sistema operativo.
• Cada bloque de control de proceso contiene toda la información
de un proceso necesaria para el sistema operativo.
• Los bloques son leídos y/o modificados por casi todos los
módulos de un sistema operativo, incluyendo aquellos que
tienen que ver con la planificación, la asignación de recursos,
el tratamiento de interrupciones y el análisis y supervisión del
rendimiento.
• Puede decirse que el conjunto de los bloques de control de
procesos definen el estado del sistema operativo.
• Esto saca a relucir una cuestión importante de diseño:
– Una serie de rutinas del sistema operativo necesitarán
acceder a la información de los bloques de control de
procesos.
• La provisión de acceso directo a estas tablas no es difícil: Cada
proceso está dotado de un único ID que puede utilizarse como
índice en una tabla de punteros a los bloques de control de
procesos.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 36
Estructuras de colas de
procesos

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 37
Control de procesos (2)
• La dificultad no está en el acceso, sino más bien en la
protección.
• Existen dos problemas:
1. Un error en una sola rutina, como la de tratamiento de
interrupciones, puede dañar los bloques de control de procesos,
lo que destruiría la capacidad del sistema para administrar los
procesos afectados.
2. Un cambio de diseño en la estructura o en la semántica del
bloque de control de procesos podría afectar a varios módulos del
sistema operativo.
• Estos problemas se pueden abordar exigiendo a todas las
rutinas del sistema operativo que pasen a través de una
rutina de manejo, cuya única tarea sería la de proteger los
bloques de control de proceso y que se constituiría en el único
árbitro para leer y escribir en estos bloques.
• La concesión en el empleo de una rutina tal está en el
rendimiento y en el grado con el que pueda confiarse en que
el resto del software del sistema sea correcto.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 38
Modos de ejecución
• La mayoría de los procesadores dan soporte para dos modos
de ejecución por lo menos.
• Ciertas instrucciones pueden ejecutarse solo en modo
privilegiado: la lectura o modificación de registros de control
tales como la palabra de estado del programa, instrucciones
primitivas de E/S e instrucciones relativas a la gestión de
memoria.
• Además, sólo se puede acceder a ciertas regiones de memoria
como la zona de los vectores de interrupción ó a las zonas
que contienen el mapeo de memoria de entrada / salida en el
modo más privilegiado.
• El modo menos privilegiado a menudo se conoce como modo
de usuario, ya que los programas de usuario ejecutan
normalmente en ese modo.
• Al modo más privilegiado normalmente se le conoce como
modo del sistema, modo de control o, modo del núcleo. Este
último término se refiere al núcleo del sistema operativo, que
es la parte del sistema operativo que lleva a cabo las
funciones importantes del sistema.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 39
Modos de ejecución (2)
• La razón por la que se usan dos modos debe quedar clara:
Es necesario proteger al sistema operativo y a las tablas
importantes del mismo, tales como los bloques de control de
procesos, de los posibles accesos de los programas de
usuario.
• En el modo del núcleo, el software tiene control completo del
procesador y de todas sus instrucciones, registros y memoria.
• Este nivel de control no es necesario y, por seguridad,
tampoco conveniente para los programas de usuario.
• Surgen dos preguntas:
– ¿Cómo conoce el procesador en qué modo va a ejecutar?
Normalmente hay un BIT en la palabra de estado del procesador
(program status word - PSW) que indica el modo de ejecución.
Este BIT es cambiado como respuesta a ciertos sucesos. Por
ejemplo, cuando un usuario hace una llamada a un servicio del
sistema operativo, el modo se cambia al de núcleo. Esto se suele
llevar a cabo ejecutando una instrucción que cambia el modo.
– ¿Cómo se cambia de modo? El SO ejecuta una instrucción
privilegiada que lo permite.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 40
Implementación de procesos
• Para implementar el modelo del proceso, el SO necesita
conservar una tabla (arreglo de estructuras) llamada tabla de
procesos, con un elemento (ítem, registro) por proceso.
• Este registro contiene información respecto al estado del
proceso:
– Contador de programa (program counter - PC),
– Apuntador de la pila (stack pointer – SP),
– Distribución de la memoria,
– Condición ó estado de archivos abiertos,
– Información de rendición de cuentas y planificación,
así como cualquier otra información relevante al proceso que
deba guardarse para permitir su cambio del estado listo al
estado ejecución de manera que pueda continuar como si
nunca hubiese sido detenido.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 41
Ejemplo de tabla de procesos
Manejo de procesos Asignación de la memoria Manejo de los archivos

Registros Puntero del segmento de Máscara de acceso UMASK


Contador de programa código Directorio raíz
Palabra de condición del Puntero del segmento de Directorio de trabajo
programa datos Descripción de los archivos
Puntero de la pila Condición de la salida Identificación efectiva (UID
Estado del proceso Condición de la señal efectiva)
Hora de inicio Identificación del proceso Grupo efectivo (GID efectivo)
Tiempo usado de CPU Proceso padre Parámetros de llamada al
Tamaño del quantum de CPU Grupo de procesos sistema
disponible Identificación real del usuario Otros indicadores de
Prioridad planificada (UID real) señalización
Puntero de la lista de espera Identificación efectiva (UID
por mensajes efectiva)
Señales pendientes Grupo real (GID real)
Otros indicadores de Grupo efectivo (GID efectivo)
señalización Mapa de bits de señalización
Nombre e Identificación del Otros indicadores de
proceso señalización

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 42
Cambio de proceso

• A primera vista, la función de cambio de proceso


parece sencilla:
• En cierto momento, un proceso que está
ejecutándose se interrumpe, el sistema operativo
pone a otro proceso en el estado de Ejecución y
pasa el control a dicho proceso.
• Sin embargo, surgen diversas cuestiones de diseño.
• En primer lugar: ¿Qué sucesos provocan un cambio
de proceso?
• Otra cuestión es que se debe hacer una distinción
entre cambio de contexto y cambio de proceso.
• Por último: ¿Qué debe hacer el sistema operativo
con las diferentes estructuras de datos bajo su
control para llevar a cabo un cambio de proceso?
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 43
Cuándo cambiar de proceso

• Un cambio de proceso puede producirse en


cualquier momento en que el sistema operativo
haya tornado el control a partir del proceso que
está actualmente ejecutándose.
• Los sucesos posibles que pueden dar el control al
sistema operativo son:
Mecanismo Causa Uso
Interrupción •Externa a la ejecución de la Reacción a un suceso
instrucción en curso. asincrónico externo.

Trampa (Trap) •Asociada a la ejecución de la Tratamiento de un error ó de


instrucción en curso. una condición excepcional.

Llamada al supervisor •Solicitud explícita. Llamada a una función del


SO.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 44
Cuándo cambiar … (2)
• En primer lugar, se van a tener en cuenta las interrupciones
del sistema.
• Se pueden distinguir, como hacen muchos sistemas, dos
clases de interrupciones del sistema, una conocida
simplemente como interrupción y otra conocida como trampa.
• La primera es originada por algún tipo de suceso que es
externo e independiente del proceso que está ejecutándose,
como la culminación de una operación de E/S.
• La segunda tiene que ver con una condición de error o de
excepción generada dentro del proceso que está
ejecutándose, como un intento ilegal de acceso a un archivo.
• En una interrupción ordinaria, el control se transfiere
primero a un gestor de interrupciones, quien lleva a cabo
algunas tareas básicas y, después, se salta a una rutina del
sistema operativo que se ocupa del tipo de interrupción que
se ha producido.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 45
La Interrupción
Elemento clave para desarrollar un SO con
multiprogramación.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 46
Manejo de Interrupciones

• Asociada con cada clase de dispositivos de Entrada /


Salida: relojes, terminales, discos, mouse, etc.;
existe una localidad en la proximidad de la parte
inferior de la memoria (localización absoluta 0000 y
siguientes) llamada vector de interrupción.
• Estos vectores de interrupción contienen la dirección
de los diferentes procedimientos para el servicio de
la interrupción asociada con dicho nivel de
interrupción.
• Si un proceso está trabajando cuando ocurre la
interrupción, el hardware de interrupciones se
encarga de guardar el contador de programa, la
palabra de condición y algunos registros de la CPU.
• A continuación, el control de la CPU salta a la
dirección asociada con el nivel de la interrupción
recibida.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 47
Cambios en memoria y
registros

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 48
Interrupciones … (2)
• A partir de este momento, comienza la responsabilidad del
software.
• El procedimiento de manejo de interrupciones debe comenzar
su ejecución guardando todos los registros en la tabla del
proceso corriente. El número de dicho proceso, así como un
puntero a su registro en la tabla de procesos se guardan en
variables globales, de manera que puedan recuperarse
rápidamente.
• Comúnmente, la comunicación entre procesos se realiza
mediante mensajes, por lo que se generará un mensaje al
proceso que espera bloqueado por la ocurrencia del evento
para que cambie su estado a listo.
• Para concluir, el programa de manejo de la interrupción
deberá entregar el control a programa planificador para que
asigne el procesador al proceso que corresponda. En sistemas
operativos de tiempo real, suele ser al proceso listo que tenga
la mayor prioridad.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 49
Esqueleto de las acciones
1. El hardware coloca en la pila al program counter, etc.
2. El hardware carga nuevo program counter tomado del vector
de interrupción.
3. Un procedimiento en lenguaje ensamblador (Assembly
language procedure) salvaguarda los registros.
4. Otro procedimiento en lenguaje ensamblador establece el
nuevo stack.
5. Un programa escrito en C (u otro lenguaje de mayor nivel
que el ensamblador) actúa como servicio de interrupción,
construyendo y enviando mensajes.
6. El código de paso de mensajes señaliza al programa que
espera por este evento que ya ocurrió, colocando como listo
al receptor de dicho mensaje.
7. El Scheduler decide cual proceso deberá ejecutarse a
continuación.
8. El procedimiento escrito en C devuelve el control al
procedimiento escrito en ensamblador.
9. El procedimiento en ensamblador da inicio al proceso que
corresponda actualmente.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 50
Clasificación de interrupciones

• De programa: Generadas por alguna condición que se


produce como resultado de la ejecución de una
instrucción, tales como el desbordamiento aritmético, la
división por cero, el intento de ejecutar una instrucción
ilegal de la máquina o una referencia a una zona de
memoria fuera del espacio permitido al usuario.
• De reloj: Generadas por un reloj interno del
procesador. Esto permite al sistema operativo llevar a
cabo ciertas funciones con determinada regularidad.
• De Entrada / Salida: Generadas por un controlador de
E/S, para indicar que una operación ha terminado
normalmente o para indicar diversas condiciones de
error.
• Por fallo del hardware: Generadas por problemas
tales como un corte de energía o un error de paridad de
la memoria.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 51
Ejemplos
• Interrupción de reloj:
– El SO determina si el proceso que está en ejecución ha estado ejecutando
durante la fracción máxima (quantum) de tiempo permitida.
– Si esto ocurre, el proceso debe pasar al estado listo y se debe despachar ó
expedir otro proceso.
• Interrupción de E/S:
– El SO determina exactamente que se ha producido una acción de E/S.
– Si la acción constituye un suceso que están esperando uno o más procesos,
entonces el SO traslada todos los procesos bloqueados correspondientes al
estado listo (y los procesos bloqueados y suspendidos pasan al estado de listos
y suspendidos).
– El SO debe entonces decidir si se reanuda la ejecución del proceso que está
actualmente en estado de ejecución o se expulsa a dicho proceso en favor de
un proceso listo de mayor prioridad.
• Fallo de memoria:
– El procesador encuentra una referencia a una dirección de memoria virtual de
una palabra que no está en memoria principal.
– El SO debe traer el bloque (página o segmento) que contiene la referencia, de
la memoria secundaria a la memoria principal.
– Después de hacer la solicitud de E/S para traer el bloque de memoria, el SO
puede llevar a cabo un cambio de contexto para reanudar la ejecución de otro
proceso; el proceso que cometió el fallo de memoria se pasa a estado
bloqueado.
– Después de que el bloque en cuestión se cargue en memoria, dicho proceso se
pondrá en estado listo.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 52
Trampas y llamadas
• En las trampas, el SO determina si el error es fatal. Si lo es, el
proceso que se estaba ejecutando pasa al estado terminado y
se produce un cambio de proceso. Si no es fatal, la acción del
sistema operativo dependerá de la naturaleza del error y del
diseño del sistema operativo. Se puede intentar algún
procedimiento de recuperación o, simplemente, notificarlo al
usuario. Se puede hacer un cambio de proceso o,
simplemente, reanudar el mismo proceso que se estaba
ejecutando.
• Finalmente, el sistema operativo puede activarse mediante
una llamada de supervisor desde e programa que se está
ejecutando. Por ejemplo, está ejecutándose un proceso de
usuario y se alega a una instrucción que solicita una operación
de E/S, tal como abrir un archivo. Esta llamada provoca la
transferencia a una rutina que forma parte del código del
sistema operativo. Por lo general, el uso de una llamada al
sistema hace que el proceso de usuario pase al estado
Bloqueado.
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 53
Cambio de contexto

• El cambio de contexto es un concepto distinto del


cambio de proceso.
• Puede producirse un cambio de contexto sin
cambiar el estado del proceso que está actualmente
en estado de ejecución.
• En tal caso, salvar el contexto y restaurarlo
posteriormente involucra un pequeño coste extra.
• Sin embargo, si el proceso que estaba ejecutándose
tiene que pasar a otro estado (listo, bloqueado,
etc.), el sistema operativo tiene que llevar a cabo
cambios substanciales en su entorno.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 54
Pasos involucrados en un
cambio completo de proceso
1. Salvar el contexto del procesador, incluyendo el contador de
programa y otros registros.
2. Actualizar el bloque de control del proceso que estaba en estado
de ejecución. Esto implica cambiar el estado del proceso a alguno
de los otros estados: listo, bloqueado, etc. También se tienen que
actualizar otros campos significativos, incluyendo la razón por la
que se abandona el estado de ejecución y la información de
contabilidad.
3. Mover el bloque de control del proceso a la cola apropiada: listos,
bloqueados en espera por el suceso i, etc.
4. Seleccionar otro proceso para ejecución.
5. Actualizar el bloque de control del proceso seleccionado. Esto
incluye cambiar el estado de dicho proceso a ejecución.
6. Actualizar las estructuras de datos de gestión de memoria. Esto
puede hacer falta dependiendo de cómo se gestione la traducción
de direcciones; este tema se analiza en la unidad 3.
7. Restaurar el contexto del procesador a aquel que existía en el
momento en el que el proceso seleccionado dejó por última vez el
estado de ejecución, cargando los valores previos del contador de
programa y de otros registros.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 55
Fuentes de información

• Tanenbaum A., “Sistemas Operativos


Modernos”, Prentice Hall, 1994
• Tanenbaum A., “Sistemas Operativos:
diseño e implementación” Prentice-Hall,
1998
• Tanenbaum A., “Sistemas Operativos
Distribuidos”, Prentice Hall, 2003
• Carretero, J. García, F. Pérez, F. “Sistemas
Operativos: Una visión aplicada” Mc Graw
Hill. 2001.
• Stallings W., “Sistemas Operativos”, 5ta.
Edición. Prentice-Hall. 2004
 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 56
Textos en biblioteca de la sede

Documento No. Año Título Autor

11486 2001 Sistemas operativos. Stallings, William.

9137 2003 Sistemas operativos modernos. Tanenbaum, Andrew S.

8443 1998 Sistemas operativos: Diseño e Tanenbaum, Andrew S.


implementación.

6980 1998 Sistemas operativos: Diseño e Tanenbaum, Andrew S.


implementación.

4684 1996 Sistemas operativos distribuidos. Tanenbaum, Andrew S.

3137 1993 Sistemas operativos modernos. Tanenbaum, Andrew S.

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 57
Referencias en Internet

• David Luis la Red Martínez “SISTEMAS


OPERATIVOS”
• Domingo Mery “Sistemas Operativos”
• Jorge Alfonso Briones García “Sistemas
Operativos Distribuidos (material adicional)”
• Sistemas operativos (SIMULACIONES Y
ANIMACIONES)

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 58
Textos en Internet (inglés)

• Andrew S. Tanenbaum “Modern Operating


Systems”
• Andrew S. Tanenbaum “Distributed
Systems: Principles and Paradigms”
• George Coulouris, Jean Dollimore and Tim
Kindberg “Distributed Systems: Concepts
and Design”, 3ra edición (4ta edición 2005)
• Avi Silberschatz, Peter Baer Galvin & Greg
Gagne “Operating System Concepts”
• Minix 3 Operating System

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 59
Registros y banderas de x86

 2007 Universidad de Las Américas - Escuela de Ingeniería - Sistemas Operativos - Dr. Juan José Aranda Aboy 60

Das könnte Ihnen auch gefallen