Está en la página 1de 50

Estamos a punto de emprender un estudio detallado de cómo los sistemas

operativos son diseñados y construidos.


Bienvenidos!!

Procesos e Hilos

Ing. Dr. Ángel Cárdenas García


Procesos
 Consideremos un servidor a donde
convergen las peticiones de
páginas Web provenientes de todo
lado.
 Cuando llega una petición el servidor
verifica si la página está en la caché.
De ser así devuelve la página.
 Si no está en la caché inicia una
petición al disco para obtenerla.
(dada la velocidad de la CPU esta
petición tarda eternidades)
 Mientras la petición se ejecuta
muchas peticiones concurrentes
pueden ejecutarse, sobre el mismo
disco u otros.
Lo importante es Modelar y
controlar la Concurrencia
Procesos
 En una PC:
 Mientras arranca el
Sistema Operativo, en
secreto se ejecutan:
▪ Correo electrónico.
▪ Actividades que
comprueban la
disponibilidad de nuevas
versiones de virus…..
 Mientras navega en la
Web:
▪ Quema CDs
▪ Imprime archivos
Procesos

 Encualquier sistema de multiprogramación,


la CPU conmuta de un proceso a otro con
rapidez, dando la apariencia de paralelismo
o pseudoparalelismo.
El modelo del proceso
El modelo del proceso

 Todo el software ejecutable en la computadora,


en el que se incluye el sistema operativo se
organiza en varios procesos secuenciales.
 Un proceso es una instancia de un programa
en ejecución, incluyendo los registros ,
contador de programa y variables.
 En concepto cada proceso tiene su CPU
virtual, aunque la CPU real conmuta de un
proceso a otro.
El modelo del proceso (a)
 Esta figura muestra
una computadora
multiprogramando 4
programas en
memoria.
El modelo del proceso (b)
 Lista 4 procesos cada una
con su propio flujo de
control, con su contador de
programa lógico y cada uno
ejecutándose en forma
independiente.
 Desde luego que solo hay
un contador de programa
físico por lo que cuando se
ejecuta cada proceso se
carga su contador de
programa lógico en el
contador de programa real.
El modelo del proceso (c)
 En la figura podemos
ver que en un intervalo
suficientemente largo
todos los procesos han
progresado, pero en
cualquier momento
dado solo hay un
proceso en ejecución.
El modelo de proceso

 La CPU conmuta rápidamente entre un


proceso y otro, la velocidad a la que el
proceso ejecuta sus cálculos no es
reproducible, aunque se ejecuten los mismos
procesos de nuevo.
Diferencia entre proceso y programa.

 Instrucciones para
hacer el pastel .
(programa)
 El hacer el pastel
siguiendo las
instrucciones es el
proceso.
 Los ingredientes son
los datos.
Procesos – programas - prioridad
 Si al estar haciendo el
pastel , llega su hijo
llorando por que le picó
una abeja, el cocinero deja
de hacer el pastel y abre un
libro de primeros auxilios,
en este momento pasó a
un proceso de mayor
prioridad, cuando termine
volverá y continuará con
el anterior proceso.
CREACIÓN DE UN PROCESO

 Los Sistemas Operativos necesitan cierta forma


de crear y terminar procesos, según sea
necesario durante la operación:
 Hay 4 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.
CREACIÓN DE UN PROCESO
 Arranque del sistema
(1):
 Cuando arranca el SO se
crean varios procesos,:
▪ En primer plano: Es decir
procesos que interactúan
con los usuarios (humanos)
y realizan trabajo para
ellos.
CREACIÓN DE UN PROCESO
 Arranque del sistema:
 Cuando arranca el SO se crean
varios procesos (2):
▪ En segundo Plano: son los que no
están asociados con usuarios sino
con funciones específicas Ejemplo:
manejar actividades como correo
electrónico, para avisar que llega
un correo entrante, aceptar
peticiones entrantes de páginas
Web, noticias, impresiones etc.
Estos se conocen como demonios
(daemons).
▪ Los sistemas grandes tiene
docenas de ellos.
▪ Verlos en Administrador de tareas
CREACIÓN DE UN PROCESO
 La ejecución desde un proceso
en ejecución:
 Un proceso a menudo llama al
