Sistemas Operativos:
Unidad 2 - Componentes de los S.O.
Gustavo Andrés Uribe Gómez
guribe@unicomfacauca.edu.co
+572 8220517 Ext. 130
Componentes de los Sistemas Operativos
Componentes Principales
- Gestor de procesos e hilos
- Administrador de memoria
- Sistema de archivos
- Sistema de entrada/salida
- Sistema de interbloqueos
Gestor de Procesos e Hilos
Multiprogramación
Fuente: Tanenbaum, 2009
Multiprogramación
Fuente: Tanenbaum, 2009
Uso de la CPU= 1-p
n
Multiprogramación
Ejercicios
- Calcular el uso del procesador para una máquina con 512MB. El sistema operativo ocupa 128MB y cada programa de usuario también. El promedio de espera de E/S es del 80%. Ignorar la carga del S.O.
- Calcular el uso del procesador para el caso anterior pero con máquinas de 1024MB y 1536MB.
Creación de Procesos
- El arranque del sistema (segundo plano - demonios)
- La ejecución un proceso desde un proceso
- Petición de usuario para crear un proceso
- Inicio de un trabajo por lotes (mainframes)
Creación de Procesos
- En Unix todo se hace mediante un fork
- En Win32 mediante la llamada a CreateProcess
Terminación de Procesos
- Salida normal (voluntaria).
- Salida por error (voluntaria).
- Error fatal (involuntaria).
- Eliminado por otro proceso (involuntaria).
Estados de los Procesos
Fuente: Tanenbaum, 2009
Estados de los Procesos
Fuente: Tanenbaum, 2009
Tablas de Procesos
Fuente: Tanenbaum, 2009
Manejo de Interrupciones
Fuente: Tanenbaum, 2009
Hilos
- Son "procesos" dentro de procesos
- Son "procesos" que comparten los espacios de direcciones con otros
- Permite compartir los datos entre procesos
- Son más rápidos de gestionar que los procesos
- Útiles para procesadores de varios núcleos
Hilos
Fuente: Tanenbaum, 2009
Hilos
Fuente: Tanenbaum, 2009
Hilos
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define NUMERO_DE_HILOS 10
void *imprimir_hola_mundo(void *tid)
{
/* Esta funcion imprime el identificador del hilo y después termina. */
printf("Hola mundo. Saludos del hilo %d0 \n", tid);
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
/* El programa principal crea 10 hilos y después termina. */
pthread_t hilos[NUMERO_DE_HILOS];
int estado, i;
for(i=0; i < NUMERO_DE_HILOS; i++) {
printf("Aqui main. Creando hilo %d0 \n", i);
estado = pthread_create(&hilos[i], NULL, imprimir_hola_mundo, (void *)i);
if (estado != 0) {
printf("Ups. pthread_create devolvió el codigo de error %d0", estado);
exit(-1);
}
}
exit(NULL);
}
Fuente: Tanenbaum, 2009
Administrado de Memoria
Función
- El trabajo del sistema operativo es abstraer esta jerarquía en un modelo útil y después administrarla.
Tipos de Abstracción
- Sin abstracción
- Espacios de direcciones
- Memoria virtual
- Segmentación
Sin Abstracción
- MOV REGISTRO1, 1000
- 1000 correspondía a la dirección física
- Fácilmente se presentan conflictos de acceso a memoria entre los programas y entre el sistema operativo
Sin Abstracción
Fuente: Tanenbaum, 2009
Sin Abstracción
Fuente: Tanenbaum, 2009
Espacios de Direcciones
- Un espacio de direcciones (address space) es el conjunto de direcciones que puede utilizar un proceso para direccionar la memoria.
- Cada proceso tiene su propio espacio de direcciones, independiente de los que pertenecen a otros procesos
- Se requiere que cada proceso tenga un rango propio 0-XXX
- Registro base y límite (Registros de la CPU - obsoleto)
- Intercambio (swap)
Espacios de Direcciones
- Registro base y límite
Espacios de Direcciones
- Intercambio
Espacios de Direcciones
- Flexibilidad de los espacios de direcciones
Espacios de Direcciones
- Administración de memoria libre
- por mapa de bits (lenta)
- por listas enlazadas
Memoria Virtual
- Permite la ejecución de programas que requieren mayor memoria que la física disponible
- Una solución que se adoptó en la década de 1960 fue dividir los programas en pequeñas partes, conocidas como sobrepuestos (overlays).
- Actualmente los espacios de memoria de los procesos se dividen en páginas
- No todas las páginas deben estar en memoría física
Memoria Virtual
Memoria Virtual
Pagina no asignada, genera un fallo de página
Memoria Virtual
- Algoritmos de reemplazo de las páginas:
- No usadas recientemente
- FIFO
- Segunda oportunidad
- Reloj
- Menos usadas recientemente LRU
- WSClock
Memoria Virtual
Memoria Virtual
Segmentación
- Permite crear espacios en memoria independientes para expandirse por separado
- Se diferencian de las páginas en que:
- No tiene un tamaño fijo
- Asignados por el programador
- Permite la compartición de datos entre procesos
Segmentación
Sistemas Operativos - Unidad 2 - Componentes de los S.O.
By Gustavo Andrés Uribe Gómez
Sistemas Operativos - Unidad 2 - Componentes de los S.O.
- 832