UNET Logo

Universidad Nacional Experimental Del Táchira
Decanato De Docencia
Dpto. Ingeniería en Informática

Introducción a los Sistemas Operativos

Código 0435607T

Objetivo de la materia

Ofrecer una visión de los componentes más importantes de los sistemas operativos

¿Por qué ver la materia? (1/2)

  • Requisito para culminar la carrera.
  • Cultura general en el área de informática.
  • Comprender el funcionamiento del sistema operativo, para realizar aplicaciones integradas al mismo, realizar optimizaciones de software para funcionar mejor, optimización de servicios (gestores de BD, compartición de archivos, mejoras en las redes, etc)

¿Por qué ver la materia? (2/2)

  • Provee los conocimientos básicos para desarrollo de Sistemas Distribuidos, diseño de Sistemas Operativos, seguridad en dispositivos a nivel de S.O., entre otros.
  • Desarrollo de aplicaciones multiplataforma.
  • Permite conocer como resolver problemas de programación relacionados con los dispositivos de I/O. Manejo de multiprocesos, manejo de memoria.

Primer parcial ( 35% )

  • Introducción a los S.O: Estructura, Niveles, Objetivos, tipos.
  • Modelo de procesos, Algoritmos de Planificación y ejercicios
  • Hebras y Semáforos
  • Interbloqueo y ejercicios

Evaluación: 5ta semana del semestre

Segundo parcial ( 35% )

  • Administración de memoria, introducción, Particiones fijas, dinámicas.
  • Paginación, un nivel, dos niveles
  • Algoritmos de Reemplazo de páginas, Registros TLB
  • Segmentación

Evaluación: 10ma semana del semestre

Tercer parcial ( 30% )

  • Sistema de Archivos, estructura de directorios.
  • Gestión de E/S, planificación de disco
  • Protección y Seguridad
  • Práctica final

Evaluación: 15va semana del semestre

Conocimientos requeridos

  • Resolución de operaciones matemáticas básicas.
  • Uso de una computadora, telefóno o cualquier dispositivo digital.
  • Conocer los componentes claves de un computador y las partes que la comprenden. (Organización del computador)
  • Comprender la arquitectura Von Neumann.

¿Von Neumann?

Arquitectura Von Neuman

Fue creada por John Von Neumann en 1949, para solucionar el problema de recableado cada vez que era necesario ejecutar una nueva tarea de una computadora.

Arquitectura Von Neuman

Esta compuesta por:

  • La unidad aritmético-lógica o ALU.
  • La unidad de control.
  • La memoria principal.
  • Un dispositivo de entrada/salida.
  • El bus de datos.
Arquitectura Von Neuman

Basada en la imagen de wikipedia.org

¿Qué es un sistema operativo?

Primero conozcamos estos conceptos:

  • Hardware: todos los dispositivos de una computadora, todo lo que podemos tocar, entre otros.

Hardware

¿Qué es un sistema operativo?

El software lo podemos dividir en:

  • Programas del sistema: aplicaciones integradas al S.O., operaciones a los procesos, configuración del sistema, entre otros.
  • Programas de aplicaciones: ejecutadas por los usuarios para realizar sus tareas diarias: trabajos, entretenimientos, entre otros.

Y por último pero igual de importante:

Usuarios

Usuario
Como ven a los usuarios

¿Qué es un sistema operativo?

"Conjunto de software de administración de recursos de hardware y provee servicios comunes a los programas" Wikipedia.org

¿Qué es un sistema operativo?

Linus Torvald
"Es un programa que se supone que nunca deberías ver, pues nadie usa un sistema operativo, sino los programas de una computadora. Y la única misión de un sistema operativo es ayudar a esos programas a ejecutarse". Linus Torvalds

Algunos sistemas operativos

