Sie sind auf Seite 1von 55

UNIVERSIDAD NACIONAL DEL ALTIPLANO PUNO

Facultad de Ingeniería Mecánica, Electrónica y Sistemas


Escuela Profesional de Ingeniería de Sistemas

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

Muchos sistemas ahora incluyen interfaces CLI y GUI


◦ Microsoft Windows es GUI con shell CLI "comando"
◦ Apple Mac OS X es la interfaz gráfica de usuario "Aqua" con kernel UNIX debajo y conchas disponibles
◦ Unix y Linux tienen CLI con interfaces GUI opcionales (CDE, KDE, GNOME)
Interfaces de pantalla táctil
Los dispositivos de pantalla táctil requieren
nuevas interfaces
◦ Mouse no es posible o no deseado
◦ Acciones y selección basadas en gestos
◦ Teclado virtual para entrada de texto

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

Tres métodos generales utilizados para pasar parámetros al sistema operativo


◦ Lo más simple: pasar los parámetros en los registros
◦ En algunos casos, pueden haber más parámetros que registros
◦ Parámetros almacenados en un bloque, o tabla, en la memoria y dirección del bloque pasado como un
parámetro en un registro
◦ Este enfoque adoptado por Linux y Solaris
◦ Parámetros colocados, o empujados, en la pila por el programa y extraídos de la pila por el sistema
operativo
◦ Los métodos de bloqueo y pila no limitan el número o la longitud de los parámetros que se pasan
Parámetro que pasa a través de tabla
Tipos de llamadas al sistema
Control de procesos
◦ crear proceso, finalizar proceso
◦ fin, abortar
◦ cargar, ejecutar
◦ obtener atributos de proceso, establecer atributos de proceso
◦ espera el tiempo
◦ evento de espera, evento de señal
◦ asignar y liberar memoria
◦ Volcar la memoria si el error
◦ Depurador para determinar errores, ejecución en un solo paso
◦ Bloqueos para gestionar el acceso a datos compartidos entre procesos
Tipos de llamadas al sistema
Gestión de archivos
◦ crear archivo, borrar archivo
◦ abrir, cerrar archivo
◦ leer, escribir, reposicionar
◦ obtener y establecer atributos de archivo

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

Espacio de memoria individual


Carga el programa en la memoria,
sobrescribiendo todo menos el kernel
Salida del programa -> shell recargado

At system startup running a program


Example: FreeBSD
Variante de Unix
Multitarea
Inicio de sesión de usuario -> invocar elección de
shell del usuario
Shell ejecuta la llamada al sistema fork () para
crear un proceso
◦ Ejecuta exec () para cargar el programa en proceso
◦ Shell espera que el proceso finalice o continúe con
los comandos del usuario
El proceso sale con:
◦ código = 0 - sin error
◦ código> 0 - código de error
Programas del sistema
Los programas del sistema proporcionan un entorno conveniente para el desarrollo y la
ejecución del programa. Se pueden dividir en:
◦ Manipulación de archivos
◦ La información de estado a veces se almacena en una modificación de archivo
◦ Soporte de lenguaje de programación
◦ Carga y ejecución del programa
◦ Comunicaciones
◦ Servicios de fondo
◦ Programas de aplicación

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

La estructura interna de diferentes sistemas operativos puede variar ampliamente

Comience el diseño definiendo objetivos y especificaciones

Afectado por la elección del hardware, tipo de sistema

Objetivos del usuario y objetivos del sistema


◦ Objetivos del usuario: el sistema operativo debe ser cómodo de usar, fácil de aprender, confiable, seguro y rápido
◦ Objetivos del sistema: el sistema operativo debe ser fácil de diseñar, implementar y mantener, así como también flexible,
confiable, libre de errores y eficiente.
Diseño e implementación del sistema
operativo
Principio importante para separar
◦ Política: ¿Qué se hará? ? Mecanismo: ¿Cómo hacerlo?

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 ++

En realidad, generalmente una mezcla de idiomas


◦ Niveles más bajos en el montaje
◦ Cuerpo principal en C
◦ Programas de sistemas en C, C ++, lenguajes de scripting como PERL, Python, scripts de shell

Más lenguaje de alto nivel más fácil de transferir a otro hardware


◦ Pero más lento

La emulación puede permitir que un sistema operativo se ejecute en hardware no nativo


