Sistemas Operativos
Programa
Conjunto de instrucciones, código. Elemento pasivo.
Proceso
Programa en ejecución. (Ente dinámico)
Un programa puede levantar varios procesos.
Tiene asociado un espacio de direcciones.
Sistemas Operativos: Conceptos
Espacio de Direcciones :
El espacio de direcciones es el espacio en memoria asignado al proceso.
Aquí se encuentra el código del proceso y los datos que este utiliza
Process Control Block (PCB) :
El Process Control Block, es una ficha que lleva el
sistema operativo con toda la información administrativa
de un proceso.
Estado del Proceso
Permite conocer con exactitud el estado
Process ID
del proceso, en que parte de su código
Parent Process ID
Program Counter
se está ejecutando, cual es su número
identificador, cuanta memoria tiene
Registros
asociada, cuales archivos están
Límites de memoria abiertos, etc.
Listado de archivos abiertos
Tabla de Procesos :
La tabla de procesos, es una estructura en memoria que contiene la
ubicación de los PCB de todos los procesos del sistema. A través de esta,
el kernel puede conocer el estado de cada proceso, saber en parte de la
memoria se encuentra, etc.
0 1 2 Process Table3 4 5
Estado del Proceso Estado del Proceso Estado del Proceso Estado del Proceso Estado del Proceso Estado del Proceso
Process ID Process ID Process ID Process ID Process ID Process ID
Parent Process ID Parent Process ID Parent Process ID Parent Process ID Parent Process ID Parent Process ID
Program Counter Program Counter Program Counter Program Counter Program Counter Program Counter
Registros Registros Registros Registros Registros Registros
Límites de memoria Límites de memoria Límites de memoria Límites de memoria Límites de memoria Límites de memoria
Listado de archivos abiertos Listado de archivos abiertos Listado de archivos abiertos Listado de archivos abiertos Listado de archivos abiertos Listado de archivos abiertos
Creación de un proceso :
Crear un proceso es la acción de poner en memoria un programa,
entregarle un contexto donde poder ejecutar sus instrucciones (Espacio
Virtual), registrar la información de donde está y que características
posee (PCB), e iniciar su funcionamiento (Calendarizar su ejecución).
• Opciones de ejecución:
• Concurrente
• Padre espera conclusión de hijo
• Opciones del Address Space
• Hijo es un duplicado del padre
• Hijo tiene un programa separado para cargarse
• Pasos para la creación de un proceso
• Cargar el código a la memoria
• Crear el stack vacío
• Crear o asignar PCB
• Inscribir el proceso en el scheduler
Estados de un proceso :
Nuevo proceso recién creado
Corriendo proceso en ejecución
Bloqueado proceso en espera de un evento (I/O)
Listo : proceso listo para entrar a la CPU
Terminado : proceso que ha terminado su ejecución
Listo y suspendido: Proceso listo para entrar a la CPU
Bloqueado y suspendido: Proceso Bloqueado (Esperando I/O
Cambio de contexto :
• El Cambio de contexto, es el proceso por el cual el Sistema Operativo pasa de ejecutar el
código de un proceso, a ejecutar el código de otro proceso o a ejecutar código en espacio de
kernel.
• El cambio de contexto es una labor administrativa del sistema operativo que consume tiempo
de CPU. Durante este tiempo, ningún proceso esta en ejecución por lo que se considera
overhead en la administración de procesos.
• Se denomina quantum de tiempo o quanto a un periodo de tiempo que el sistema operativo
le entrega a un proceso para que este utilice la CPU. El término del quantum es indicado por
una interrupción de reloj que es previamente programada, momento en el cual se produce un
cambio de contexto.
• Los cambios de contexto se pueden producir por:
• Termino de quantum de tiempo (interrupción de reloj)
• Syscall yield, que solicita al SO que este proceso sea colocado en la listo .
• Interrupción que provoque colocar al proceso bloqueado (I/O, semáforos, etc)
Introducción a la calendarización :
Planificacion
Componente del sistema operativo que decide cual de los procesos que esta en
estado ready es el que entrara a la CPU. Su decisión es basada según el sistema
que este administrando y es resuelta por los Algoritmos de planificación.
P3
P2 P4
P1 P5
calendarizador
P6
CPU
Tipos de planificación
No Expropiativo: una vez que inicia un proceso, lo deja correr hasta que termina,
realiza I/O o queda a la espera de otro proceso.
Expropiativo: existe quantum de tiempo determinado que se le permite a un
proceso estar en la CPU. Cuando este expira, el proceso debe salir y se debe
ingresar uno nuevo. Este método requiere de una interrupción de reloj al final del
quantum para poder ser implementado.
Sistemas por lotes
- Sin usuarios en terminales
- Algoritmos no expropiativos
- Reducido número de cambios de contexto
Sistemas Interactivos
- Algoritmos expropiativos
- No se puede permitir la monopolización des la CPU por parte un proceso
- Se asume hostilidad entre procesos.
Sistemas Tiempo Real :
- Pueden usar expropiativos y no expropiativos.
- Generalmente todos los programas trabajan colaborativamente
Objetivos de la planificación
Todos los sistemas
Equidad – dar a cada proceso una porción equitativa de tiempo de CPU
Cumplimiento de políticas – cuidar que se ponga en práctica la política establecida
Equilibrio – mantener ocupadas todas las partes del sistema
Sistemas por Lotes
Rendimiento – procesar el máximo de trabajos por hora
Tiempo de retorno – reducir al mínimo el lapso entre inicio y término de un trabajo
Utilización de CPU – mantener ocupada todo el tiempo la CPU
Sistemas Interactivos
Tiempo de respuesta – responder rápido a las solicitudes
Proporcionalidad – satisfacer las expectativas de todos los usuarios
Sistemas en Tiempo Real
Cumplir los plazos – evitar la pérdida de datos
Predicibilidad – evitar la degradación de la calidad en sistemas multimedia
Planificación en sistemas por lotes :
Primero en llegar, primero en ser atendido (FIFO)
Algoritmo mas simple de todos donde los procesos son ingresados a la
CPU en el orden que se recibieron.
CPU
De simple programación y comprensión, tiene la desventaja de ser muy
poco eficiente con trabajos de distinta duración. Si un proceso
CPU
Proceso de larga duración
detendrá a los demás hasta que
termine
Planificacion en sistemas por lotes :
Trabajo más corto primero – (SJF: Shortest Job First)
Algoritmo no expropiativo que al conocer a priori los tiempos de
ejecución de los procesos, los ordena de acuerdo a su duración
4 1 12 8 2 12 CPU
12 12 8 4 2 1 CPU
Este método acorta los tiempos promedio de ejecución
considerablemente, pero solo si se tienen disponibles todos los procesos
simultáneamente. De lo contrario no tiene efecto y su comportamiento se
asemeja a FIFO.
Planificacion en sistemas por lotes :
Tiempo Restante mas corto a continuación
Variación expropiativa de SJF donde al llegar un proceso, su tiempo de
ejecución se compara con el restante del proceso actual. Si el tiempo del
nuevo proceso es menor, se suspende el actual para ingresar el recién
llegado.
12 12 8 CPU
12 12 8 4 CPU
Planificacion en sistemas Interactivos :
Turno Circular – Round Robin
Cada proceso recibe un quantum de tiempo en la CPU, debiendo
abandonarla al término del mismo.
De simple implementación, solo se requiere tener una lista de procesos
sobre la cual ciclar.
quantum
Proc1
Proc2
Tiempo labores
administrativas
Planificacion en sistemas Interactivos :
Turno Circular – Round Robin
Problema: Elegir el tamaño del quantum.
- Si es muy pequeño, entonces se desperdiciará mucho tiempo en labores
administrativas.
- Si es muy grande, el usuario percibirá al sistema como lento
Planificacion en sistemas Interactivos :
Por Prioridades
Cada proceso tiene asignado un valor prioridad. Al momento de decidir
que proceso entra a la CPU, se selecciona aquel con mayor prioridad que
este listo para correr.
La asignación de prioridad puede ser de forma estatica (al inicio del
proceso) o de forma dinámica (durante la ejecución). En linux existe el
comando renice que permite a un administrador modificar la prioridad de
un proceso en el sistema.
Problema: Los procesos de alta prioridad pueden acaparar la CPU
provocando starvation a los procesos de baja prioridad.
P7 P1 P4 P10 CPU
Planificación en sistemas Interactivos :
Por Prioridades
El planificador puede decidir variar la prioridad de un proceso de acuerdo a
su comportamiento:
- Un proceso de I/O que tiene poco proceso y mucho acceso a disco, se le
puede dar más prioridad, pues estará la mayor parte del tiempo
bloqueado.
Variación: Clases de prioridades. Cada clase se ejecuta hasta que no
existen más procesos haciendo round robin al interior de esta. Luego se
pasa a la clase con la siguiente prioridad.
P1
P2
P3
Planificacion en sistemas Interactivos :
Planificacion por porcion equitativa
Metodología que toma en cuenta a quien pertenecen los procesos en ejecución.
Si 2 usuarios tienen la misma prioridad ante el sistema, entonces sin importar la
cantidad de procesos que tenga cada uno, se deberá entregar el 50% de la CPU a
cada usuario.
Ejemplo: Usuario 1: Procesos A B C D
Usuario 2: Proceso Z
Ejecucion: A Z B Z C Z D Z A Z ….
Por otra parte, si existe diferencia de prioridad entre estos, también se puede
modelar. Supóngase que el usuario 1 ahora tiene 3 veces mas prioridad que el
usuario 2:
Ejecucion: A B C Z D A B Z …