SISTEMAS OPERATIVOS
Nombre: Fabián Giménez
Define lo siguiente:
- Objetivo de la multiprogramación:
• Tener algún proceso en ejecución en todo momento (maximizar el
aprovechamiento de la CPU).
- Objetivo del tiempo compartido:
• Conmutar la CPU entre procesos con tal frecuencia que los usuarios
puedan interactuar con cada programa durante su ejecución.
- Cambio de contexto (context switch):
a) Consiste en desalojar a un proceso de la CPU y reanudar
otro.
b) Se guarda el estado del proceso saliente en su PCB y se
recuperan los registros del proceso que entra.
c) El cambio de contexto (tiempo de conmutación) es tiempo
perdido => debe de ser lo más rápido posible. El tiempo de
conmutación varía entre 1 y 1000 μs.
d) El hardware en ocasiones facilita el cambio de contexto,
haciendo que un cambio simplemente implique cambiar el
puntero al conjunto de registros actual.
- Matar un proceso:
1. En ocasiones nos sucederá que queramos finalizar un
proceso que está corriendo, las razones para hacer esto
pueden ser múltiples, que el proceso esté consumiendo
demasiado tiempo del procesador, que esté bloqueado, que
no genere información o que genere demasiada, ...
2. Para matar un proceso utilizaremos la orden kill, que resulta
muy útil en el caso de procesos que no tienen asociada
ninguna terminal de control. Para matar un proceso
necesitaremos su PID de tal manera que escribiremos:
- Independientes: no puede afectar, ni ser afectado por los
demás procesos que se ejecutan en el sistema compiten por el
uso de recursos escasos.
- Cooperativos: puede afectar o ser afectado por los demás
procesos que se ejecutan en el sistema, colaboran entre sí
buscando un objetivo común
- Procesos e hilos (threads):
1. Los hilos son un concepto relativamente nuevo de los SO. En
este contexto, un proceso recibe el nombre de proceso pesado,
mientras que un hilo recibe el nombre de proceso ligero. El
término hilo se refiere sintáctica y semánticamente a hilos de
ejecución.
2. El término multihilo hace referencia a la capacidad de un SO
para mantener varios hilos de ejecución dentro del mismo
proceso.
- Procesos monohilo:
En un SO con procesos monohilo (un solo hilo de
ejecución por proceso), en el que no existe el concepto
de hilo, la representación de un proceso incluye su PCB,
un espacio de direcciones del proceso, una pila de
proceso y una pila núcleo
- Procesos multihilo:
En un SO con procesos multihilo, sólo hay un PCB y un
espacio de direcciones asociados al proceso, sin embargo,
ahora hay pilas separadas para cada hilo y bloques de
control para cada hilo.
CITA
- Los objetivos definidos en la planificación de
procesos.
1. Objetivo de la multiprogramación:
• Tener algún proceso en ejecución en todo momento
(maximizar el
aprovechamiento de la CPU).
„ Objetivo del tiempo compartido:
• Conmutar la CPU entre procesos con tal frecuencia que los
usuarios
puedan interactuar con cada programa durante su ejecución.
- Procesos concurrentes.
1. Independientes.
2. Cooperativos.
- Procesos cooperativos.
1. Compartir información
2. Aceleracion de los calculos
3. Modularidad
4. Comodidad
- Recursos compartidos entre los hilos.
1. Codigo
2. Variables globales
3. Ficheros y dispositivos abiertos
4.
- Recursos no compartidos entre los hilos.
1. Contador del programa
2. Registros del cpu
3. Pila para las variables locales de los procedimientos a la que
se invoca después de crear un hilo
4. Estado
- Cita de describe
1) Niveles de planificación
1. En los sistemas por lotes, existe un planificador de largo plazo (PLP) o de
alto nivel, que suministra procesos a la cola de preparados. „ El
planificador de corto plazo o de bajo nivel es el que asigna y desasigna la
CPU.
2. El PLP trata de conseguir una mezcla adecuada de trabajos intensivos en
CPU y en E/S. „ Planificador de medio plazo: envía al disco procesos de
poco interés, para abrir memoria principal para nuevos procesos =>
Intercambio (swapping).
2) Creación de procesos
1. Mediante una llamada al sistema de “crear proceso”,
durante el curso de su ejecución.
2. El proceso creador se denomina proceso padre, y el
nuevo
proceso, hijo.
3. Variantes en las relaciones padre/hijo:
• Compartición de recursos: ¿todos, algunos, ninguno?.
• Espacio de memoria.
• Sincronización del padre: ¿espera a que el hijo termine?.
• Terminación
3) Creación de procesos en Unix.
1. Función fork():
• Cuando se la llama crea un proceso hijo que es una copia
casi
exacta del proceso padre (duplicado del padre). Ambos
procesos continúan ejecutándose desde el punto en el que
se hizo
la llamada a fork().
• En UNIX los procesos se identifican mediante un
“identificador
de proceso” (PID) que es un entero único. Ambos procesos
continúan su ejecución con la instrucción que sigue al fork()
con
una diferencia:
• El código que el hijo recibe del fork es cero.
• El que recibe del padre es el propio pid.
4.3 Operaciones con procesos: Creación de procesos.
E.U. de Informática. Sistemas Operativos 34
2. Funciones exec:
• Tras crear un nuevo proceso, después de llamar a fork,
Linux llama a
una función de la familia exec. Éstas funciones reemplazan el
programa ejecutándose en el proceso por otro programa.
Cuando un programa llama a una función exec, su ejecución
cesa de
inmediato y comienza a ejecutar el nuevo programa desde el
principio, suponiendo que no ocurriera ningún error durante
la
llamada.
• Generalmente uno de los dos procesos (padre o hijo) utiliza
la
llamada al sistema execve después del fork para reemplazar
su espacio de memoria con un programa nuevo.
• Nota: Si el padre no tiene nada que hacer mientras el hijo se
ejecuta,
puede emitir una llamada wait (esperar) para sacarse a sí
mismo
de la cola de procesos listos hasta que el hijo termine
4) Razones para crear un entorno que permita la
cooperación entre procesos
• Compartir información: acceso concurrente a elementos
de
información comunes.
• Aceleración de los cálculos: para ejecutar una tarea con
mayor rapidez, la dividimos en subtareas, cada una de las
cuales se ejecuta en paralelo con las otras.
• Modularidad: posibilidad de dividir las funciones del
sistema
en procesos individuales.
• Comodidad: para evitar que a un usuario individual se le
acumule gran número de tareas.
5) Estructura de los hilos.
• Un hilo (proceso ligero) es una unidad básica de
utilización de la CPU, y consiste en un contador de
programa, un juego de registros y un espacio de pila.
• Los hilos dentro de una misma aplicación comparten:
• La sección de código.
• La sección de datos.
• Los recursos del SO (archivos abiertos y señales).
„ Un proceso tradicional o pesado es igual a una tarea con un
solo hilo.
• Los hilos permiten la ejecución concurrente de varias
secuencias de
instrucciones asociadas a diferentes funciones dentro de un
mismo
proceso, compartiendo un mismo espacio de direcciones y las
mismas estructuras de datos del núcleo
6) Estados de un hilo.
• Creación: En general, cuando se crea un nuevo proceso se
crea también un
hilo para ese proceso. Posteriormente, ese hilo puede crear
nuevos hilos
dándoles un puntero de instrucción y algunos argumentos. Ese
hilo se colocará
en la cola de preparados.
• Bloqueo: Cuando un hilo debe esperar por un suceso, se le
bloquea guardando
sus registros. Así el procesador pasará a ejecutar otro hilo
preparado.
• Desbloqueo: Cuando se produce el suceso por el que un hilo
se bloqueó pasa
a la cola de listos.
• Terminación: Cuando un hilo finaliza, se liberan su contexto y
sus pilas.
7) Ventajas de los hilos sobre los procesos.
• Se tarda mucho menos tiempo en crear un nuevo hilo en
un proceso existente que en crear un nuevo proceso.
• Se tarda mucho menos tiempo en terminar un hilo que un
proceso.
• Se tarda mucho menos tiempo en conmutar entre hilos
de un mismo proceso que entre procesos.
• Los hilos hacen más rápida la comunicación entre
procesos, ya que al compartir memoria y recursos, se
pueden comunicar entre sí sin invocar el núcleo del SO
8) Ejemplos de uso de los hilos.
• Trabajo interactivo y en segundo plano: En un
programa
de hoja de cálculo, un hilo podría estar leyendo la
entrada del
usuario y otro podría estar ejecutando las órdenes y
actualizando la información.
• Procesamiento asíncrono: Se podría implementar,
con el
fin de protegerse de cortes de energía, un hilo que se
encargará de salvaguardar el buffer de un procesador
de
textos una vez por minuto.
• Estructuración modular de los programas: Los
programas que realizan una variedad de actividades se
pueden diseñar e implementar mediante hilos