Estructura del sistema operativo
SO de propósito general es un programa muy grande
Varias formas de estructurar los
◦ Estructura simple - MS-DOS
◦ Más complejo - UNIX
◦ Por capas - una abstracción
◦ Microkernel –Mach
Estructura simple -- MS-DOS
MS-DOS: escrito para proporcionar la mayor
funcionalidad en el menor espacio
◦ No dividido en módulos
◦ Aunque MS-DOS tiene cierta estructura, sus
interfaces y niveles de funcionalidad no están
bien separados
Estructura no simple - UNIX
UNIX: limitado por la funcionalidad del hardware, el sistema operativo original de UNIX tenía
una estructuración limitada. El sistema operativo UNIX consta de dos partes separables
◦ Programas de sistemas
◦ El kernel
◦ Consiste en todo lo que está debajo de la interfaz de llamada del sistema y encima del hardware físico
◦ Proporciona el sistema de archivos, programación de CPU, administración de memoria y otras funciones del sistema operativo; una
gran cantidad de funciones para un nivel
Estructura del sistema UNIX tradicional
Más allá de lo simple pero no completamente en capas
Enfoque en capas
El sistema operativo se divide en varias capas
(niveles), cada una construida en la parte
superior de las 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 modo que cada una use funciones
(operaciones) y servicios de solo capas de nivel
inferior
Estructura del sistema Microkernel
Se mueve tanto desde el kernel al espacio de usuario
Ejemplo de Mach de microkernel
◦ Mac OS X kernel (Darwin) parcialmente basado en Mach
La comunicación se lleva a cabo entre los módulos del usuario mediante el envío de mensajes
Beneficios:
◦ Es más fácil extender un microkernel
◦ Más fácil de portar el sistema operativo a nuevas arquitecturas
◦ Más confiable (menos código se ejecuta en modo kernel)
◦ Más seguro
Detrimentos:
◦ La sobrecarga de rendimiento del espacio de usuario para la comunicación del espacio del núcleo
Estructura del sistema Microkernel
Application File Device user
Program System Driver mode

messages messages

Interprocess memory CPU kernel


Communication managment scheduling mode

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

En general, similar a las capas, pero con más flexible


◦ Linux, Solaris, etc.
Enfoque modular de Solaris
Sistemas híbridos
La mayoría de los sistemas operativos modernos en realidad no son un modelo puro
◦ Híbrido combina múltiples enfoques para abordar el rendimiento, la seguridad y las necesidades de uso
◦ Linux y kernels de Solaris en el espacio de direcciones del kernel, tan monolítico, más modular para la
carga dinámica de la funcionalidad
◦ Windows principalmente monolítico, además de microkernel para diferentes personalidades del
subsistema

Apple Mac OS X híbrido, en capas, entorno de programación Aqua UI plus Cocoa


◦ A continuación se muestra el kernel formado por piezas Mach microkernel y BSD Unix, más kit de E / S y
módulos dinámicamente cargables (llamados extensiones de kernel)
Estructura Mac OS X
graphical user interface
Aqua

application environments and services

Java Cocoa Quicktime BSD

kernel environment
BSD

Mach

I/O kit kernel extensions


iOS
Sistema operativo móvil Apple para iPhone,
iPad
◦ Estructurado en Mac OS X, funcionalidad
añadida
◦ No ejecuta aplicaciones OS X de forma nativa
◦ También se ejecuta en diferentes arquitecturas de CPU
(ARM vs. Intel)
◦ API Cocoa Touch Objective-C para desarrollar
aplicaciones
◦ Capa de servicios multimedia para gráficos,
audio y video
◦ Los servicios principales proporcionan
computación en la nube, bases de datos
◦ Sistema operativo principal, basado en el kernel
de Mac OS X
Android
Desarrollado por Open Handset Alliance (principalmente Google)
◦ Fuente abierta
Pila similar a IOS
Basado en kernel de Linux pero modificado
◦ Proporciona administración de procesos, memoria y controladores de dispositivo
◦ Agrega administración de energía
El entorno de tiempo de ejecución incluye el conjunto principal de bibliotecas y la máquina
virtual Dalvik
◦ Aplicaciones desarrolladas en Java plus Android API
◦ Los archivos de clase de Java compilados a bytecode de Java se convierten en ejecutables que se ejecutan en Dalvik VM

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

Libraries Android runtime

SQLite openGL Core Libraries

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

Das könnte Ihnen auch gefallen