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

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

Made with Slides.com