Está en la página 1de 45

Capítulo 2: Estructuras del

Sistema operativo

Fundamentos de sistemas operativos - Silberschatz


Servicios del sistema operativo
■ Los sistemas operativos proveen un ambiente para la ejecución de programas y
servicios para programas y usuarios
■ Conjunto de servicios que provee el sistema operativo útiles para el usuario:
● Interfaz de usuario – Todos los sistemas operativos tienen una interfaz de
usuario
4 Varía entre líneas de comando (CLI), interfaces gráficas de usuario
(GUI), batch
● Ejecución de programas – El sistema debe ser capaz de cargar un programa
en la memoria y ejecutarlo, terminar su ejecución, ya sea normalmente o
anormalmente (indicando el error)
● Operaciones de E/S – Un programa en ejecución puede requerir E/S, el cual
puede implicar un archivo o un dispositivo de E/S

Fundamentos de sistemas operativos - Silberschatz 2


Servicios del sistema operativo (Cont.)

■ Conjunto de servicios que provee el sistema operativo útiles para el usuario (Cont.):
● Manipulación del sistema archivos – El sistema de archivos es muy
importante. Los programas necesitan leer y escribir archivos y directorios, crear
y eliminarlos, realizar búsquedas, ver la información de los archivos, manejo de
permisos.
● Comunicaciones – Los procesos pueden intercambiar información, en la misma
computadora o entre computadoras sobre una red
4 Las comunicaciones pueden ser vía memoria compartida o mediante paso
de mensajes (paquetes de información movidas por el SO)
● Detección de errores – El SO necesita estar constantemente pendiente de
posibles errores
4 Pueden ocurrir en la CPU, en el hardware de la memoria, en dispositivos de
E/S, en un programa de usuario
4 Para cada tipo de error, el SO debe tomar las acciones adecuadas para
asegurar la recuperación del error y el correcto funcionamiento posterior

Fundamentos de sistemas operativos - Silberschatz 3


Servicios del sistema operativo (Cont.)
■ Otras funciones útiles que provee el SO para asegurar la eficiencia del sistema:

● Asignación de recursos - Cuando múltiples usuarios o múltiples tareas se


ejecutan concurrentemente, los recursos deben ser asignados para cada uno de
ellos
4 Muchos tipos de recursos – Ciclos de CPU, manejo de memoria,
almacenamiento de archivos, dispositivos de E/S
● Cuentas – Para hacer un seguimiento de qué usuarios utilizan qué cantidad y
qué tipos de recursos
● Protección y seguridad - Los propietarios de la información almacenada en un
sistema informático multiusuario o en red pueden querer controlar el uso de esa
información, los procesos concurrentes no deben interferir entre sí.
4 La protección implica garantizar que se controle todo el acceso a los
recursos del sistema.
4 La seguridad del sistema frente a personas ajenas requiere autenticación
de usuario y se extiende a la defensa de dispositivos de E/S externos frente
a intentos de acceso no válidos.

Fundamentos de sistemas operativos - Silberschatz 4


Servicios del sistema operativo (Cont.)

Fundamentos de sistemas operativos - Silberschatz 5


Interfaz de usuario del Sistema operativo - CLI

El intérprete de comandos o CLI (Command Line Interface)


● Puede ser implementado en el kernel o implementado por programas
del sistema – shells
● Básicamente obtiene un comando del usuario y lo ejecuta
● Los comandos pueden estar implementados en el Shell, o utilizar
comandos del sistema
4 Para el segundo caso, añadir nuevos comandos no requiere
modificación del shell

Fundamentos de sistemas operativos - Silberschatz 6


Intérprete de comandos BASH

Fundamentos de sistemas operativos - Silberschatz 7


Interfaz de usuario del Sistema operativo - GUI