sistema para crear uno o más
procesos, para que le ayuden a
realizar su trabajo.
 Ejemplo para obtener una gran
cantidad de datos desde la red
para su posterior procesamiento:
▪ Se creará un proceso para obtener
datos y colocarlos en un buffer
compartido,
▪ Mientras un segundo proceso
remueve los datos del buffer y los
procesa.
 En un multiprocesador esto se
realiza con mayor rapidez.
CREACIÓN DE UN PROCESO
 Petición de un usuario
para crear un proceso:
 El usuario puede crear
un proceso con un
doble clic en un ícono.
CREACIÓN DE UN PROCESO
 Procesamiento por lotes:
 Aplica a mainframes
grandes.
 Los usuarios pueden enviar
trabajos de procesamiento
por lotes al sistema,
(posiblemente en forma
remota).
 El sistema operativo decide
que tiene los recursos para
ejecutar otro trabajo, crea
el proceso y ejecuta el
siguiente de la cola.
Terminación de procesos

 Una vez que se crea el proceso, comienza a


ejecutarse y realiza el trabajo al que está
destinado.
 Las condiciones de término son:
 Salida normal (voluntaria).
 Salida por error (voluntaria).
 Error fatal (involuntaria).
 Eliminado por otro proceso (involuntaria).
Terminación de procesos
 Salida Normal.
 Exit Process, en
windows. Exit en Unix.
 Procesadores de
palabras, exploradores y
otros, todos tienen un
ícono para indicar que
todos los archivos se
cierren y termine.
Terminación de procesos
 Salida por Error.
 Por ejemplo si el usuario
escribe el comando para
ejecutar el programa y
no existe dicho archivo.
Terminación de procesos
 Error Fatal:
 Ejecución de una
instrucción ilegal, hace
referencia a una
dirección de memoria
que no existe.
 División por 0.
 Algunos programas
permiten tomar control
de ese ese error y no
terminar el proceso.
Terminación de procesos
 Eliminado por otro
proceso:
 Un proceso puede solicitar al
SO que elimine otros
procesos.
 Los procesos deberían tener
la autorización necesaria,
para realizar la eliminación.
 Cuando un proceso termina,
todos los procesos creados
se eliminan de inmediato
también.
Jerarquías de Procesos
 En algunos sistemas,
cuando un proceso
crea a otro, el proceso
padre y el proceso hijo
continúan asociados.
 El proceso hijo puede
crear por si mismo más
procesos, formando
una jerarquía de
procesos.
Jerarquías de Procesos
 Unix tiene el concepto
de jerarquía de
procesos.
 Un proceso nunca
deshereda a otro.
Jerarquías de Procesos
 Windows no tiene el
concepto de jerarquía de
procesos.
 Todos los procesos son iguales.
 Una jerarquía de procesos, se
simula, cuando se crea un
proceso el padre recibe un
indicador especial, un token
(llamado manejador) que
puede utilizar para controlar al
hijo.
 Tiene la libertad de pasar ese
indicador a otros procesos,
con lo cual invalida la Jerarquía.
(deshereda)
Estados de un proceso
 Aunque cada proceso, es
una entidad
independiente, con su
propio contador de
programa y estado
interno, a menudo los
procesos necesitan
interactuar con otros.
 Un proceso puede
generar otra salida que
otro proceso utiliza
como entrada.
Estados de un proceso
 Cuando un proceso se
bloquea, lo hace
debido a que por lógica
no puede continuar,
comúnmente porque
está esperando una
entrada, que todavía
no está disponible.
 En este caso la
suspensión es inherente
al problema.
Estados de un proceso
 También es posible que un
proceso, que esté listo en
concepto y pueda
ejecutarse, se detenga
debido a que el SO decidió
asignar la CPU a otro
proceso por cierto tiempo.
 En este segundo caso es un
tecnicismo del sistema, no
hay suficientes CPU como
para otorgar a cada
proceso un procesador
privado.
Estados de un proceso
 Los tres estados en los que
