1. Funciones Principales de los Sistemas Operativos
- Administración de procesos
- Administración de memoria primaria
- Gestión de procesos
2. Definición y Ejemplos de Programa, Proceso, Proceso Padre e Hijo
Programa
Un programa es una secuencia de instrucciones que una computadora puede interpretar y ejecutar.
Proceso
Un proceso es un conjunto de actividades o eventos que se realiza o suceden con un fin determinado.
Proceso Padre
Un proceso padre mantiene un control sobre toda su descendencia, de forma que puede matar a cualquier proceso perteneciente a esta.
Proceso Hijo
Un proceso hijo hereda los recursos del padre, a menos que estos fuesen adquiridos por el padre sin derecho a herencia.
Proceso e Hilo
Un proceso tiene su propia zona de memoria y se ejecuta simultáneamente a otros procesos. Los hilos dentro de un proceso comparten todas las mismas memorias.
3. Tipos de Procesos
4. ¿Qué es un Script y Para Qué se Utiliza?
Un script es un conjunto de instrucciones que permiten la automatización de tareas, creando pequeñas utilidades. Es utilizado para la administración de sistemas UNIX.
5. Procesos Padre e Hijo: fork, execv y system
- fork(): Crea un proceso que genera una copia de sí mismo. Esta copia actúa como un proceso hijo del padre. Los procesos resultantes son idénticos, pero con PIDs diferentes.
- execv(): Proporciona un vector de punteros a cadenas de caracteres terminadas en 0. El primer argumento, por convención, debe apuntar al nombre del fichero que lo está ejecutando.
- system(): Es una función que llama a comandos y/o funciones antiguas.
6. Recursos del SO para el Control de Procesos
- Tabla de procesos
- Tabla de memoria
- Tabla de archivos
- Tabla de E/S
7. Bloque de Control de Procesos (PCB)
El PCB es un registro especial del SO que agrupa toda la información que necesita conocer respecto a un proceso particular:
- Identificador del proceso (PID)
- Contador de programa
- Permisos asignados
- Estado del proceso
- Valores de registro de CPU
- Datos de propietario
- La pila
- La memoria
- Número de identificador del proceso padre (PPID)
8. Proceso de Inicio del Sistema
El proceso de inicio consiste en un programa constantemente cargado en la ROM. Una parte de la memoria se destina al arranque dentro de la ROM («iniciador ROM»), este independiente del SO.
9. Algoritmo de Planificación: Menor Tiempo de CPU
Supongamos que un algoritmo favorece a los procesos que han consumido la menor cantidad de tiempo de procesador en el pasado reciente.
a) Procesos Favorecidos
Este algoritmo favorecerá a los procesos limitados por E/S. Si los procesos consumen poca cantidad de tiempo de CPU, entonces son procesos limitados por E/S.
b) Desventaja del Algoritmo
La desventaja obvia de este algoritmo es que posterga indefinidamente los procesos limitados por CPU, manteniéndolos en espera constantemente.
10. Algoritmos de Planificación
- FCFS (First-Come, First-Served): No favorece a ningún proceso en particular.
- Round Robin (RR): Minimiza el tiempo de espera (TE) y el tiempo de retorno (TR) de procesos cortos, dependiendo de la duración del cuanto.
- Colas Multiniveles con Realimentación: Si un proceso gasta demasiado tiempo de CPU, se lo pasa a una cola con menor prioridad. Por lo tanto, los procesos cortos siempre quedan en las colas de alta prioridad.
11. Evaluación de la Eficiencia de Algoritmos de Planificación
- Utilización del CPU
- Tiempo de espera promedio mínimo
- Tiempo de retorno mínimo
12. Funcionamiento, Ventajas y Desventajas de Algoritmos de Planificación
FCFS
- Ventajas: Sencillo de implementar.
- Desventajas: No se garantiza el tiempo de espera promedio mínimo. Mientras unos procesos esperan archivos, otros están ociosos.
SJF (Shortest Job First)
- Ventajas: El mejor rendimiento. Se ejecutan los procesos que están en la cola de listos cuya ráfaga es la más corta.
- Desventajas: No sabemos con exactitud la duración de la ráfaga del CPU por adelantado.
No Expropiativa
- Ventajas: Los procesos con mayor prioridad se realizan primero.
- Desventajas: Si existen varios procesos, se los forma por orden de llegada.
Expropiativa
Si existen procesos con prioridad muy baja y constantemente en el SO se crean nuevos procesos con prioridades más altas, el primero puede quedar esperando indefinidamente. Para que no ocurra esto, se aplica la técnica de envejecimiento, donde cada cierto tiempo la prioridad del proceso va incrementando.
Round Robin
Normalmente, este algoritmo se usa en sistemas de tiempo compartido para que cada usuario tenga la impresión de que su proceso ya se está ejecutando. En este caso, es aconsejable que el cuanto de tiempo sea lo suficientemente pequeño.
Planificación con Colas Múltiples
Permite a un proceso pasar de una cola a otra. La idea es esperar procesos con diferentes características en cuanto a sus ráfagas de CPU. Si un proceso gasta demasiado tiempo de CPU, se le pasará a una cola con menor prioridad.
13. Problemas de Concurrencia
- Exclusión Mutua: A ningún otro proceso le permite el acceso a un recurso compartido.
- Interbloqueo (Deadlock): Ningún proceso se va a ejecutar, esperando por el otro recurso.
- Inanición (Starvation): Si hay un proceso de baja prioridad, puede quedarse en espera indefinidamente.
14. Funciones para Identificar y Crear Hilos
- Identificar un hilo:
thread
- Crear un hilo:
pthread_create
Para lograr que el proceso principal espere hasta que el hilo termine de ejecutarse, se utilizan funciones de sincronización.