Beruflich Dokumente
Kultur Dokumente
Sistemas Operativos
ING. ALODIA FLORES ARNAO
1
Capítulo 2: Estructuras
de un Sistema Operativo
2
Capítulo 2: Estructuras de un Sistema
Operativo
1. Servicios del sistema operativo
2. Interfaz de usuario del sistema operativo
3. Llamadas del sistema
4. Tipos de llamadas al sistema
5. Programas del sistema
6. Diseño e implementación del sistema operativo
7. Estructura del sistema operativo
8. Depuración del sistema operativo
9. Generación del sistema operativo
10. Arranque del sistema
Objetivos
1. Describir los servicios que un sistema operativo proporciona a usuarios, procesos y otros
sistemas
2. Discutir las diversas formas de estructurar un sistema operativo
3. Explicar cómo están instalados y personalizados los sistemas operativos y cómo arrancan
Servicios del sistema operativo
Los sistemas operativos proporcionan un entorno para la ejecución de programas y servicios
para programas y usuarios
Un conjunto de servicios del sistema operativo proporciona funciones que son útiles para el
usuario:
◦ Interfaz de usuario: casi todos los sistemas operativos tienen una interfaz de usuario (UI).
◦ Varía entre Línea de comandos (CLI), Interfaz de usuario de gráficos (GUI), Procesamiento en Lote
◦ Ejecución del programa: el sistema debe poder cargar un programa en la memoria y ejecutar ese
programa, terminar la ejecución, ya sea de forma normal o anormal (indicando error).
◦ Operaciones de E / S: un programa en ejecución puede requerir E / S, que puede involucrar un archivo o
un dispositivo de E / S
Servicios del sistema operativo (Cont.)
Un conjunto de servicios del sistema operativo proporciona funciones que son útiles para el
usuario (Cont.):
◦ Manipulación del sistema de archivos: el sistema de archivos es de particular interés. Los programas
necesitan leer y escribir archivos y directorios, crearlos y eliminarlos, buscarlos, listar información de
archivos, administración de permisos.
◦ Comunicaciones: los procesos pueden intercambiar información en la misma computadora o entre
computadoras a través de una red
◦ Las comunicaciones pueden ser a través de la memoria compartida o mediante el envío de mensajes (paquetes movidos por el
sistema operativo)
◦ Detección de errores: el sistema operativo debe estar al tanto de posibles errores
◦ Puede ocurrir en la CPU y el hardware de la memoria, en dispositivos de E / S, en el programa de usuario
◦ Para cada tipo de error, el sistema operativo debe tomar las medidas adecuadas para garantizar una informática correcta y
consistente
◦ Las instalaciones de depuración pueden mejorar en gran medida las habilidades del usuario y del programador para usar
eficientemente el sistema
Servicios del sistema operativo (Cont.)
Existe otro conjunto de funciones del sistema operativo para garantizar la operación eficiente
del sistema a través del intercambio de recursos
◦ Asignación de recursos: cuando hay varios usuarios o múltiples trabajos que se ejecutan
simultáneamente, se deben asignar recursos a cada uno de ellos
◦ Muchos tipos de recursos: ciclos de CPU, memoria principal, almacenamiento de archivos, dispositivos de E/S.
◦ Trazabilidad: para realizar un seguimiento de qué usuarios usan qué cantidad y qué tipos de recursos
informáticos
◦ Protección y seguridad: los propietarios de la información almacenada en un sistema de computadora
multiusuario o en red pueden querer controlar el uso de esa información, los procesos concurrentes no
deberían interferir entre sí.
◦ La protección implica garantizar que todo el acceso a los recursos del sistema esté controlado
◦ La seguridad del sistema desde fuera requiere autenticación de usuario, se extiende a la defensa de dispositivos de E / S externos
frente a intentos de acceso no válidos
Una vista de los servicios del sistema
operativo
Interfaz del sistema operativo del usuario
- CLI
CLI o intérprete de comandos, permite la entrada directa de comandos
◦ A veces implementado en kernel, a veces por programa de sistema
◦ A veces, implementados en diversas modalidades - shells
◦ Principalmente obtiene un comando del usuario y lo ejecuta
◦ A veces tiene comandos incorporados, a veces solo nombres de programas
◦ Si esto último, agregar nuevas características no requiere modificación de Shell
Intérprete de comando Bourne Shell
Interfaz del sistema operativo del usuario
- GUI
Metáfora de Interfaz de escritorio fácil de usar:
◦ Por lo general, mouse, teclado y monitor
◦ Los iconos representan archivos, programas, acciones, etc.
◦ Varios botones del mouse sobre objetos en la interfaz causan varias acciones (proporcionar
información, opciones, ejecutar la función, abrir el directorio (conocido como una carpeta))
◦ Inventado en Xerox PARC
Comandos de voz.
La GUI de Mac OS X
Llamadas del sistema
Interfaz de programación para los servicios proporcionados por el sistema operativo
Normalmente escrito en un lenguaje de alto nivel (C o C ++)
Mayormente se acceden por programas a través de una Interfaz de Programación de
Aplicaciones (API) de alto nivel en lugar de a un uso directo de llamadas del sistema
Las tres API más comunes son API Win32 para Windows, API POSIX para sistemas basados en
POSIX (incluidas virtualmente todas las versiones de UNIX, Linux y Mac OS X) y API Java para la
máquina virtual Java (JVM)
Ejemplo de llamadas al sistema
Secuencia de llamadas del sistema para copiar el contenido de un archivo a otro archivo
Ejemplo de API estándar
Implementación de llamada al sistema
Por lo general, un número asociado con cada llamada al sistema
◦ La interfaz de llamada al sistema mantiene una tabla indexada de acuerdo con estos números
La interfaz de llamada del sistema invoca la llamada al sistema prevista en el núcleo del sistema
operativo y devuelve el estado de la llamada al sistema y cualquier valor de retorno
La persona que llama no necesita saber cómo se implementa la llamada al sistema
◦ Solo necesita obedecer la API y entender lo qué sistema operativo dará como resultado de la llamada
◦ La mayoría de los detalles de la interfaz del sistema operativo oculta de programador por API
◦ Administrado por la biblioteca de soporte en tiempo de ejecución (conjunto de funciones integradas en bibliotecas incluidas con el
compilador)
API – Llamada de Sistema – relación con
el SO
Paso de parámetros de llamada al
sistema
A menudo, se requiere más información que simplemente la identidad de la llamada al sistema
deseada
◦ El tipo exacto y la cantidad de información varían según el sistema operativo y la llamada
Gestión de dispositivos
◦ dispositivo de solicitud, dispositivo de liberación
◦ leer, escribir, reposicionar
◦ obtener atributos del dispositivo, establecer atributos del dispositivo
◦ conectar o desconectar dispositivos lógicamente
Tipos de llamadas al sistema (Cont.)
Mantenimiento de la información
◦ obtener hora o fecha, configurar la hora o la fecha
◦ obtener datos del sistema, establecer datos del sistema
◦ obtener y establecer atributos de proceso, archivo o dispositivo
Comunicaciones
◦ crear, eliminar conexión de comunicación
◦ enviar, recibir mensajes si el mensaje pasa el modelo al nombre de host o al nombre del proceso
◦ De cliente a servidor
◦ Modelo de memoria compartida crear y obtener acceso a regiones de memoria
◦ información de estado de transferencia
◦ adjuntar y separar dispositivos remotos
Tipos de llamadas al sistema (Cont.)
Protección
◦ Controlar el acceso a los recursos
◦ Obtener y configurar permisos
◦ Permitir y denegar acceso de usuario
Ejemplos de llamadas al sistema de
Windows y Unix
Ejemplo de biblioteca estándar C
Programa C que invoca la llamada a la
biblioteca printf (), que llama a la llamada al
sistema write ()
Ejemplo: MS-DOS
Monotarea
Shell invocado cuando el sistema arranca
Método simple para ejecutar el programa
◦ Sin proceso creado
La mayoría de los usuarios ven el sistema de operación definido por los programas del sistema,
no por las llamadas al sistema.
Programas del sistema (cont.)
Proporcionar un entorno conveniente para el desarrollo y la ejecución de programas
◦ Algunos de ellos son simplemente interfaces de usuario para llamadas al sistema; otros son
considerablemente más complejos
Administración de archivos: crea, elimina, copia, renombra, imprime, descarga, lista y generalmente
manipula archivos y directorios
Información de estado
◦ Algunos piden información al sistema: fecha, hora, cantidad de memoria disponible, espacio en disco,
cantidad de usuarios
◦ Otros proporcionan información detallada sobre el rendimiento, el registro y la depuración
◦ Normalmente, estos programas formatean e imprimen la salida a la terminal u otros dispositivos de salida
◦ Algunos sistemas implementan un registro: se usa para almacenar y recuperar información de configuración
Programas del sistema (cont.)
Modificación de archivo
◦ Editores de texto para crear y modificar archivos
◦ Comandos especiales para buscar contenidos de archivos o realizar transformaciones del texto
Compatibilidad con el lenguaje de programación: a veces se proporcionan compiladores,
ensambladores, depuradores e intérpretes
Carga y ejecución de programas: cargadores absolutos, cargadores reubicables, editores de
enlaces y cargadores superpuestos, sistemas de depuración para lenguaje de máquinas y de
nivel superior
Comunicaciones: proporcione el mecanismo para crear conexiones virtuales entre procesos,
usuarios y sistemas informáticos.
◦ Permitir a los usuarios enviar mensajes a las pantallas de los demás, explorar páginas web, enviar
mensajes de correo electrónico, iniciar sesión de forma remota, transferir archivos de una máquina a
otra
Programas del sistema (cont.)
Servicios de fondo
◦ Lanzamiento en el momento del arranque
◦ Algunos para el arranque del sistema, luego terminan
◦ Algunos desde el arranque del sistema hasta el apagado
◦ Proporcionar instalaciones como comprobación de discos, programación de procesos, registro de errores,
impresión
◦ Ejecutar en el contexto del usuario, no en el contexto del kernel
◦ Conocidos como servicios, subsistemas, daemons
Programas de aplicación
◦ No pertenece al sistema
◦ Ejecutado por usuarios
◦ Normalmente no se considera parte del sistema operativo
◦ Lanzado por línea de comando, clic con el mouse, deslizamiento con el dedo
Diseño e implementación del sistema
operativo
El diseño y la implementación del sistema operativo no son "solucionables", pero algunos enfoques han
demostrado ser exitosos
Los mecanismos determinan cómo hacer algo, las políticas deciden qué se hará
La separación de la política del mecanismo es un principio muy importante, que permite la
máxima flexibilidad si las decisiones de política se van a cambiar más adelante (ejemplo,
temporizador)
Especificar y diseñar un sistema operativo es una tarea altamente creativa de ingeniería de
software
Implementación
Mucha variación
◦ Sistemas operativos tempranos en lenguaje ensamblador
◦ Luego, lenguajes de programación del sistema como Algol, PL / 1
◦ Ahora C, C ++
messages messages
microkernel
hardware
Módulos
Muchos sistemas operativos modernos implementan módulos de kernel cargables
◦ Utiliza un enfoque orientado a objetos
◦ Cada componente central está separado
◦ Cada uno habla con los demás sobre interfaces conocidas
◦ Cada uno es cargable según sea necesario dentro del kernel
kernel environment
BSD
Mach
Las bibliotecas incluyen marcos para el navegador web (webkit), base de datos (SQLite),
multimedia, libc más pequeña
Arquitectura de Android
Applications
Application Framework
surface media
Dalvik
manager framework
virtual machine
webkit libc
Linux kernel
Depuración del sistema operativo
La depuración es encontrar y corregir errores o errores
SO genera archivos de registro que contienen información de error
La falla de una aplicación puede generar un archivo de volcado del núcleo que capture la memoria del
proceso
La falla del sistema operativo puede generar un archivo de volcado de fallo que contiene memoria del
kernel
Más allá de los bloqueos, la optimización del rendimiento puede optimizar el rendimiento del sistema
◦ A veces, utilizando listas de seguimiento de actividades, registradas para el análisis
◦ El perfilado es una muestra periódica del puntero de instrucción para buscar tendencias estadísticas
La ley de Kernighan: "La depuración es el doble de difícil que escribir el código en primer lugar. Por lo
tanto, si escribe el código de la manera más inteligente posible, por definición, no es lo
suficientemente inteligente como para depurarlo ".
La optimización del rendimiento
Mejore el rendimiento al eliminar los cuellos
de botella
El sistema operativo debe proporcionar
medios para computar y mostrar medidas del
comportamiento del sistema
Por ejemplo, el programa "superior" o el
Administrador de tareas de Windows
DTrace
La herramienta DTrace en Solaris,
FreeBSD, Mac OS X permite
instrumentación en vivo en sistemas de
producción
Las sondas se disparan cuando el
código se ejecuta dentro de un
proveedor, capturando los datos de
estado y enviándolos a los
consumidores de esas sondas.
Ejemplo de seguimiento de la llamada
al sistema XEventsQueued desde la
biblioteca libc al kernel y viceversa
Dtrace (Cont.)
Código de DTrace para registrar la cantidad de tiempo
que cada proceso con el ID de usuario 101 se
encuentra en modo de ejecución (en la CPU) en
nanosegundos
Generación del sistema operativo
Los sistemas operativos están diseñados para funcionar en cualquiera de una clase de máquinas;
el sistema debe estar configurado para cada sitio informático específico
El programa SYSGEN obtiene información sobre la configuración específica del sistema de
hardware
◦ Se utiliza para compilar kernel compilado específico del sistema o sintonizado con el sistema
◦ Puede un código general más eficiente que un núcleo general
Arranque del sistema
Cuando la energía se inicializa en el sistema, la ejecución comienza en una ubicación de
memoria fija
◦ ROM de firmware utilizada para mantener el código inicial de arranque
El sistema operativo debe estar disponible para el hardware para que el hardware pueda
iniciarlo
◦ Una pequeña porción de código: cargador de arranque, almacenado en ROM o EEPROM, localiza el
kernel, lo carga en la memoria y lo inicia
◦ A veces, el proceso de dos pasos donde el bloque de arranque en una ubicación fija se carga con el
código ROM, que carga el cargador de arranque desde el disco
El cargador de arranque común, GRUB, permite la selección de kernel desde múltiples discos,
versiones, opciones de kernel
Cargas del kernel y el sistema se está ejecutando