se puede encontrar un
proceso son:
 En ejecución (usando la CPU
en ese instante)
 Listo (ejecutable, se detuvo
temporalmente para dejar que
se ejecute otro proceso) No
hay una CPU para él.
 Bloqueado (no puede
ejecutarse sino hasta que
ocurra cierto evento externo).
No puede ejecutarse aunque
haya una CPU disponible.
Estados de un proceso
 Hay cuatro transiciones
disponibles entre estos
tres estados.
 Transición 1. ocurre
cuando el SO descubre
que el proceso no puede
continuar.
 En algunos sistemas el
proceso ejecuta una llamada
al sistema como Pause.
 En otros como Unix solo se
bloquean automáticamente.
Estados de un proceso
 Transiciones 2 y 3. son
producidas por el planificador de
procesos, una parte del SO, sin
que el proceso sepa siquiera
acerca de ellas.
 La transición 2 ocurre cuando el
planificador, decide que el proceso
en ejecución se ha ejecutado el
tiempo suficiente y es momento de
dejar que otro proceso tenga parte
del tiempo de la CPU.
 La transición 3 ocurre cuando todos
los demás procesos han tenido su
parte del tiempo de la CPU y es
momento de que el primer proceso
obtenga la CPU para ejecutarse de
nuevo.
Estados de un proceso
 Transición 4. ocurre cuando
se produce el evento externo
por el que un proceso estaba
esperando, como la llegada
de ciertos datos de entrada.
 Si no hay otro proceso en
ejecución en ese instante se
activa la transición 3 y el
proceso empieza a ejecutarse.
 Caso contrario debe esperar
en estado listo por unos
instantes, hasta que la CPU
esté disponible y sea su turno
de utilizarla.
Estados de un proceso
 El nivel más bajo del SO
es el planificador, con una
variedad de procesos
encima de él. 1 2 …. n--2 n-1
 Todo el manejo de las Planificador

interrupciones y los
detalles relacionados
como el iniciar y detener
los procesos se ocultan en
el planificador.
 El resto del SO está
estructurado en procesos.
Implementación de Procesos
 Para implementar el  Una entrada contiene
información importante
modelo de procesos el acerca del:
SO mantiene una  estado del proceso,
tabla (un arreglo de  Incluyendo su contador de
programa y
estructuras), llamada  Su apuntador de pila,
Tabla de procesos,  Asignación de memoria,
con solo una entrada  Archivos abiertos,

por cada proceso  Información de contabilidad y


planificación y mas…
(llamadas bloques de Y todo lo que debe guardar cuando
control de procesos) cambia del estado en ejecución
a listo,
Implementación de los procesos
Administración de Procesos Administración de memoria Administración de
archivos
Registros Apuntador a la información del segmento de texto Directorio Raíz
Contador del programa Apuntador a la información del segmento de datos. Directorio de trabajo
Palabra de estado del programa. Apuntador de la información del segmento de pila. Descripciones de archivos

Apuntador de la pila ID de usuario


Estado del proceso ID de Grupo
Prioridad
Parámetros de planificación
ID del proceso
Proceso Padre
Grupo de Procesos
Señales Campos clave en un sistema típica en la
Tiempo de inicio del proceso tabla de procesos
Tiempo utilizado de la CPU
Tiempo de la CPU utilizada por
el hijo
Hora de la siguiente alarma.
Implementación de los procesos

 Para explicar como la ilusión de varios


procesos secuenciales se mantiene en una o
en varias CPU.
 Con cada clase de E/S hay una ubicación
asociada (por lo general una ubicación cerca
de la parte final de la memoria) a la cual se le
llama vector de interrupción.
 Esta ubicación contiene la dirección del
procedimiento de interrupciones
Implementación de los procesos
 Suponga que el proceso de usuario 3 está en
ejecución cuando ocurre una interrupción de disco.
 El contador de programa, la palabra de estado del
programa y algunas veces uno o más registros del
proceso del usuario 3 se meten en la pila(actual),
mediante el hardware de interrupción. Esto es todo
lo que hace el hardware.
 De aquí en adelante todo depende del software y
en especial del servicio de interrupciones.
Implementación de los procesos

 Todas las interrupciones empiezan por


guardar los registros a menudo en la
entrada de la tabla de procesos para el
proceso actual.
 Después, se quita la información que la