■ Metáfora de escritorio
● Generalmente ratón, teclado y monitor
● Los íconos representan archivos, programas, acciones, etc.
● Los botones del ratón causan diversas acciones (proveer información,
opciones, ejecutar, abrir directorio (conocidos como carpetas)
● Inventado en Xerox PARC
■ Varios sistemas ahora incluyen CLI y GUI
● Microsoft Windows posee GUI con CLI básico
● Apple Mac OS X posee “Aqua” para la GUI con el kernel de UNIX
disponibiliza varios shells CLI.
● Unix and Linux poseen CLI con GUI opcionales (CDE, KDE, GNOME)

Fundamentos de sistemas operativos - Silberschatz 8


Interfaces táctiles
■ Las interfaces táctiles requieren
nuevas interfaces
● El uso del ratón no es posible o no es
deseable
● Las acciones y la selección se
realizan a través de gestos
● Teclado virtual para la entrada de
texto
● Comandos de voz

Fundamentos de sistemas operativos - Silberschatz 9


GUI de MacOS

Fundamentos de sistemas operativos - Silberschatz 10


Llamadas al sistema
■ Interfaz de programación para los servicios proveídos por el SO
■ Típicamente están escritos en un lenguaje de alto nivel (C/C++)
■ Generalmente accedido por los programas vía una Interfaz de
Programación de Aplicaciones (API) en vez de utilizar la llamada al
sistema directamente
● Provee portabilidad de código fuente siempre y cuando los SO
implementen la API
■ Las tres APIs más comunes son API Win32 para Windows, API POSIX
para sistemas basados en POSIX (incluyendo virtualmente todas las
versiones de UNIX, Linux, y Mac OS X), y la API de Java para para
máquina virtual de Java (JVM)

Fundamentos de sistemas operativos - Silberschatz 11


Ejemplo de llamada al sistema
■ Secuencia de llamadas al sistema para la copia del contenido de un archivo
en otro

Fundamentos de sistemas operativos - Silberschatz 12


Implementación de llamadas al sistema
■ Típicamente, un número está asociado a cada llamada al sistema
● La interfaz de llamadas al sistema mantiene una tabla indexada
acorde a los números que los identifican
■ La interfaz de llamada al sistema invoca a la llamada al sistema en el kernel
del SO y retorna el estado de la llamada al sistema y cualquier valor de
retorno
■ El llamante no sabe nada acerca de cómo la llamada al sistema está
implementada
● Solo necesita obedecer la API y entender qué hará el SO como
resultado de la llamada
● La mayoría de los detalles de la interfaz del sistema operativo están
ocultos al programador por la API
4 Gestionadas por las librerías en tiempo de ejecución (conjunto de
funciones incluidas con el compilador)

Fundamentos de sistemas operativos - Silberschatz 13


Relación API – Llamada al Sistema – SO

Fundamentos de sistemas operativos - Silberschatz 14


Ejemplo de API estándar

Fundamentos de sistemas operativos - Silberschatz 15


Paso de parámetros de llamadas al sistema

■ A menudo, más información es requerida que simplemente tratar de


identificar la llamada al sistema a ejecutar
● El tipo exacto y la cantidad de información requerida varía entre
sistemas operativos
■ Los tres métodos generales de paso de parámetros se utilizan:
● El más simple: paso de parámetros en los registros
4 En algunos casos, pueden haber más parámetros que registros
● Parámetros almacenados en un bloque, o tabla, en memoria. La
dirección de memoria se pasa en un registro
4 Utilizadopor Linux y Solaris
● Los parámetros son colocados en el espacio de pila de la llamada
al sistema por el programa y son sacados de la pila por el SO
● Las técnicas de bloque y pilas no limitan el número de parámetros
que pueden ser utilizados

Fundamentos de sistemas operativos - Silberschatz 16


Paso de parámetros vía tabla

Fundamentos de sistemas operativos - Silberschatz 17


Tipos de llamadas al sistema
■ Control de procesos
● crear procesos, terminación procesos
● terminar (con error), abortar
● cargar, ejecutar
● obtener atributos de un proceso, asignar atributos a un proceso
● esperar por un intervalo de tiempo
● esperar un evento, señalizar un evento
● asignar y liberar memoria
● volcado de memoria si ocurre un error
● depurador para determinar bugs, ejecución paso por paso
● bloqueos para gestionar el acceso a los datos compartidos entre
procesos

Fundamentos de sistemas operativos - Silberschatz 18


Tipos de llamadas al sistema (Cont.)
■ Manejos de archivos
● crear archivo, eliminar archivo
● abrir archivo, cerrar archivo
● leer, escribir, reposicionar
● obtener y asignar atributos del archivo
■ Gestión de dispositivos
● solicitar dispositivo, liberar un dispositivo
● leer, escribir, reposicionar
● obtener atributos del dispositivo, asignar atributos del dispositivo
● conectar y desconectar dispositivos lógicamente

Fundamentos de sistemas operativos - Silberschatz 19


Tipos de llamadas al sistema (Cont.)
■ Información de mantenimiento
● obtener hora o fecha, asignar hora o fecha
● obtener la información del sistema, establecer información del sistema
● obtener y establecer atributos de procesos, archivos o dispositivos
■ Comunicaciones
● crear, eliminar conexiones
● enviar, recibir mensajes
4 Modelo de paso de memoria compartida
4 Modelo de paso de mensajes

Fundamentos de sistemas operativos - Silberschatz 20


Tipos de llamadas al sistema (Cont.)
■ Protección
● control de acceso a recursos
● obtener y establecer permisos
● permitir y denegar acceso a usuarios

Fundamentos de sistemas operativos - Silberschatz 21


Ejemplos de llamadas al sistema de Windows y Unix

Fundamentos de sistemas operativos - Silberschatz 22


Ejemplo de la librería Standard de C
■ El programa en C está llamando a la función printf(), el cual invoca una
llamada al sistema write()

Fundamentos de sistemas operativos - Silberschatz 23


Manejo de procesos: MS-DOS
■ Monotarea
■ El intérprete de comandos se
invoca cuando inicia el sistema
■ Método sencillo para ejecutar un
programa
● No se crea ningún proceso
nuevo
■ Un solo espacio de memoria
■ Carga el programa en memoria,
sobrescribiendo todo menos el
kernel
■ Al finalizar el programa el
intérprete se vuelve a cargar Al inicio Ejecutando un
programa

Fundamentos de sistemas operativos - Silberschatz 24


Manejo de procesos: FreeBSD
■ Variante de UNIX
■ Multitarea
■ Al inicio de la sesión de usuario se invoca el
intérprete de comandos (Shell) de
preferencia del usuario
■ El Shell ejecuta la llamada al sistema fork()
para crear el proceso
● Ejecuta exec() para cargar el programa
en un proceso
● El Shell espera a que el proceso termine
o el usuario continúe con otros
comandos
■ El proceso termina con:
● código = 0 – sin errores
● código > 0 – código del error

Fundamentos de sistemas operativos - Silberschatz 25


Programas del sistema
■ Los programas del sistema proveen un entorno conveniente para el
desarrollo y ejecución de programas.
■ Algunos son simplemente interfaces a las llamadas al sistema, otros son
considerablemente más complejos.
■ Pueden ser divididos en:
● Manipulación de archivos
● Soporte para lenguajes de programación
● Carga y ejecución de programas
● Comunicaciones
● Servicios en segundo plano
● Programas de aplicaciones
■ La vista del del sistema operativo para la mayoría de los usuarios está
definida por los programas del sistema, no por las llamadas de sistema.

Fundamentos de sistemas operativos - Silberschatz 26


Programas del sistema (Cont.)
■ Gestión de archivos – Crear, eliminar, copiar, renombrar, imprimir, volcar,
listar y de forma general manipular archivos y directorios
■ Información de estado
● Solicitar al sistema la fecha, la hora, la cantidad de memoria o de
espacio de almacenamiento disponible, número de usuarios
● Otros son más complejos y proporcionan información detallada sobre el
rendimiento, los inicios de sesión, etc
● Normalmente, estos programas formatean los datos de salida y los
envías al terminal o a otros dispositivos o archivos de salida
● Algunos sistemas también soportan un registro, que se usa para
almacenar y recuperar información de configuración

Fundamentos de sistemas operativos - Silberschatz 27


Programas del sistema (Cont.)
■ Modificación de archivos
● Editores de texto para crear y modificar archivos
● Comandos especiales para explorar el contenido de los archivos en
busca de determinado dato o para realizar cambios en el texto
■ Soporte para lenguajes de programación – Compiladores,
ensambladores, depuradores e intérpretes proveídos por el sistema
■ Carga y ejecución de programas – Cargadores, enlazadores
■ Comunicaciones – Provee el mecanismo para crear conexiones virtuales
entre procesos, usuarios y computadoras
● Permite a los usuarios enviar mensajes, explorar páginas web, enviar
correos electrónicos, transferir archivos de una máquina a otra, etc

Fundamentos de sistemas operativos - Silberschatz 28


Programas del sistema (Cont.)
■ Servicios en segundo plano
● Lanzados al iniciar el sistema
4 Algunos terminan luego de completar sus tareas
4 Algunos se ejecutan desde el inicio hasta el final (apagado)
● Proporcionar servicios como iniciar procesos según cierta planificación,
colas de impresión, etc
● Se ejecutan en el contexto de usuario, no en el de kernel
● Conocidos como servicios, subsistemas, demonios

■ Programas de aplicación
● No pertenecen al sistema
● Ejecutado por usuarios
● Normalmente no se consideran parte del SO
● Se lanzan vía línea de comandos, clicks del ratón, gestos con el dedo

Fundamentos de sistemas operativos - Silberschatz 29


Implementación de los SO

■ Mucha variación
● Los primeros sistemas operativos estaban escritos en lenguaje
ensamblador
● Ahora principalmente en C, C++
■ En realidad, normalmente son una mezcla de lenguajes
● Los niveles más bajos en lenguaje ensamblador
● El cuerpo principal en C
● Los programas de sistema en C, C++, lenguajes interpretados como
PERL, Python, shells scripts
● Si se utiliza un lenguaje de alto nivel es más fácil portar a otro
● Pero más lento que su contrapartida puramente en lenguaje
ensamblador

Fundamentos de sistemas operativos - Silberschatz 30


Estructura del sistema operativo
■ Un SO de propósito general es un programa largo y complejo
■ Varias formas de estructurar
● Estructura simple – MS-DOS
● Más compleja – Unix
● Por capas – modelo conceptual
● Microkernel – Mach

Fundamentos de sistemas operativos - Silberschatz 31


Estructura simple -- MS-DOS
■ MS-DOS – escrito para proveer la
mayor cantidad de
funcionalidades en el menor
espacio
● No está dividido en módulos
● Aunque MS-DOS tiene cierta
estructura, sus interfaces y
niveles de funcionalidad no
están bien separados.

Fundamentos de sistemas operativos - Silberschatz 32


Estructura no simple -- UNIX
El SO UNIX consiste de dos partes separables
● Programas del sistema
● El kernel
4 Consiste en todo lo que está por debajo de la interfaz de llamadas al
sistema y por encima del hardware físico.
4 Proporciona el sistema de archivos, la planificación de CPU, la
gestión de la memoria y otras funciones del sistema operativo; un
gran número de funciones para solo un nivel

Fundamentos de sistemas operativos - Silberschatz 33


Estructura UNIX tradicional

Fundamentos de sistemas operativos - Silberschatz 34


Estructura en capas
■ El sistema operativo está dividido
en varias capas (niveles), cada
una construida sobre capas
inferiores. La capa inferior (capa
0), es el hardware; la más alta
(capa N) es la interfaz de usuario.
■ Con la modularidad, las capas se
seleccionan de tal manera que
cada una utiliza funciones
(operaciones) y servicios de las
capas inferiores.

Fundamentos de sistemas operativos - Silberschatz 35


Estructura de Microkernel
■ Mueve muchas funciones del kernel al espacio de usuario
■ Mach es un ejemplo de microkernel
● El kernel de macOS (Darwin) está basado en Mach
■ La comunicación entre módulos de usuario se realiza mediante paso de
mensajes
■ Beneficios:
● Fácil de extender
● Fácil de portar el sistema operativo a nuevas arquitecturas
● Más confiable (menos código está corriendo en el modo kernel)
● Más seguro
■ Desventajas:
● Sobrecarga de rendimiento en la comunicación entre el espacio de
usuario y espacio de kernel

Fundamentos de sistemas operativos - Silberschatz 36


Estructura de Microkernel

Application File Device user


Program System Driver mode

messages messages

Interprocess memory CPU kernel


Communication managment scheduling mode

microkernel

hardware

Fundamentos de sistemas operativos - Silberschatz 37


Módulos
■ Muchos de los sistemas operativos modernos implementan módulos de
kernel cargables
● Cada componente está separado
● Cada uno se comunica con otros sobre una interfaz conocida
● Cada módulo es cargable según necesidad

Fundamentos de sistemas operativos - Silberschatz 38


Enfoque modular de Solaris

Fundamentos de sistemas operativos - Silberschatz 39


Sistemas Híbridos
■ La mayoría de los sistemas operativos modernos no son realmente un
modelo puro
● El enfoque híbrido combina múltiples enfoques para abordar las
necesidades de rendimiento, seguridad y usabilidad.
● Linux y Solaris son monolíticos, porque tener el sistema operativo en un
solo espacio de direcciones proporciona un rendimiento muy eficiente.
4 También son modulares, de modo que se pueden añadir nuevas
funcionalidades dinámicamente al kernel
● Windows es principalmente monolítico
4 Pero retiene algunas características de microkernel para proveer
soporte a subsistemas que corren en modo usuario
4 También provee soporte para módulos cargables
■ Apple MacOS es híbrido por capas, UI Aqua más entorno de programación
Cocoa
● Microkernel Mach + partes BSD Unix + Módulos cargables
dinámicamente denominado kernel extensions o Kex

Fundamentos de sistemas operativos - Silberschatz 40


Estructura de macOS
graphical user interface
Aqua

application environments and services

Java Cocoa Quicktime BSD

kernel environment
BSD

Mach

I/O kit kernel extensions

Fundamentos de sistemas operativos - Silberschatz 41


iOS
■ SO móvil de Apple para iPhone y iPad
● Basado en macOS, con funcionalidades
específicas
● No corre aplicaciones de macOS nativamente
Cocoa Touch
4 Corre en diferentes arquitecturas de CPU
(ARM vs. Intel)
Media Services
● Cocoa Touch API Objective-C/Swift para el
desarrollo de aplicaciones Core Services
● Media services para gráficos, audio y video
● Core services provee soporte para cloud Core OS
computing, bases de datos
● Core OS, basado en el kernel de macOS

Fundamentos de sistemas operativos - Silberschatz 42


Android
■ Desarrollado por la Open Handset Alliance (principalmente Google)
● Open Source
■ Basado en el kernel de Linux pero con modificaciones
● Provee gestión de procesos, memoria, controladores de dispositivos
● Añade manejo de energía
■ El entorno de tiempo de ejecución incluye el conjunto central de librerías y
la máquina virtual Dalvik
● Aplicaciones desarrolladas en Java + API Android
4 Archivos de clase Java compilados a bytecode de Java que luego
se ejecutan en Dalvik VM
■ Las librerías incluyen frameworks para navegadores (webkit), bases de
datos (SQLite), multimedia, etc

Fundamentos de sistemas operativos - Silberschatz 43


Arquitectura de Android

Applications

Application Framework

Libraries Android runtime

SQLite openGL Core Libraries

surface media
Dalvik
manager framework
virtual machine
webkit libc

Linux kernel

Fundamentos de sistemas operativos - Silberschatz 44


Fin del capítulo 2

Fundamentos de sistemas operativos - Silberschatz

También podría gustarte