GUIA Procesos Sistemas Operativos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 19

UNIVERSIDAD POLITÉCNICA TRRITORIAL DE LARA

PROGRAMA NACIONAL DE FORMACIÓN


EN INFORMÁTICA

GESTIÓN DE PROCESOS
SISTEMAS OPERATIVOS

Prof. Pura Castillo. | Sistemas Operativos. | junio de 2018


INTRODUCCIÓN

Un programa no puede hacer nada si la CPU no ejecuta sus instrucciones. Todos los
programas cuya ejecución solicitan los usuarios lo hacen en forma de procesos, de ahí
la importancia de conocerlos en detalle Podemos pensar en un Proceso como la unidad de
trabajo de un sistema. El “sistema” consiste en una colección de procesos, algunos de los
cuales son procesos del sistema operativo (los que ejecutan código del sistema), siendo el
resto procesos de usuario (los que ejecutan código de algún usuario como una porción de
un programa en ejecución o todo el programa, pero su definición se ampliará a medida que
avancemos en el estudio.

Propósito de la unidad
Con el estudio de este tema se pretende brindar una noción general acerca de
los conceptos y problemas relacionados con la gestión de procesos y threads en
sistemas operativos. Se conocerá en forma general cómo se realiza la comunicación
entre los procesos y subprocesos.

Objetivos

Objetivo conceptual: que el alumno aprenda conceptos fundamentales de la gestión de


procesos, métodos de planificación de procesos, comunicación entre procesos,
sincronización de procesos y manejo de bloqueos mutuos. El tema también incluye un
tratamiento de hilos..

Objetivo procedimental:

. Que el alumno adquiera las destrezas necesarias para gestionar procesos en un


sistema operativo multiusuario.

• Que Identifique los problemas más comunes que se dan en la comunicación de los
procesos.
. Que Identifique, analice y explique los diferentes algoritmos que se han diseñado
para eliminar o disminuir los problemas de comunicación entre procesos.

Prof. Pura Castillo. Material recolectado con fines académicos 1


PROCESOS Y SUBPROCESOS

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. Un proceso necesita ciertos recursos, incluidos tiempo de CPU,
memoria, archivos y dispositivos de E/S, para llevar a cabo su tarea. Estos recursos se
otorgan al proceso en el momento en que se crea, o bien se le asignan durante su
ejecución.

Un proceso no es más que un programa en ejecución, e incluye los valores actuales del
contador de programa, los registros y las variables. Conceptualmente cada uno de estos
procesos tiene su propia CPU virtual. Desde luego, en la realidad la verdadera CPU
conmuta de un proceso a otro

Es de hacer notar que 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.

OPERACIONES SOBRE LOS PROCESOS

En general los procesos pueden ser creados y eliminados dinámicamente, por lo que los
sistemas operativos deben proporcionar mecanismos para la creación y terminación de los
mismos.

1. Crear: puede hacerse desde un proceso ya existente o a través del intérprete de


comandos del S.O. en cualquier caso se considera hijo del proceso creador. El trabajo
para el S.O. consiste en darle una entrada en el PCB y pasarlo a la cola de preparados.
Hay varias formas de crear procesos:

• Inicialización del sistema. Cuando se inicia el sistema se crean varios procesos,


algunos interactúan con el usuario y otros no (demonios)

• Ejecución de una llamada al sistema para crear procesos por parte de un proceso en
ejecución. Mediante una llamada al sistema. Por ejemplo para bajar datos es
conveniente crear un proceso para que los ponga en el buffer.

Prof. Pura Castillo. Material recolectado con fines académicos 2


• Solicitud de un usuario para crear un proceso. En modo interactivo es muy común
por parte de los usuarios.

• Inicio de un trabajo por lotes.

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.
Los pasos de creación de procesos en UNIX es el siguiente:

Un proceso especial llamado init, está presente en la imagen de arranque. Cuando dicho
proceso comienza a ejecutarse lee un archivo que indica cuantas terminales hay, y genera
un proceso nuevo para cada una. Estos procesos esperan a que alguien inicie sesión. Si hay
inicio de sesión login exitoso, el proceso login ejecuta un shell para aceptar comandos.
Estos pueden generar más procesos, y así de forma sucesiva. Por lo tanto todos los
procesos del sistema pertenecen a un árbol que tiene a init como raíz.

El proceso hijo puede invocar la llamada al sistema exec (),   sustituye su imagen en
memoria por la de un programa diferente

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

Prof. Pura Castillo. Material recolectado con fines académicos 3


EJEMPLO FORK() EJEMPLO EXECVE()

#include <stdio.h> #include <stdio.h>


#include <sys/types.h> #include <unistd.h>
main()
#include <unistd.h
{
main() int error;
{ char *arg[3],*argp[1];
int a,val=2; arg[0]="ls";
a=fork();
arg[1]="-l";
switch(a)
{ arg[2]=NULL;
case -1: break; /*error */ argp[0]=NULL; /* entorno */
case 0: val--; execve("/bin/ls",arg,argp);
/*Proceso hijo */
break; printf("\n error \n");
/*Proceso padre */
default: val++;
}
}
printf("\n val= %d\n",val);
}

  El padre puede dedicarse a crear más hijos, o esperar a que termine el hijo –  wait() lo
saca de la cola de “listos” hasta que el hijo termina

Prof. Pura Castillo. Material recolectado con fines académicos 4


Ejercicio
Dado el siguiente programa en el cual se crea un proceso y se espera la finalización
De su ejecución para crear otro y volver a esperar a su finalización, se pide
modificarlo para que se creen los dos procesos y ejecuten en paralelo y el proceso padre
espere por la finalización de los dos

Solución

#include <sys/types.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdio.h>

int main(int argc, char *argv[] ) int main(int argc, char *argv[] )
{
{
pid_t pid;
pid_t pid;
int status;
int status;
pid = fork(); pid = fork();
if (pid != 0) if (pid == 0)
{ sleep(5); exit(5); }
{
while (pid != wait(&status)); pid = fork();
if (pid == 0)
}
{ sleep(1); exit(1);
else }
{ sleep(5); exit(5); wait(&status); wait(&status);
} }

pid = fork(); if (pid != 0)


{
while (pid != wait(&status));
}
else
{ sleep(1); exit(1);
}

Prof. Pura Castillo. Material recolectado con fines académicos 5


2. Terminar de Procesos

Cuando un proceso termina todos los recursos asignados son liberados (memoria, ficheros
abiertos, entradas en tablas,...), el kernel notifica al proceso padre el evento.   Un proceso
puede terminar de 2 formas:
• Voluntariamente: Llamada al sistema exit()

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. También podemos hablar de Salida por
error (voluntaria). 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

• Involuntariamente: Error fatal, Eliminado por otro proceso

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


debido a un error en el programa. Por ejemplo cuando se hace referencia a una
parte de memoria no existente o la división entre cero.
En UNIX esta llamada es kill. La función correspondiente en Win32 es
erminateProcess. En ambos casos, el proceso eliminador debe tener la autorización
necesaria para realizar la eliminación

 Cuando un proceso termina pueden suceder dos cosas:


–  Sus hijos no se ven afectados
–  Todos los hijos acaban también, terminación en cascada
En Unix, los hijos del proceso terminado pasan a depender del proceso init, el proceso
finalizado pasa a estado Zombie hasta que el proceso padre recoge su código de
finalización. La terminación de un proceso y la eliminación de su BCP son tareas
diferenciadas. Cuando el padre obtiene la información del hijo, se procede a eliminar las
estructuras de datos

3. Cambiar La Prioridad Del Proceso.

4. Dormir O Bloquear La Ejecución De Un Proceso. Dormir un proceso un tiempo.


5. Despertar un Proceso. Una forma de desbloquear un proceso de forma artificial. Se
suele emplear para procesos dormidos artificialmente.

Prof. Pura Castillo. Material recolectado con fines académicos 6


6. Suspender Un Proceso. Suele hacerse en situaciones de sobrecarga del S.O.
7. Reanudar Un Proceso. Activar un proceso suspendido.

BLOQUE DE CONTROL DE SISTEMA


Estructura básica para almacenar los datos necesarios para poder ejecutar el sistema
operativo:

– Lista de descriptores de procesos.


– Puntero al descriptor del proceso que está haciendo uso del procesador.

– Puntero a la cola de descriptores de procesos que no hacen uso del ordenador, pero
están en espera.
– Punteros a colas de procesos que se encuentran en diferentes situaciones.

– Identificadores de las rutinas necesarias para tratar las interrupciones producidas por el
hardware, el software o errores indeseados.
Puntero a la cola de descriptores de recursos

BLOQUE DE CONTROLDE PROCESOS

Cada proceso se representa en el sistema operativo con un bloque de control de proceso


PCB, en inglés (Process Control Block)), también llamado bloque de control de tarea.
El BCP es un registro especial donde el sistema operativo agrupa toda la información que
necesita conocer respecto a un proceso particular.

Estado del proceso: El estado puede ser: nuevo,


listo, en ejecución, en espera, detenido, etcétera

El contador indica la dirección de la siguiente


instrucción que se ejecutará para este proceso.

Registros de CPU: El número y el tipo de los


registros varía dependiendo de la arquitectura del
computador. Los registros incluyen acumuladores,
registros índices, punteros de pila y registros de
propósito general, así como cualquier información
de códigos de condición que haya. Junto con el
contador de program, esta información de estado se

Prof. Pura Castillo. Material recolectado con fines académicos 7


debe guardar cuando ocurre una interrupción, para que el proceso pueda continuar
correctamente después.

Información de planificación de CPU: Esta información incluye una prioridad del


proceso, punteros a colas de planificación y cualquier otro parámetro de
planificación que haya.

Información de gestión de memoria: Esta información puede incluir datos tales


como el valor de los registros de base y límite, las tablas de páginas o las tablas de
segmentos, dependiendo del sistema de memoria empleado por el sistema
operativo.

Información contable: Esta información incluye la cantidad de tiempo de CPU y


tiempo real consumida, límites de tiempo, números de cuenta, números de trabajo
o proceso, y demás.

Información de estado de E/S: La información incluye la lista de dispositivos de


E/S asignadas a este proceso, una lista de archivos abiertos, etcétera.

El PCB sirve como depósito de cualquier información que pueda variar de un proceso a
otro

ESTADOS DE LOS PROCESOS


Los procesos tienen un estado que cambia a lo largo de su ejecución y está definido
parcialmente por la actividad actual del propio proceso. Los estados por los que puede
pasar un proceso varían de un sistema operativo a otro, aunque los siguientes son comunes
a todos ellos:

o Nuevo. El proceso está siendo creado.

o Ejecutando. El proceso está siendo ejecutado puesto que ha sido escogido


por el planificador de la CPU. Sólo puede haber un proceso en este estado
por CPU en el sistema.

o Bloqueado. El proceso está esperando por algún evento, como por ejemplo
que termine alguna operación de E/S o que se reciba alguna señal.
Obviamente varios procesos pueden estar en este estado.

o Preparado. El proceso está esperando a que se le asigne la CPU. Varios


procesos pueden estar en este estado.

Prof. Pura Castillo. Material recolectado con fines académicos 8


o Terminado. El proceso ha finalizado su ejecución y espera a que se liberen
los recursos que le fueron asignados.

Nuevo Admitido Salida Terminado

Temporizador

Preparado Ejecutando

Asignación por el
E/S o evento Planificador de la CPU A la espera de un
Completado Evento o E/S

Bloqueado

Podemos dividirlos en activos e inactivos

Activos: compite por el procesador o está en condiciones de poder hacerlo


loqueado
• Ejecución.
• Preparado/Listo:
• Bloqueado:
Inactivos: Estado en el que se
sitúan los procesos que no pueden
competir por el procesador.

– Suspendido bloqueado:
procesos suspendidos
mientras se esperaba un
evento, y las causas de su
bloqueo no han desaparecido.

– Suspendido preparado: procesos suspendidos pero que no tienen causas para


estar bloqueados

Prof. Pura Castillo. Material recolectado con fines académicos 9


PLANIFICACION DE PROCESOS

La planificación de procesos se refiere a cómo determina el sistema operativo al


orden en que irá cediendo el uso del procesador a los procesos que lo vayan solicitando, y
a las políticas que empleará para que el uso que den a dicho tiempo no sea excesivo
respecto al uso esperado del sistema.

Características:

 La planificación es la base para lograr la multiprogramación.


 Es un módulo de SO que se encarga de mover los procesos entre las distintas colas
de planificación.
 La ejecución de un proceso consiste en una alternancia entre ráfagas de CPU y
ráfagas de E/S

Tipos de planificación:
 No Apropiativa: El proceso en ejecución conserva el uso de la CPU mientras lo
desee.
 Apropiativa: El sistema operativo puede expulsar a un proceso de la CPU.

Niveles de planificación
 Planificación a corto plazo: o planificador de CPU selecciona uno de los procesos
en la cola de preparados y lo asigna a la CPU. Obviamente este planificador es
invocado cuando un proceso en ejecución abandona la CPU Selecciona el siguiente
proceso a ejecutar.
 Planificación a medio plazo:   Selecciona qué procesos se añaden o se retiran
(expulsión a swap) de memoria principal.
 Planificación a largo plazo: En los sistemas de multiprogramación el planificador
de largo plazo o planificador de trabajos selecciona los trabajos desde la cola de
entrada en el almacenamiento secundario, dónde están todos almacenados, y los
carga en memoria Realiza el control de admisión de procesos a ejecutar. Muy
usada en sistemas batch.

Prof. Pura Castillo. Material recolectado con fines académicos 10


Objetivos de la Planificación de Procesos
La Planificación de procesos tiene como principales objetivos los siguientes:
 Equidad: Todos los procesos deben ser atendidos.
 Eficacia: El procesador debe estar ocupado el 100% del tiempo.
 Tiempo de respuesta: El tiempo empleado en dar respuesta a las solicitudes del
usuario debe ser el menor posible.
 Tiempo de regreso: Reducir al mínimo el tiempo de espera de los resultados
esperados por los usuarios por lotes.
 Rendimiento: Maximizar el número de tareas que se procesan por cada hora.
Funciones del planificador de Procesos:
 Llevar el control del estado de cada proceso.
 Decidir qué proceso usará el procesador y durante cuánto tiempo, para ello
empleará un cierto criterio en base al cual tomará las decisiones. Si implementa
multiprogramación, deberá emplear un criterio que evite que un proceso
monopolice el procesador.
 Asignar el procesador al proceso, restableciendo el contexto de la ejecución del
proceso por donde fuere. El contexto de la ejecución se encuentra almacenado en
el PCB del proceso asignado.
 Retirar el procesador al proceso, salvando el contexto de la ejecución del proceso,
para poder restablecerlo posteriormente una vez que vuelva a ser asignado. El
contexto de la ejecución se almacenará en el PCB del proceso retirado.
El planificador de procesos es software, por tanto, requiere emplear el recurso
procesador para ejecutar su código.

Criterios de Planificación:
 Utilización de la CPU: Mantener la CPU tan ocupada como sea posible
(maximizar).
 Rendimiento: Numero de procesos que se completan por unidad de tiempo
(maximizar).
 Tiempo de retorno: Tiempo transcurrido desde que se presenta el proceso hasta que
se completa (minimizar).
 Tiempo de espera: Tiempo que un proceso pasa en la cola de procesos listos
esperando la CPU (minimizar).
 Tiempo de respuesta: Tiempo que tarda un proceso desde que se le presenta una
solicitud hasta que produce la primera respuesta.

Prof. Pura Castillo. Material recolectado con fines académicos 11


Algoritmos de Planificación
Estos algoritmos tratan sobre la decisión de elegir a cuál de los procesos que están en la
cola de listos se le asignara la CPU. Veamos algunos de ellos.

No Apropiativos
▪ First-Come, First-Serve (FCFS) Primero en llegar, primero en ser atendido Se le
asigna la CPU al proceso que la requirió primero. Se maneja a través de una cola
Fifo, tal que cuando un proceso requiere CPU, su PCB se coloca la final de la cola.
▪ Cuando se debe elegir un proceso para asignarle CPU se elige el proceso cuya PCB
esta primera en la cola.

▪ Shortest-job-first Scheduling (SJF). Planificación “primero el trabajo más


corto”. Este algoritmo elige entre los procesos de la cola de listos, aquel que tenga
la próxima ráfaga de CPU más corta. Para ello este dato debe ser conocido,
obviamente.
▪ Es un algoritmo que permite que el tiempo de espera promedio sea bajo.Se puede
utilizar en planificadores de largo plazo, pero no en los de corto plazo pues no hay
manera de conocer la medida de la próxima ráfaga. Se podría aproximar
considerando el valor de la previa.

Prof. Pura Castillo. Material recolectado con fines académicos 12


▪ Por prioridad. Se le asocia un valor a cada proceso que representa la prioridad, y
se le asigna la CPU al proceso de la cola de ready que tenga la mayor prioridad.Los
valores asociados a la prioridad son un rango fijo, de 0 a n, según cada sistema.
También lo determina cada sistema si el número más bajo es la más alta o la más
baja prioridad. POSIX proporciona planificación basada en prioridades.

Prof. Pura Castillo. Material recolectado con fines académicos 13


Algoritmos De Apropiación
Algoritmo SRT (Shortest Remaining Time).

Es una versión apropiativa de SJF, donde se tiene en cuenta también los procesos de la
cola. En el caso de que existan procesos en cola más cortos, se expropia el proceso en
ejecución y se ejecutaría el de la cola.

Round-Robin Scheduling (RR).


Planificación por turno circular. Se la asigna a cada proceso de la cola de listos un
intervalo de tiempo de CPU. Ese intervalo es llamado time slice o quantum. Para
implementar este algoritmo la cola de listos se mantiene como una cola FIFO. Y la CPU se
va asignando dándole un máximo de 1 quantum a cada proceso.
Si el proceso no va a usar todo ese tiempo, usa lo necesario y libera la CPU. Se elige
entonces otro proceso de la cola. Si excede el quantum, se produce una interrupción. En
ambos casos al dejar la CPU hay un cambio de contexto.

Prof. Pura Castillo. Material recolectado con fines académicos 14


Colas Multinivel
En un sistema conviven procesos mixtos. Puede haber requerimientos de tiempo de
respuesta distintos si conviven procesos interactivos con procesos batch (o para aquellos
que provienen del Unix, procesos en foreground y procesos en background). Existen
algoritmos que contemplan esta situación dividiendo la cola de ready en distintas colas
según el tipo de proceso, estableciendo una competencia entre las colas y entre los
procesos del mismo tipo entre sí. Cada cola puede tener su algoritmo de scheduling: los
procesos batch pueden ser “planificados” por un algoritmo FCFS y la cola de procesos
interactivos, por un RR.

Prof. Pura Castillo. Material recolectado con fines académicos 15


PROCESOS LIGEROS, HILOS O THREADS

Debido a que los subprocesos tienen alguna de las propiedades de los procesos, a veces se
les llaman procesos ligeros. También, se emplea el término múltiples subprocesos para
describir la situación en la que se permiten varios subprocesos en el mismo proceso
Un proceso ligero es un programa en ejecución (flujo de ejecución) que comparte la
imagen de memoria y otras informaciones con otros procesos ligeros. Un proceso puede
contener un solo fljo de ejecución, como ocurre en los procesos clásicos, o más de un
flujo de ejecución (procesos ligeros). Desde el punto de vista de la programación, un
proceso ligero se define como una función cuya ejecución se puede lanzar en paralelo
con otras. El hilo de ejecución primario, o proceso ligero primario, corresponde a la
función main . Todos los procesos ligeros de un mismo proceso comparten el mismo
espacio de direcciones de memoria, que incluye el código, los datos y las pilas de los
diferentes procesos ligeros

La implementación de subprocesos en espacio de usuario es un método que consiste


en colocar por completo el sistema de subprocesos en espacio de usuario. El kernel no
sabe nada de ellos. En lo que a él respecta, está administrando procesos ordinarios, de un
solo subproceso. La primera ventaja, y la más obvia, es que puede implementarse un
sistema de subprocesos en el nivel de usuario en un SO que no maneje subprocesos.
Todos los sistemas operativos solían pertenecer a esta categoría, y todavía subsisten
algunos.

Ahora consideremos la posibilidad de que el kernel esté enterado de la existencia de


subprocesos y los administre. No se necesita un sistema de tiempo de ejecución en cada
uno.

Además, no existe una tabla de subprocesos en cada proceso. En vez de eso, el kernel
tiene una tabla de subprocesos que lleva el control de todos los subprocesos del sistema.
Cuando un subproceso quiere crear o destruir otro subproceso, emite una llamada al
kernel, que se encarga de crearlo o destruirlo actualizando su tabla de subprocesos.

Prof. Pura Castillo. Material recolectado con fines académicos 16


Ventajas
– Capacidad de respuesta: si un proceso se bloquea por alguna causa, el
proceso puede continuar con otra parte del código.
– Compartición de recursos: puede haber varias hebras accediendo a los
mismos recursos (memoria, ficheros)
– Economía: el trabajo de crear procesos es muy superior al de crear hebras.
Los cambios de contexto también son más latosos. (30 y 5 en Solaris)
Utilización de arquitecturas multiprocesador: la arquitectura multiprocesador puede
ayudar en este sentido. Un proceso monohebra sólo se puede ejecutar sobre un procesador

Prof. Pura Castillo. Material recolectado con fines académicos 17


BIBLIOGRAFÍA

Carretero Pérez, Jesús y otros. Sistemas operativos: una visión aplicada. Primera
Edición, Editorial McGraw Hill, España, 2001.

Silberschatz, Abraham y otros. Sistemas operativos. Sexta Edición, Editorial Limusa


Wiley, México, 2002.

Tanembaum, Andrew S. Sistemas operativos Modernos. 2ª Edición, Prentice-Hall


Hispanoamericana, S.A., México. 2003.

Prof. Pura Castillo. Material recolectado con fines académicos 18

También podría gustarte