Entre los sistemas operativos mas conocidos tenemos:

  • Windows, Windows 10 Mobile (Microsoft)
  • Linux (código libre)
  • macOS, iOS, watchOs, tvOS (Apple)
  • BSD (código abierto)
  • Android, Chrome OS, Fuchsia (Google)
  • Solaris (Oracle)
  • z/OS (IBM)

Funciones de los S.O.

  • Gestión de los recursos de hardware.
  • Administración de la memoria.
  • Permitir a las aplicaciones acceder a los dispositivos de E/S.
  • Controlar cuanto tiempo debe usar una aplicación el CPU.
  • Brindar seguridad de los recursos.

El sistema operativo

Como una máquina extendida

Evita que cada programador tenga que conocer el funcionamiento a bajo nivel de cada componente. Facilitando el acceso a recursos: pantalla, teclado, unidades de disco, tarjeta de red, entre otros.

El sistema operativo

Como una máquina extendida

El sistema operativo, por motivos de simplicidad y seguridad oculta gran parte del hardware y presenta al programador mediante una abstracción una vista sencilla para programar en ella. Así nos olvidamos de las interrupciones administración de la memoria a bajo nivel, los registros del CPU, entre otros.

El sistema operativo

Como un administrador de recursos

El S.O. administra todos los componentes de un sistema, se encarga de repartir de forma ordenada y controlada el acceso del uso de procesadores, memoria y dispositivos de E/S entre los diferentes programas que compiten por ellos.

En el caso de los sistemas multi-usuario gestiona el uso de los usuarios a las aplicaciones, permitiendo repartir el hardware a las aplicaciones de distintos usuarios.

Inicio de los de los sistemas operativos

La primera computadora digital fue creada por Charles Babbage, luego en 1842, Ada Lovelace, comprendió su potencial y empezó a crear software para esa máquina (un programa para calcular la secuencia de Bernoulli) conviertiéndose en la primera programadora de la historia.

Charles Babbage Charles Babbage Maquina diferencial

De izquierda a derecha: Charles Babbage, La máquina diferencial y Ada Lovelace.

Primera generación (1945-1955)

Tubos de vacío y tableros de comutación

  • Máquinas calculadoras hechas con tubos al vacío.
  • Un grupo de personas se encarga de diseñar, construir, programar y operar cada máquina.
  • Se programaba mediante el alambrado de los componentes.
Tubos vacio
  • Se usaban para cálculos matemáticos, calculo de tablas de cosenos y seno, entre otros.

2da generación (1955-1965)

Transistores y sistemas por lote

  • Los transistores abarataron los costos, aumentaron la potencia y permitieron comercializar las computadoras.
  • Ahora las personas estaban separadas claramente entre diseñadores, constructores, programadores y operadores de cada máquina.
Sistema por lotes
  • Sistemas monousuario, procesamiento por lotes.

2da generación (1955-1965)

  • Sin sistema operativo, se creaban programas en FORTRAN y luego se pasaba a tarjetas perforadas para ser usadas por los operadores de las computadoras.
  • Existe un programa "monitor" que controla los procesos.

Tercera generación (1965-1980)

Circuitos integrados y multiprogramación

  • Aparecen los primeros S.S.O.O. el OS/360 compuesto de millones de líneas hechas en ensamblador por miles de programadores.
  • Aparece la multi-programación, la segmentación de memoria y las aplicaciones la comparten, aparecen los primeros sistemas en tiempo real y planificador en MULTICS.
IBM 360

Tercera generación (1965-1980)

  • Los programas comparten tiempo de CPU (tiempo compartido), el S.O. asigna espacios de tiempo a cada aplicación dando la ilusión de realizar varias tareas al mismo tiepo.
  • El sistema operativo carga las aplicaciones a ejecutar desde el disco (Spooling), permitiendo utilizar el CPU de manera mas óptima.
Sistema por lotes

Cuarta generación (1980 - 2019)

La Computadora Personal

  • Sistemas mas amigables con el usuario, maneja las operaciones y control de usuarios localmente.
  • Primeras I.U. (GUI en inglés).
  • Aparecen los Sistemas Distribuidos.
