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.
Hardware:
todos los dispositivos de una computadora, todo lo que podemos tocar, entre otros.
¿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
¿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?
"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.
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.
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.
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.
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.
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.
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
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.
¿Futuro?
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:
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
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.
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.