interrupción metió en la pila y el apuntador
de pila se establece para que apunte a una
pila temporal utilizada por el manejador de
procesos.
Implementación de los procesos

 Las acciones como guardar los registros y


establecer el apuntador de pila no se
pueden expresar ni siquiera en un lenguaje
de alto nivel, por lo que se realizan en
lenguaje ensamblador, que por lo general
es la misma para todas las interrupciones,
ya que el trabajo de guardar los registros es
idéntico, sin importar cual sea la causa de la
interrupción.
Implementación de los procesos

 Cuando termina esta rutina llama a un


procedimiento en el lenguaje en el que fue
programado el SO, para realizar el resto del
trabajo, para este tipo de interrupción
específico.
 Cuando ha terminado su trabajo y talvés
ocasionando que algún otro proceso esté
entonces listo, el planificador es llamado para
ver que proceso se debe ejecutar a
continuación.
Implementación de los procesos

 Después de eso, el control se pasa de vuelta


al código en lenguaje ensamblador para
cargar los registros y el mapa de memoria
para el proceso que entonces es el actual y
se empieza a ejecutar.
 En el cuadro de la siguiente diapositiva, se
sintetiza el manejo de interrupciones, y la
planificación del proceso.
Implementación de procesos

1. El hardware mete el contador de programa a la pila.


2. El hardware carga el nuevo contador de programa del vector de interrupciones.
3. Procedimiento en lenguaje ensamblador guarda los registros.
4. Procedimiento en lenguaje ensamblador, establece una nueva pila
5. El servicio de interrupciones de C se ejecuta (Por lo general lee y guarda la entrada
en el buffer)
6.El planificador decide que proceso se va a ejecutar a continuación.
7. El procedimiento en C regresa al código del ensamblador
8. Procedimiento en lenguaje ensamblador inicia el nuevo proceso actual.
Implementación de Procesos

 Cuando el proceso termina, el sistema


operativo muestra un carácter indicador y
espera un nuevo comando.
 Cuando recibe el comando, carga un nuevo
programa en memoria, sobre escribiendo el
anterior.
Modelación de la Multiprogramación

 Cuando se utiliza la multiprogramación, el uso de


la CPU se puede mejorar.
 Dicho de otra manera: si el proceso realiza
cálculos solo el 20 por ciento del tiempo que está
en la memoria, con cinco procesos en memoria a
la vez la CPU deberá estar ocupada todo el
tiempo.
 Sin embargo, este modelo es demasiado
optimista, ya que se supone que los 5 procesos,
nunca estarán esperando la E/S al mismo tiempo.
Modelación de la Multiprogramación

 Un mejor modelo es analizar el uso de la CPU


de un modo probabilístico.
 Si un proceso gasta una fracción p esperando
a que se complete una operación de E/S.
 Con n procesos en memoria a la vez, la
probabilidad de que todos los n procesos
estén esperando la E/S (en cuyo caso, la CPU
estará inactiva) es pn
Modelación de la Multiprogramación

 Entonces, el uso de la CPU se obtiene mediante la


fórmula:
 Uso de la CPU= 1-pn
 Ejemplo: Suponga que una computadora, tiene 512
MB de memoria, de la cual el SO ocupa 128 MB y cada
programa ocupa otros 128MB.
 Estos tamaños permiten que hayan 3 programas de
usuario en memoria a la vez. Con un promedio de 80%
de tiempo de espera de E/S. la utilización de la CPU
(ignorando la sobrecarga del SO) de 1-0.83 o de
aproximadamente 49 por ciento.
Modelación de la Multiprogramación

 Si agregamos 512MB más de memoria, el


sistema puede pasar de la
multiprogramación de tres vías a una
multiprogramación de siete vías, con lo cual
el uso de la CPU se eleva hasta el 79%. En
otras palabras, los 512MB elevarán el
rendimiento el 30%.
Modelación de la Multiprogramación

 Si volvemos a agregar otros 512MB el uso de


la CPU solo se incrementaría del 79 al 91% ,
con lo cual se elevaría el rendimiento solo el
12% adicional.
 De acuerdo a este modelo, se diría que la
primera inversión es buena inversión pero la
segunda no.
Bibliografía

 Sistemas Operativos Modernos


Andrew Tanenbaum
3 edición
2009

También podría gustarte