Este documento presenta una introducción a los sistemas operativos. Explica los objetivos de la unidad, define qué es un sistema operativo, describe sus componentes principales como el núcleo y la gestión de memoria, y clasifica los sistemas operativos según su estructura y los servicios que ofrecen. También resume brevemente la evolución histórica de los sistemas operativos.
2. Objetivos de la Unidad 1
El alumno conocerá a detalle los diferentes
componentes de un sistema operativo, sus
funciones y la forma en que impactan a los
sistemas computacionales.
Además, el alumno aprenderá cómo se
utilizan los distintos conceptos de los
sistemas operativos en algunas versiones
existentes de ellos (Windows, Linux, UNIX,
etc.)
4. Los años sesenta
Años sesenta:
El software que controla al hardware
(¿¿¿¿firmware????)
Deitel
5. Definición a adoptar
El programa fundamental de todos los
programas de sistemas es el sistema
operativo, que controla todos los recursos
de la computadora y proporciona la base
sobre la cual pueden escribirse los
programas de aplicación
A. Tanenbaum
6. Qué es un Sistema Operativo
Un Sistema Operativo es un programa
que actúa como intermediario entre el
usuario y el hardware de una computadora
y su propósito es proporcionar un entorno
en el cual el usuario pueda ejecutar
programas.
7. Qué es un Sistema Operativo
Parte importante de todo sistema
computacional (hardware, s.o., aplicaciones,
usuario)
Controla y coordina el uso del hardware entre
los diversos programas de aplicación de los
distintos usuarios
Dos formas posibles de verlo:
Asignador de recursos
Programa de control
Objetivos: Comodidad del Usuario y
Eficiencia
8. Los sistemas operativos
Colección de programas que se encarga de
administrar recursos
instrucción proceso recursos asignados recursos necesarios
Tiene diversas funciones:
Llevar un estátus de los programas o procesos que
estan utilizando
Definir políticas de asignación/reclamación de
recursos
Asignar el recurso
Reclamar el recursos
9. Objetivos de los
Sistemas Operativos
Hacer posible el uso eficiente de los
recursos del sistema:
Actúa coordinando las diferentes
velocidades de funcionamiento de los
dispositivos. P. E. Mas velocidad de
procesadores, mas lentitud de periféricos.
Simplificar la operación de trabajo con el
hardware:
Generan una máquina virtual: ordenador
simplificado en el que el S. O. Carga con el
trabajo de acercamiento al hardware.
10. Puede considerarse que un sistema
operativo lleva a cabo 3 funciones
principales:
Comodidad: Un sistema operativo hace que
una computadora sea más fácil de utilizar.
Eficiencia: Un sistema operativo permite que
los recursos de un sistema informático se
aprovechen de una manera más eficiente.
Capacidad de evolución: Un sistema operativo
deberá construirse de modo que permita el
desarrollo efectivo, la verificación y la
introducción de nuevas funciones en el
sistema y a la vez, no interferir en los servicios
que brinda.
11. Las principales características de
los S. O. son :
Es el único programa del que no se
puede prescindir.
Definen la “Interfaz del Usuario”.
Comparten el hardware entre usuarios.
Permitir a los usuarios compartir los
datos entre ellos.
Planificar recursos entre usuarios.
Facilitar la entrada / salida.
Recuperarse de los errores.
12. Componentes de un sistema
operativo
Manejo de
comunicaciones
Manejo de procesos
Sistema
Operativo
Dispositivos
de entrada/salida
Manejo archivos Manejo Manejo
y directorios memoria memoria
externa interna
13. Estructura de un
Sistema Operativo
Núcleo
Gestión de la memoria
Control de entrada/salida
Administración de archivos
Asignación de recursos y planificación
Protección
Interfaz de usuario
15. Núcleo o Kernel
Descansa directamente sobre el
hardware y proporciona una serie de
servicios a las capas superiores del
sistema.
Las tareas principales son:
Manejo de interrupciones
Asignación de trabajo al procesador
Proporcionar una vía de comunicación
entre los diferentes programas
16. Núcleo o Kernel
Asignación de trabajo al procesador y
comunicación entre programas
El núcleo transfiere el control al programa que el
planificador ha determinado para que sea el
próximo en ejecutarse.
La comunicación entre programas se logra
manteniendo una cola de mensajes en espera para
cada uno de los programas activos.
El núcleo recibe los mensajes y los va almacenando
en la cola apropiada al destino en cuestión, para
distribuirlos cuando el programa destino se active.
17. Gestión de la memoria
La memoria principal de la mayoría de las
computadoras es mucho mas pequeña de lo que
sería necesario para manejar todos los programas
y datos.
El módulo de gestión de memoria es el encargado
de asignar ciertas porciones de la memoria
principal a los diferentes programas, mientras el
resto de programas y datos se mantienen en los
dispositivos de almacenamiento masivo.
La forma mas común de gestión de memoria es
crear una memoria virtual utilizando los
dispositivos de almacenamiento masivo.
18. Control de la entrada/salida
Los problemas derivados de las diferentes
velocidades de funcionamiento de los
dispositivos son tratados por este módulo
presentándolo como una cuestión
independiente del dispositivo.
En las salidas es frecuente la utilización de
spoolers, los datos se almacenan
temporalmente en una cola situada en un
dispositivo de almacenamiento masivo hasta
que el periférico requerido quede libre.
19. Administrador de Archivos
Los datos y programas de un dispositivo de
almacenamiento masivo se mantienen en
ficheros.
Supervisa la creación, actualización y
eliminación de estos ficheros.
Mantiene un directorio con todos los ficheros
que existen en el sistema en cada momento.
Cada fichero está dotado de un conjunto de
privilegios de acceso, que indican la
extensión con la que pueden compartir la
información contenida en el fichero. El S. O.
Vigila que estos privilegios no sean violados.
21. Asignación de recursos y
planificación
La mayor parte del tiempo en que una computadora
está funcionando, la demanda de recursos es
mayor que los realmente existentes. Este problema
se resuelve aplicando una política de asignación de
recursos.
El mecanismo sería sencillo si se pudiese utilizar
una política del tipo: “atender primero al que antes
lo solicite”, sin embargo esto puede llevar a
situaciones de deadlock (sistema colgado o caido)
cuando dos programas solicitan insistentemente
recursos asignados a otro.
El planificador cuenta con una política que varia de
un S. O. a otro. Una política muy común consiste en
el time slicing (asignación de intervalos cortos de
tiempo a los programas)
24. CLASIFICACION DE LOS
SISTEMAS OPERATIVOS
Sistemas operativos por su estructura
(visión interna).
Sistemas operativos por los servicios
que ofrecen.
Sistemas operativos por la forma en
que ofrecen sus servicios (visión
externa).
25. Sistemas operativos
por su estructura
Estructura monolítica
Estructura jerárquica o por capas
Máquina Virtual
Cliente-servidor ( Microkernel)
26. Estructura monolítica
Es la estructura de los primeros sistemas
operativos constituidos fundamentalmente por
un solo programa compuesto de un conjunto
de rutinas entrelazadas de tal forma que cada
una puede llamar a cualquier otra.
27. Estructura jerárquica o por capas
A medida que fueron creciendo las
necesidades de los usuarios y se
perfeccionaron los sistemas, se
hizo necesaria una mayor
organización del software, del
sistema operativo, donde una parte
del sistema contenía subpartes y
esto organizado en forma de
niveles.
Se dividió el sistema operativo en
pequeñas partes, de tal forma que
cada una de ellas estuviera
perfectamente definida y con un
claro interface con el resto de
elementos.
29. Máquina Virtual
Se trata de un tipo de sistemas operativos
que presentan una interface a cada proceso,
mostrando una máquina que parece idéntica
a la máquina real subyacente (como
VMWare).
Estos sistemas operativos separan dos
conceptos que suelen estar unidos en el resto
de sistemas: la multiprogramación y la
máquina extendida.
El objetivo de los sistemas operativos de
máquina virtual es el de integrar distintos
sistemas operativos dando la sensación de
ser varias máquinas diferentes.
31. Cliente-servidor ( Microkernel)
Este sistema sirve para toda clase de
aplicaciones por tanto, es de propósito
general y cumple con las mismas actividades
que los sistemas operativos convencionales.
Se separa el sistema operativo en módulos:
Sistema de Archivos, Memoria, Procesos,
etc. El kernel sólo se dedica a pasar
mensajes entre los módulos. La mayoría de
los módulos en user-mode
33. Sistemas operativos por la forma
en que ofrecen sus servicios
Sistemas Operativos de tiempo real
Sistemas Operativos por lotes
Sistemas Operativos de tiempo
compartido
Sistemas Operativos de Red
Sistemas Operativos paralelos
Sistemas Operativos Distribuídos
34. Sistemas de Tiempo Real
Se utilizan cuando requisitos de tiempo de un
procesador o de flujo de datos son estrictos
Normalmente para aplicaciones delicadas
(industriales, militares, etc.)
Manejan restricciones de tiempo fijas y bien
delimitadas
Hay dos tipos de sistemas de tiempo real:
Tiempo Real Duro, se garantiza que todos los
procesos críticos se terminarán a tiempo
Tiempo Real Blando, se pretende hacerlo, no
siempre se logra
35. Sistemas de Tiempo Real
Por sus restricciones, no utilizan técnicas normales en
otros sistemas: memoria virtual.
La mayoría de S.O. comerciales no soportan esta
forma de trabajo.
Los sistemas blandos son mucho más comunes, se
utilizan donde es importante el tiempo más no
escencial (multimedia, realidad virtual, proyectos
científicos, etc.)
36. Sistemas Operativos por
Lotes
Se reúnen todos los trabajos comunes para
realizarlos al mismo tiempo, evitando la espera
de dos o más trabajos como sucede en el
procesamiento en serie.
Estos sistemas son de los más tradicionales y
antiguos, y fueron introducidos alrededor de
1956 para aumentar la capacidad de
procesamiento de los programas.
37. Sistemas Operativos
de Tiempo Compartido
Permiten la simulación de que el sistema y sus
recursos son todos para cada usuarios.
El usuario hace una petición a la computadora,
esta la procesa tan pronto como le es posible,
y la respuesta aparecerá en la terminal del
usuario.
38. Sistemas Operativos de Red
Son aquellos sistemas que mantienen a dos o
más computadoras unidas a través de algún
medio de comunicación (físico o no), con el
objetivo primordial de poder compartir los
diferentes recursos y la información del
sistema.
39. Sistemas Paralelos
Fuerte tendencia hacia utilizar estos sistemas
Varios procesadores conectados, comparten
mismo bus, reloj y periféricos
Memoria principal no siempre compartida:
sistema fuertemente acoplado
Principal ventaja: aumento de rendimiento;
sistema con n procesadores no es n veces
más rápido
Más económico: se comparten periféricos
Otra gran ventaja: confiablidad, tolerancia a
fallos (fault-tolerant) o degradación gradual
40. Sistemas Distribuidos
No se comparte memoria ni reloj, sistemas
conectados pero en computadoras
independientes
Pueden tener procesadores diferentes, con
capacidades o velocidades distintas
Principales ventajas incluyen:
Recursos compartidos
Computación más rápida
Confiabilidad
Comunicación
41. Ambientes de Computación
Computación tradicional
Computación basada en internet (web-
based)
Computación empotrada (embedded)
42. Evolución de los
Sistemas Operativos
Una buena forma de entender qué son y qué
hacen los sistemas operativos, es revisando
su evolución a través de los años
De esta forma se pueden identificar
elementos comunes
Los sistemas operativos y la arquitectura del
hardware se han influido mucho mutuamente:
Los sistemas operativos se hicieron para facilitar
el uso de hardware
El hardware se ha ido rediseñando para facilitar la
tarea del sistema operativo
43. Primera Generación
(1945-1955)
La tecnología que se utilizaba eran los Tubos al
vacío, los que ocupaban gran espacio, lentos y
disipaban mucho calor.
La programación en esta época era
exclusivamente en lenguaje de máquina o bien en
acciones directas en el hardware, modificando
circuitos (Hardwired).
En esta etapa no existe el concepto de sistema
operativo, todo lo debe realizar el programador, no
hay un ente de software intermedio entre la máquina
y el programador que le haga parte del trabajo.
44. Primera Generación
(1945-1955)
Durante la ejecución el programador podía monitorear la
ejecución a través de las luces de la consola.
si se descubría algún error el programador podía detener
el programa, examinarlo y corregirlo
La salida era impresa puesta en una tarjeta o tarjetas para
una impresión posterior
45. Segunda Generación
(1955-1965)
Esta generación se caracteriza por la utilización de
la tecnología que incluye transistores, estos
proporcionan mejores características que los tubos al
vacío : son más pequeños, disipan menos calor y son
más rápidos.
En esta época ya no hay un solo grupo que se
dedica a diseñar, construir, operar y ,mantener el
sistema computacional, sino que la manutención la
realizan otras personas.
La programación, en este periodo se ve apoyada
por la creación de lenguajes ensambladores y
lenguajes de alto nivel; como Fortran y Cobol .
46. Tercera Generación
(1965-1980)
La tecnología utilizada en este periodo corresponde a la
de circuitos integrados, lo cual permitió construir
máquinas más baratas y con mejor rendimiento.
La empresa IBM fue la primera en utilizar esta tecnología
en las máquinas que construía.
Una de las principales características de los sistemas
operativos de hoy, que aparecen en esta generación es
la Multiprogramación.
Otra característica importante de los sistemas operativos
de esta generación es la aparición de la técnica Spooling
(Operación simultanea y en línea de periféricos ).
Durante esta generación aparecen los primeros sistemas
de Tiempo compartido
47. Tercera Generación
(1965-1980)
Otros de los sistemas que surgió en este periodo es
MULTICS (MULtiplexed Information and Computing
Service), el que sirvió de base para el desarrollo del
sistema UNIX.
Construido por: MIT, Bell Labs, General Electrics
Empezó a utilizarse en 1965 y fue desarrollado en un
mainframe GE 645, Honeywell lo comercializó.
Dennis Ritchie y Ken Thompson escriben UNIX en
lenguaje C.
48. Cuarta Generación
(1980-1990)
Durante esta generación aparecen los sistemas
operativos que proporcionan una interfaz más
amigable al usuario, esto se traduce en mejores
herramientas de interacción con el computador, tales
como capacidades gráficas, íconos, sistemas de
menús, etc.
Los sistemas operativos que cobran gran
popularidad en este periodo son MS-DOS de
Microsoft y UNIX. Este último tuvo sus primeros
desarrollos en la Universidad de Berkeley y
posteriormente en AT&T.
49. Quinta Generación
(1990- ????)
Surge el crecimiento de las redes de
computadoras con sistemas operativos de
red y sistemas operativos distribuidos.
El desarrollo de los sistemas
computacionales de los últimos tiempos han
generado un conjunto de estándares, que
han servido de base para futuros desarrollos
de fabricantes que trabajan en conjunto.
50. Quinta Generación
(1990- ????)
Aparecen los sistemas abiertos que son un
sistema independiente del fabricante que esta
diseñado para interconectarse con una variedad
de productos comúnmente disponibles.
Implica que los estándares para tal sistema están
determinados a partir de un consenso de las
partes interesadas, más que de uno o dos
fabricantes solamente.
51. Ejemplos de normas
Normas de comunicación abierta
modelo de referencia OSI
Normas de sistemas operativos abiertos
Unix: Fundación Software Abierto (OSF),
parecida a Aix Normas de sistemas operativos
abiertos
Normas de interfaces de usuario abiertas
ejemplo: X Window System desarrollado en el MIT
Normas de aplicaciones de usuario abiertas
adoptadas por varias corporaciones: X/Open y la OSF
52. Ejemplos Organismos de
Estándares Computacionales
ANSI
American National Standards Institute, (http://web.ansi.org)
IEEE
Institute of Electrical and Electronical Engineers
(http://www.ieee.org)
OSF
Open Software Fundation (http://www.opengroup.org)
X/OPEN
Consorcio de proovedores internacionales de computadoras
ISO
International Standards Organization
Internet