PC
  • Aparecen capacidades para conectarse a Internet, entrar a máquinas remotas y realizar tareas en ellas, compartir archivos, entre otros.

Quinta generación
(2005 hasta ahora)

Dispositivos móviles

PC
  • Sistemas enfocados en una interfaz mas sencilla y diseñada para funcionar en pantallas muy pequeñas.
  • Optimizados para funcionar con baterías, por ellos, son eficientes en el ahorro de energía.

Quinta generación (2020 hasta ahora)

  • Diseñadas para funcionar en redes de telefonía celular e inalámbrica.
dispositivos móviles

¿Futuro?

Unificacion de Windows
Ubuntu OS
  • Gran parte de los servicios en la nube.
  • Integración de tecnologías de I.A.
  • Unificación del S.O. en todos los dispositivos.
  • Enfoque hacia el Internet de las cosas.

Fundamentos
de los sistemas operativos

  • Procesos
  • Archivos
  • Llamadas al sistema
  • Interfaz de usuario

Proceso

  • Es un programa en ejecución.
  • Cada proceso tiene:
    • Las instrucciones a ser ejecutadas en el procesador.
    • Un espacio de direcciones de memoria asignado, con inicio y tamaño máximo.
    • Este espacio contiene el programa ejecutable, sus datos y pila, variables, la siguiente instrucción a ejecutar, etc. (El estado de la aplicación)
    • Otra información requerida por el S.O. para la planficación.

Proceso

  • Se ejecutan por tiempos limitados en el CPU, una vez finalizado este tiempo, el S.O. lo duerme, se guarda toda la información en memoria y se queda esperando para seguir en ejecución.
  • Una vez reiniciado, se vuelve a cargar toda su información y se continúa la ejecución desde el momento donde se estaba ejecútando.
  • Un proceso tiene un UID (usuario quien lo ejecutó) y un PID (número del proceso).
  • Un proceso puede crear uno o mas procesos hijos.

Archivos

  • Al igual que con otros dispositivos de entrada y salida, el S.O. presenta un modelo de una abstracto, limpio y bonito de los archivos en los dispositivos.
  • Se realizan operaciones sobre ellos a través de llamadas al sistema: abrir, cerrar, escribir, borrar datos, eliminar el archivo, entre otros.
  • Existe el concepto de directorio para agrupar varios archivos en él, en los S.O. modernos pueden incluirse archivos remotos.

Archivos

  • A cada proceso se le asigna una ruta de inicio llamado directorio de trabajo
  • El S.O. brinda mecanismos de seguridad para evitar acceso no autorizado por parte de programas o usuarios.
  • Se organizan en jerarquías usando directorios, poseen una ruta para identificar la ubicación del archivo en esa jerarquía:

C:\MyDocuments\Important.txt
/home/ltorvalds/source.cpp

Llamadas al sistema

  • Es el mecanismo usado por una aplicación para acceder a un servicio del sistema operativo.
  • Una vez ejecutada, el procesador interrumpe su operación actual (dependiendo del algoritmo), ejecuta la operación de alto privilegio y luego retorna de nuevo al trabajo que estaba realizando.
  • Todos los sistemas operativos ofrecen bibliotecas (generalmente en C o C++) para acceder a estas llamadas desde las aplicaciones, en Windows se usa runtime y en Linux glibc. Brindando portabilidad al desarrollar en el sistema operativo.

Interfaz de usuario

Existen dos métodos para interactuar con el sistema operativo por parte de los usuarios:

  • Intérprete de comandos:

    Permite al usuario escribir comandos para que el S.O. pueda ejecutarlos.
  • Interfaz gráfica de usuario:

    Permite interactuar a través de una interfaz gráfica, mejor conocida como GUI (Graphic User Interface).

Interfaz de usuario

