Visión Abstracta

El Sistema Operativo (SO) es como un Gobierno:

  • Hardware (CPU, Memoria, etc.)
  • Software (propio S.O.)
  • Usuarios (Software de Aplicación).

Visión de Usuario

Muy distinta a la del Sistema Operativo.

  • El usuario necesita rapidez de interacción -> Tiempo de Respuesta.
  • Se necesita reducir la energía consumida (batería).

Visión del Sistema

Podemos ver un S.O. como un Gestor de Recursos.

  • Recurso (CPU, Memoria, Disco, E/S).
  • Controla la asignación de recursos y ejecución de programas de usuario.

Objetivo del SO

  • Ejecutar programas y facilitar las tareas del usuario.
  • Aplicación o programa que siempre se está ejecutando en el computador.
  • Este programa, se llama kernel o núcleo de sistema.
  • Además, existen los programas del sistema y las aplicaciones de usuario.

Inicio del SO

  • Un pequeño programa, BOOTSTRAP.

Secuencia de Arranque

  • Se inicia el Bootstrap (ROM/EPROM)
  • Busca el Kernel y lo carga en Memoria
  • Inicia el SO normalmente.

Eventos del Sistema

  • Puede haber una interrupción (HW)
  • Una llamada a sistema o System Call (SW)

Organización de la Memoria

Registros – Cache – Memoria principal – Disco magnético – Disco óptico – Cinta magnética

Arquitectura 1

  • La mayoría de arquitecturas modernas está basada en Von Neumann.
  • Sistemas de Un Procesador (Monoprocesadores)

Arquitectura 2

  • Sistemas Multiprocesador: sistemas paralelos.
  • Incrementan el rendimiento – Economía de escalabilidad.
  • Aumento de fiabilidad – Adoptadas por Windows, MacOS, Linux, Unix.
  • Simétricos (Arquitecturas UMA) – SMP
  • Asimétricos (Arquitecturas NUMA) – AMP

Arquitectura: Multicore

  • Los sistemas Multicore: son un único procesador con múltiples núcleos.
  • ◦ Su funcionamiento es similar a SMP.

Arquitectura 3

  • Sistemas Clusterizados (CLUSTERS)
  • • Ver distintos tipos de Clusters: TOP500: Lista de Supercomputadores y Clusters más rápidos

Multiprogramación

  • Aspecto importante en los SO -> multiprogramación
  • Incrementa la utilización de la CPU organizando los trabajos.
  • La idea es tener una serie de trabajos en memoria simultáneamente.
  • La memoria principal pequeña para ubicar todos los programas.
  • Multiprogramación: Tiempo compartido o Multitarea.
  • El tiempo de respuesta es muy importante.
  • Un proceso es un programa almacenado en memoria para luego ejecutarse.
  • Estos procesos deben ser gestionados: job schedulingSwapping

Operaciones en un SO

  • Un SO siempre está esperando una interrupción, trap o system call.
  • Además, un S.O. administra:
  • Gestión de Procesos (creación, eliminación, sincronización).
  • Gestión de Memoria (ubicando, eliminando procesos en memoria).
  • Gestión de Almacenamiento Masivo (Sistema de Ficheros).
  • Caching – Sistema de I/O (Entrada Salida) – Protección y Seguridad

Sistemas Distribuidos

  • Son aquellos sistemas heterogéneos que están ubicados en puntos distintos de la red.

Sistemas de Propósito Específico

  • Sistemas en Tiempo Real – Sistemas Embebidos – Normalmente están basados en UNIX.

Sistemas Operativos Open Source

  • Ofrecen ventajas de desarrollo e investigación – Diseño de productos que pueden ser vendidos. y BSD

Interfaz de SO

  • CLI – GUI

Llamadas a Sistema (System Calls)

  • Proveen un interface a los servicios del S.O.
  • Generalmente, estas rutinas están en C/C++
  • Estas rutinas están programadas vía un API (Application Program Interface)
  • API: funciones con argumentos para programar.
  • Windows: API WIN32
  • Linux/UNIX/OSC: API POSIX

Manejo de la Interrupción

  • Java está pensado para ejecutarse en todas las plataformas. Con lo que no existen llamadas a Sistemas Directamente. Si no que, existen una API que llama a las funciones en C/C++
  • Esto es posible mediante el JNI (Java Native Interface)
  • JNI -> reemplaza las funciones actuales de C/C++

Diseño e Implementación del Sistema Operativo

  • Objeto de diseño: Usuario o sistema Flexible, eficiente, fiable, sin errores.
  • Los requerimientos son distintos para un sistema VxWorks (tiempo real), que para un mainframe IBM (VMS).
  • Generalmente los S.O. se implementan en C/C++ (Windows, Linux, MaOS) o en lenguaje ensamblador.
  • La eficiencia mejora diseñando mejores algoritmos para:
  • Gestión CPU – Gestión Memoria – Gestión E/S

Estructura Simple

  • Los niveles de funcionalidad no están separados.
  • Las aplicaciones de usuario pueden acceder a rutinas I/O directamente.
  • Muy vulnerable a virus o programas mal diseñados. Ejemplo: MS-DOS

Estructura de UNIX

  • UNIX inicialmente también estaba limitado
  • Separaba la parte del kernel y los programas de usuario.
  • Mucho más protegido y seguro.

Estructura en Capas

  • Esta estructura divide a la funcionalidad del S.O. en capas.
  • La más baja (0) es el HW. La más alta (N) la interfaz de usuario: Facilita el diseño. – Una capa invoca los servicios de otra capa si los necesita.
  • Es menos eficiente por el gasto de tiempo de comunicación en capas.

Microkernels

  • Fue el S.O. llamado Mach quien popularizó el microkernel.
  • Lo que hace el microkernel es proveer la funcionalidad básica en lo que sería un kernel mínimo.
  • OSX con Darwin utiliza el microkernel basado en Mach.
  • Windows NT/Vista/7/8 también lo utiliza aunque también mezcla otras arquitecturas (monolíticas).
  • Actualmente los Sistemas Operativos Modernos utilizan arquitecturas híbridas.

Módulos

  • Esta arquitectura se basa en técnicas de Programación Orientada a Objetos. – Diseño modular – Es utilizado por Unix, Solaris, Linux y OSX.
  • Existe un kernel y unos módulos que va cargando conforme los va utilizando – La comunicación entre módulos es mucho más ágil que en el enfoque de Capas.

Máquinas Virtuales

  • Es un paradigma que se basa en que una máquina base (Host) alberga sistemas operativos cliente (Guest).
  • Un Host puede albergar varias instancias: consume RAM y recursos.
  • Las Máquinas Virtuales no se afectan unas a otras en términos de seguridad de memoria, etc.
  • Se utilizan para entornos de prueba y desarrollo, pero también en producción. – Ejemplos: VMWare, VirtualBox.
  • Existen otras alternativas como la Simulación o Paravirtualización (Citrix)

Java

  • Es un lenguaje de programación con un JVM (Java Virtual Machine)
  • Es un concepto muy parecido a las MVs.
  • Java utiliza el JDK (actualmente 8) para el desarrollo.