2. Introducción
Un sistema operativo es la base que tienen los
ordenadores para trabajar, al igual que los smartphones o
tablets de hoy en día. Estamos cansados de trabajar con
sistemas operativos a lo largo de nuestras vidas, pasando
por Windows hasta entornos Unix como pueden ser
Linux con Ubuntu y demás distribuciones o Mac OS.
3. Concepto, historia y evolución
Definiciones:
El software y/o firmware que hace utilizable al
hardware .
Es un programa que controla la ejecución de los
programas de aplicación y que actúa como interfaz
entre los usuarios y el hardware .
Es un programa que actúa como intermediario entre
el usuario y el hardware. El primer objetivo es la
comodidad, el segundo la eficiencia .
Es un programa que tiene encomendada una serie
de funciones diferentes cuyo objetivo es simplificar
el manejo y utilización de la computadora,
haciéndolo seguro y eficiente .
4. Concepto, historia y evolución …
Se puede considerar que un S.O. tiene tres
objetivos:
Comodidad.
Hace que un sistema informático sea más fácil y
cómodo de utilizar, al funcionar como una interfaz
entre el usuario y el hardware, presentando una
cara amistosa y sencilla.
Eficiencia.
Administrar los recursos del sistema informático de
forma eficiente. Dichos recursos pueden ser físicos
(procesador, memoria principal, periféricos, etc.) o
lógicos (archivos, puertos de comunicación, etc.).
Capacidad de evolución.
El S.O. debe construirse de modo que permita el
desarrollo efectivo, la verificación y la introducción
de nuevas características al sistema y, a la vez, no
interfiera con los servicios que brinda.
5. Concepto, historia y evolución …
Jerarquía de elementos en una computadora
Vistas de un sistema operativo
El sistema operativo como gestor de recursos.
El Sistema operativo como una máquina extendida.
El sistema operativo como una interfaz de usuario.
Hardware del computador
(PC, Mac, Sun, …)
Sistema Operativo
(Windows, Linux, Mac OS X)
Utilidades
(Shell, Ensamblador, Enlazador, bibliotecas, …)
Programas de aplicación
(Resuelven problemas para los usuarios)
(Word, Excel, …)
Usuario
Final
Programador
Diseñador del
Sistema
Operativo
6. Concepto, historia y evolución …
El sistema operativo como gestor de
recursos.
Asigna recursos
Se encarga de asignar los recursos a los
programas en ejecución en función de la
disponibilidad de estos y la prioridad de los
programas.
También tiene que recuperar los recursos
asignados cuando los programas ya no los
necesiten.
Los recursos pueden ser físicos o lógicos.
Protege
Tiene que asegurar la confidencialidad de la
información y que los trabajos no interfieran
entre sí por los recursos asignados.
Hace contabilidad
Mide la cantidad de recursos, que a lo largo
de su ejecución, utiliza cada programa.
Bitácoras y Monitorización
7. Concepto, historia y evolución …
El Sistema operativo como una máquina extendida.
Ofrece a los programas un conjunto de servicios, o
llamadas al sistema, que pueden solicitar cuando lo
necesiten.
Los servicios se pueden agrupar en cuatro clases:
Ejecución de programas.
El S.O. incluye servicios para lanzar a ejecución, parar o abortar
un programa.
Órdenes de E/S.
Servicios para proveer a los programas de operaciones de lectura,
escritura y modificación del estado de los periférico, de forma
cómoda y protegida.
Operaciones sobre archivos.
Es un nivel de abstracción mayor que las órdenes de E/S. Estos
servicios permiten: creación, borrado, apertura, escritura y
lectura de archivos.
Detección y tratamiento de errores.
El S.O. debe tratar todas las condiciones de error que detecte el
hardware. Algunos de los errores que pueden aparecer son
provocados por la E/S y otros por la ejecución de los programas.
8. Concepto, historia y evolución …
El sistema operativo como una interfaz
de usuario.
Permite que los usuarios dialoguen de forma
interactiva con el sistema. El dialogo puede
ser a través de:
Interfaz de Texto.
Se conoce como shell o intérprete de mandatos.
Espera que el usuario teclee una orden en el
shell. Después la analiza y si es válida la
ejecuta. Una vez que esta concluye retorna a la
espera.
Interfaz grafica.
Existen elementos gráficos para comunicarse
con el S.O. (botones, menús, iconos, etc.).
Espera por eventos generados por el ratón y el
teclado. Valida el evento y lo ejecuta. Una vez
ejecutado retorna a la espera de más eventos.
9. Concepto, historia y evolución … (7)
Los S.O. han estado evolucionando a través de los
años. Su historia y desarrollo esta ligado con las
generaciones de computadoras.
Prehistoria (años cuarenta).
Prácticamente sin S.O.
Procesamiento en serie.
Primera generación (años cincuenta).
Procesamiento por lotes
Segunda generación (años sesenta)
Multiprogramación y tiempo compartido.
Tercera generación (años setenta)
Sistemas de propósito general y multimodo de
operación.
Cuarta generación (años ochenta hasta la
actualidad)
Proceso distribuido.
Se difunde el concepto de máquina virtual.
10. Concepto, historia y evolución … (8)
Prehistoria (años cuarenta)
Máquinas como la ENIAC o la EDVAC.
No existía un S.O. La interacción se
daba directamente con el hardware.
El usuario debía codificar su
programa en código máquina,
introducirlo mediante tarjetas
perforadas y recibir la salida de forma
impresa.
El procesamiento se dice que se
realiza en serie por que refleja el
hecho de que los usuarios tenían que
acceder en serie al computador.
Con el paso del tiempo, para hacer
más eficiente el proceso en serie, se
desarrollaron bibliotecas de funciones
comunes, montadores, cargadores,
depuradores, etc.
ENIAC
EDVAC
11. $END
$RUN
$LOAD
$FTN
Concepto, historia y evolución … (9)
Primera generación (años
cincuenta)
Procesaban un único flujo de
trabajos en lotes.
Disponían de un conjunto de
rutinas de E/S.
Permitían la recuperación del
sistema si un trabajo acababa en
error.
Tenían un lenguaje de control de
trabajos que permitía especificar
los recursos a utilizar y las
operaciones a realizar por cada
trabajo.
El software principal del S.O. se
denominaba monitor, y era el que
controlaba la secuencia de
sucesos.
Tratamiento de
interrupciones
Controlador de
Dispositivos
Secuenciamiento
de trabajos
Intérprete del
Lenguaje de
Control
Zona del
Programa
del
Usuario
Monitor
Disposición de
la memoria
$JOB
Programa
a compilar
Paquete de tarjetas
para un sistema
sencillo de por lotes
12. Concepto, historia y evolución … (10)
Segunda generación (años sesenta)
La multiprogramación se impuso en sistemas de lotes
como una forma de aprovechar el tiempo empleado en
las operaciones de E/S.
Se construyen los primeros multiprocesadores.
Se introduce el concepto de independencia de
dispositivos.
Comienzan los sistemas de tiempo compartido.
Aparecen los primeros sistemas de tiempo real.
Ejecutar Ejecutar
Esperar E/S
Tiempo
Monoprogramación
Solo un programa
en ejecución a la vez
Ejecutar
A
Ejecutar
A
Tiempo
Ejecutar
B
Ejecutar
B
Multiprogramación
Más de un programa
en ejecución a la vez
Esperar E/S
Esperar E/S Esperar E/S
13. Concepto, historia y evolución … (11)
Tercera generación (años cincuenta)
Es la época de los sistemas de propósito general y
se caracterizan por ser sistemas multimodo, capaces
de operar:
Por lotes
Multiprogramación
En tiempo real
En tiempo compartido
En modo multiprocesador
Estos S.O. interpusieron entre el usuario el hardware
una gruesa capa de software y ya no había que
preocuparse por la circuitería.
Los inconvenientes fueron:
Un complejo lenguaje de control
Consumían muchos recursos.
Aparece sistemas de gran difusión principalmente el
UNIX. Este sistema fue el primero en codificarse en
un lenguaje de alto nivel, el C.
14. Concepto, historia y evolución … (12)
Cuarta generación (años ochenta ¿hasta
la actualidad?)
Los S.O. tienden a dar más importancia a la
productividad del usuario que al rendimiento
de la máquina.
Se hace masivo el uso de la PC y aparecen los
sistemas “amistosos” (se añade un gestor de
ventanas).
Adquieren también más importancia las redes
de computadoras y surge el proceso
distribuido.
Surgen interfaces de programación estándar
POSIX
Win32
15. Concepto, historia y evolución … (13)
Actualmente existe una gran diversidad de
sistemas operativos. Los que se consideran
como de amplia difusión en PC son: Los
sistemas tipo Unix (Linux, Mac OS X) y los
sistemas Windows (Microsoft). Cada uno de
ellos tiene su historia y desarrollo, con cada
nueva versión se intenta mejorar la comodidad
y la eficiencia.
16. Clasificación y estructura
Existen diversas clasificaciones desde distintos puntos de
vista para los sistemas operativos.
Clasificación
de los
Sistemas
Operativos
Por el número
de usuarios
Monousuarios
Multiusuarios
Por el número
de tareas
Monotareas
Multitareas
Por el número
de procesadores
Uniproceso
Multiproceso Simétricos
Asimétricos
Por el propósito
Específico
General
Por el tipo de
diseño
Monolíticos
Abiertos
Modulares
Por capas
Micronúcleo
Máquinas virtuales
Por el tipo de
desarrollo Cerrado
17. Clasificación y estructura …
Los componentes del sistema operativo se
pueden clasificar de la siguiente forma:
Básicos:
Gestor de procesos
Gestor de memoria
Gestor de E/S y almacenamiento secundario
Servidores:
Servidor de archivos
Servidor de protección y seguridad
Utilidades:
Interprete de comandos
Programas del sistema
18. Clasificación y estructura …
Gestor de procesos
Un proceso es un programa en ejecución que
consume recursos (memoria, archivos, etc.)
El SO debe gestionar lo siguiente de los procesos:
Creación y destrucción.
Suspensión y reanudación.
Asignación de los recursos al proceso.
Mecanismos de comunicación y sincronización
19. Gestor de memoria
La memoria se visualiza como un vector enorme de
bytes (direcciones) y es compartida por el CPU y
dispositivos de E/S.
El SO debe gestionar lo siguiente:
Qué partes están en uso y quién las esta ocupando.
Qué procesos se deben cargar y dónde.
Asigna y libera espacio cuando se requiere
Gestiona la memoria virtual
20. Clasificación y estructura …
Gestor de E/S
El SO debe encargarse de gestionar los
distintos dispositivos de E/S: terminales,
dispositivos de almacenamiento
secundario y terciario, teclado, etc.
El SO gestiona, entre otras cosas:
Copiado de memoria hacia y desde el
controlador.
Controla transferencias por DMA
Planificación de acceso a los discos
Asignación y liberación de espacio en
los dispositivos de almacenamiento secundario
.
21. Servidor de Archivos y directorios
El archivo es visto como una unidad de
almacenamiento lógico no volátil que agrupa un
conjunto de información relacionada entre sí bajo
un mismo nombre.
Los directorios son objetos que relacionan de
forma unívoca un nombre con un archivo. Es
decir un mismo nombre no puede identificar dos
archivos.
El SO gestiona lo siguiente respecto a los
archivos y directorios:
Creación, apertura, cerrado, borrado y leer
archivos y directorios, así como escritura de
archivos.
22. Clasificación y estructura … (5)
Servidor de protección y seguridad
Por el lado de la protección se debe:
Controlar el acceso a los recursos por parte de los procesos
(usuarios)
Distinguir entre el uso autorizado y no autorizado para
acceder a un recurso.
Proporcionar métodos de control de acceso.
Por el lado de la seguridad:
Proteger al sistema de un uso indebido (fraudulento).
Autentificar a los usuarios.
Evitar amenazas al sistema (gusanos, virus, piratas, etc.)
Evitar intercepción de comunicaciones (cifrado, etc.)
Intérprete de comandos
Programa cuya función es obtener los comandos del
usuario y lanzar su ejecución.
Existen básicamente dos tipos:
Intérprete de comandos en línea (shell Linux)
Interfaz gráfico de usuario (Windows)
23. Clasificación y estructura … (6)
Programas de sistema
Proporcionan un entorno adecuado para el
desarrollo y ejecución de programas.
Existen diversas categorías:
Manipulación de archivos y directorios: copiar,
mover, renombrar, etc.
Información de estado: monitores, bitácoras.
Programación: compiladores, enlazadores,
ensambladores, bibliotecas, etc.
Carga y ejecución: cargador.
Comunicaciones: ssh, sftp, etc.
Aplicaciones: navegadores, editores, etc.
24. Clasificación y estructura …
Metodologías de diseño de sistemas
operativos
La metodología empleada en el diseño de la
estructura permite abordar la complejidad de
los SO de distintas formas.
Los objetivos de diseño en un SO son:
Para el usuario
Fácil de usar, fiable, seguro, potente y sencillo.
Internamente
Fácil de implementar y mantener
Flexible, fiable, eficiente y estar libre de errores
Diferenciar claramente entre:
Mecanismos: qué cosas se pueden hacer.
Políticas: criterios para decidir que hacer.
25. Clasificación y estructura … (8)
Núcleo (kernel)
El núcleo o kernel es la parte fundamental del
SO.
Es el código responsable de controlar y
administrar los servicios y peticiones de
recursos y hardware con respecto a uno o
varios procesos.
Para esquematizar las estrategias de
diseño se suele mostrar el SO como una
serie de niveles partiendo del hecho de
que el kernel esta directamente en
contacto con el hardware.
26. Clasificación y estructura … (9)
Niveles de un sistema con kernel
monolítico.
Es la organización más común, no
tiene una estructura bien clara y
definida.
Todos sus componentes se
encuentran integrados en un único
programa (el SO).
Normalmente han surgido de SO
pequeños y fueron haciéndose más
grandes debido a su popularidad
(MS-DOS, UNIX en sus orígenes).
El problema que plantean estos
sistemas radica en lo complicado
que es modificar el SO para añadir
nuevas funcionalidades y servicios.
Además no existe el principio de
ocultación de la información.
Hardware
Núcleo
Gestor de
procesos
Gestor de
E/S
Gestor de memoria
Controladores
Programas
de Sistema
Shell
Aplicaciones de Usuario
Servicios y llamadas al sistema
27. Clasificación y estructura …
Niveles en un sistema con diseño
modular.
El núcleo esta dividido en módulos
con interfaces y funcionalidades
claramente definidas.
Son sistemas altamente
estructurados y modulares donde
se pueden sustituir componentes
por otros con el mismo interfaz
(controladores, manejo de
archivos, etc.
Estos sistemas se consideran como
de kernel monolítico hibrido debido
a la capacidad de cargar y
descargar los controladores y
extensiones del sistema mientras
el sistema continúa trabajando sin
ser interrumpido.
Hardware
Núcleo
Programas
de Sistema
Shell
Aplicaciones de Usuario
Interfaz de llamadas al sistema
Gestor de
E/S
Gestor de
Procesos
Gestor de
Memoria
Controladores de
disp por flujo
Controladores de
disp por bloques
Facilidades
Comunes
28. Clasificación y estructura … (11)
Sistemas estructurados en capas
El sistema se organiza en una jerarquía de capas, donde cada
capa ofrece una interfaz clara y bien definida a la capa
superior y solamente utiliza los servicios que ofrece la capa
inferior.
La principal ventaja de estos sistemas es la modularidad y
ocultamiento de la información. La desventaja es que una
orden tiene que pasar por varias capas antes de ser
ejecutada.
Kernel
(Administración
del CPU)
Gestor de
Memoria
Gestor de
Procesos
Gestor de
E/S
Interfaz de
Llamadas al
Sistema
Aplicaciones
de usuario
29. Clasificación y estructura …
Sistemas con micronúcleo
Consiste en implementar la mayor parte de los servicios y
funciones del sistema operativo en procesos de usuario,
dejando solo una pequeña parte del SO ejecutándose en
modo núcleo.
A la pequeña parte que del SO que se ejecuta en modo
núcleo se le conoce como micronúcleo y a los procesos que
ejecutan el resto de las funciones se les denomina
servidores.
La desventaja radica en que una llamada puede necesitar
muchos mensajes entere los distintos servidores.
Hardware
Micronúcleo
API API
Aplicaciones
de Usuario
Servidor
de
Memoria
Servidor
de
Procesos
Servidor
de
E/S
30. Clasificación y estructura …
Máquina virtual
El corazón del sistema, conocido
como monitor de la máquina virtual,
se ejecuta directamente en el
hardware y realiza la
multiprogramación, presentando no
una, sino varias máquinas virtuales
al usuario donde cada máquina
virtual puede estar ejecutando un
SO diferente.
La máquina virtual que se presenta
al usuario pretende ser idéntica a la
que en realidad se tiene. Sin
embargo no es sencillo lograr
duplicados exactos.
Compartir recursos se torna
complicado.
Estos principios se utiliza para
emular SO sobre otros SO y en
Sistemas Distribuidos. Hardware
Monitor de Máquina Virtual
Núcleo 1 Núcleo 2 Núcleo 3
Aplicaciones
De
Usuario
Llamadas
al Sistema
Aplicaciones
De
Usuario
Llamadas
al Sistema
Aplicaciones
De
Usuario
Llamadas
al Sistema
31. Arranque y activación
El arranque de una computadora actual tiene dos
fases:
La fase de arranque del hardware
La fase de arranque del SO
S.O
(Wnd, Linux, Mac OS X)
HDD
RAM
Test del Hardware
S.O.
-Test del sistema de
archivos
-Creación de ED internas
- Completa carga del SO
residente
- Creación de proceso
login
CPU
ROM
Carga en memoria del
cargador del SO
Bajo el control del
Inicador ROM
Carga en
memoria
Componentes
del SO
Bajo el control del
Cargador del SO
Inicialización bajo el control
de la parte residente del SO
Arranque del Hardware Arranque del SO
32. Arranque y activación …
Los programas en ROM en el arranque de la
computadora realizan tres cosas:
Una comprobación del sistema, que sirve para
detectar sus características (cantidad de memoria,
periféricos instalados, etc.) y comprobar si
funcionan correctamente.
Fase de lectura y almacenamiento en memoria del
programa cargador del SO.
Finalmente cede el control al programa recién
cargado en memoria. El cargador del SO es
independiente del SO.
En el caso de una PC, la ROM también contiene el
software de E/S llamado BIOS.
Firmware que contiene los procedimientos para leer
y escribir de disco, leer caracteres del teclado y
escribir en la pantalla
33. Arranque y activación …
En el arranque del SO incluye las operaciones de:
Comprobación del sistema.
Se completan las pruebas del hardware realizadas
por la ROM.
Se comprueba si el sistema de archivos tiene un
estado coherente.
Se establecen las estructuras de datos (ED) propias
del SO para almacenar información referente a:
tablas de procesos, tablas de memoria, E/S, etc.
Se carga en memoria principal aquella parte del SO
que ha de estar siempre presente en memoria (SO
residente).
Se crea un proceso de login (inicio) por cada sesión
en el sistema
34. Arranque y activación …
Una vez cargado el SO, la acciones que activan su
ejecución son:
Llamadas al sistema emitidas por los programas.
Interrupciones emitidas por los periféricos.
Condiciones de excepción o error del hardware.
En todos los casos anteriores se deja de ejecutar
el proceso en ejecución y se entra a ejecutar el
SO. (Recuérdese el funcionamiento general de una computadora bajo
el control de un programa FuncionamientoGral.ppt).
35. Arranque y activación …
Secuencia de sucesos en una llamada al sistema:
El programa de usuario entra en el kernel por una
trampa (trap) (1).
El SO determina el número de servicio requerido
(2).
El SO invoca el procedimiento de servicio (3).
Devuelve el control al programa de usuario (4).
Programa de usuario 2
Programa de usuario 1
Llamada al kernel
1
2
3
4
Tabla de despacho
Procedimiento
de servicio
Los programas de
usuario se ejecutan
en modo usuario.
El sistema operativo
se ejecuta en modo
de kernel
Memoria principal