Shell o Intérprete de comandos

  • Provee una interfaz para que el usuario pueda realizar llamadas al sistema.
  • Permite ejecutar comandos del sistema operativo (si te tienen los permisos) para realizar tareas en el sistema operativo: acceder a archivos, ver procesos, estado de memoria, liberar memoria, entre otros.
  • Permite ejecutar aplicaciones.
  • Es el principal medio de acceso remoto a sistemas operativo con el modelo de UNIX.

Ejemplo de shell de Windows

Consola de Windows

Tipos de S.O. por su estructura

  • Sistemas operativos Monolíticos

  • Sistemas operativos en capas o anillos

  • Sistema operativo en de Máquina virtual

  • Sistema operativos Cliente - Servidor

Sistemas monolíticos

  • Es un sistema con núcleo muy grande y complejo
  • Rendimiento mayor a los de micronúcleo.
  • Al realizar un cambio se debe recompilar todo núcleo y reiniciar el S.O.

Sistemas monolíticos

  • Utiliza módulos para la carga de nuevas operaciones, estos pasan a ser parte del todo y no necesita enviar mensajes al resto del núcleo, incrementando el rendimiento respecto a otros diseños.
  • Se escriben como un conjunto de procedimientos, donde cada uno puede llamar a los demás cada vez que lo requiera.

Sistemas por capas o en anillos

  • Desarrollador por primera vez en Holanda en 1968 por E. W. Dijkstra.
  • Cada capa utiliza servicios solo de la capa inferior.
  • Facilita la depuración y verificación del sistema.
  • Existen sobrecargas entre las distintas capas debido a las comunicaciones.

Sistemas con micronúcleo
(cliente -servidor)

  • Reduce la complejidad.
  • Descentraliza los fallos, es decir, un fallo no afecta a todo el sistema.
  • Posee menor rendimiento.
  • Problemas para sincronizar todos los módulos del sistema.

Máquina Virtual

  • Abstrae todo el hardware, permitiendo crear múltiples instancias dando la ilusión de que cada entorno de ejecución tiene su propia computadora privada.
  • Permite ejecutar aplicaciones que requieren mas hardware del disponible.
  • Permite la ejecución de programas que requieren múltiples sistemas operativos.
  • Incrementa la seguridad al separar las instancias.

Tipos de S.O. por servicios

Es la clasificación mas conocida desde el punto de vista del usuario final, para hacerla se toman en cuenta los siguientes criterios:

  • Por el número de usuarios

  • Por el número de tareas

  • Por el número de procesadores

  • Por la forma de ofrecer sus servicios

Por número de usuarios

  • Monousuario:

    Soportan solo un usuario a la vez, sin importar la cantidad de procesadores que posea el equipo. Las computadoras personales se suelen clasificar en esta categoría.
  • Multiusuario:

    Dan servicios a muchos usuarios al mismo tiempo, bien sea a través de terminales o conexiones de red.

Por número de tareas

  • Monotarea:

    Soportan solo un usuario y una única tarea a la vez. Puede darse el caso de varios usuarios pero cada uno estaría ejecutando solo una tarea.
  • Multitarea:

    Permita ejecutar varios procesos al mismo tiempo, por ejemplo, editar un documento de texto mientras se escucha música desde el reproductor multimedia.

Por núm. de procesadores

  • Uniproceso:

    Soportan solo un procesador, sin importar la cantidad de procesadores existentes.
  • Multiproceso:

    Soportan varios procesadores, y puede trabajar de dos maneras: simétrica donde se equilibra la carga entre los diversos procesadores; la otra es asimétrica donde un procesador es el maestro y administra a los demás.

Por la forma de ofrecer sus servicios

  • S.O. de red

    Se acceden a través de conexiones remotas, posee sus archivos compartido por la red, se ejecutan comandos remotos, etc.
  • S.O. distribuidos

    Crea una máquina virtual a partir de varias computadoras, donde cada recurso es accedido sin importar su ubicación física y de forma transparente para el usuario.

¿Preguntas?