Fundamentos y Arquitectura de Sistemas Operativos
Enviado por Juan y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 464,14 KB
Conceptos básicos de sistemas operativos
En este apartado se presentan una serie de conceptos generales sobre sistemas operativos. El objetivo es recordar nociones fundamentales que permitan abordar los distintos problemas planteados a lo largo del libro. En primer lugar, se definen las funciones del sistema operativo para, a continuación, describir sus componentes básicos, así como los diversos tipos de organización que presenta. Por último, se explica cómo se produce la activación del sistema operativo y, concretamente, cómo se lleva a cabo una llamada al sistema.
1.1.1 Funciones del sistema operativo
Un sistema operativo (SO) es un programa encargado de simplificar el manejo y la utilización de la computadora, haciéndola segura y eficiente. Sus funciones clásicas se agrupan en tres categorías:
- Gestión de los recursos de la computadora.
- Ejecución de servicios para los programas.
- Ejecución de los mandatos de los usuarios.
Como gestor de recursos, el SO arbitra la asignación y uso de los mismos cuando varios programas compiten por ellos. Además, garantiza la protección entre programas y suministra información sobre el uso de los recursos.
Como máquina extendida, el SO ofrece un conjunto de servicios o llamadas al sistema. Estos servicios se clasifican en: ejecución de programas, operaciones de E/S, operaciones sobre archivos y tratamiento de errores.
Finalmente, el SO proporciona la interfaz de usuario a través del intérprete de mandatos o shell.
1.1.2 Componentes del sistema operativo
Se suele considerar que un sistema operativo está formado por tres capas: el núcleo, los servicios y el intérprete de mandatos (shell).
El núcleo interacciona directamente con el hardware, gestionando el procesador, las interrupciones y la memoria.
Figura 1.1. Componentes del sistema operativo.
Los servicios se agrupan según su funcionalidad:
- Gestión de procesos: Creación, planificación y destrucción de procesos.
- Gestión de memoria: Asignación y liberación de memoria.
- Gestión de E/S: Facilita el manejo de periféricos.
- Gestión de archivos y directorios: Mecanismos de comunicación y sincronización.
- Seguridad y protección: Garantiza la identidad y permisos de los usuarios.
1.1.3 Estructura del sistema operativo
- Sistemas monolíticos: Todos los componentes se integran en un único programa que ejecuta en un mismo espacio de direcciones y en modo núcleo.
- Sistemas por capas: Organización jerárquica donde cada capa ofrece una interfaz a la superior y utiliza los servicios de la inferior, favoreciendo la modularidad.
- Modelo Cliente-Servidor: Implementa la mayoría de funciones en modo usuario (servidores) y solo lo esencial en modo núcleo (micronúcleo), ofreciendo gran flexibilidad.
1.1.4 Activación del sistema operativo
El SO es un servidor a la espera de trabajo, que proviene de:
- Llamadas al sistema emitidas por programas.
- Interrupciones de periféricos.
- Condiciones de excepción o error de hardware.
Cuando un proceso solicita un servicio, utiliza una instrucción TRAP. En lenguajes de alto nivel, esto se realiza mediante llamadas a funciones de biblioteca que preparan los parámetros, ejecutan el TRAP y recogen la respuesta.
Figura 1.2. Pasos de la llamada al sistema operativo.
1.2 Ejercicios resueltos
Ejercicio 1.1
¿Cuáles son las principales funciones de un sistema operativo?
Solución: Gestión de recursos hardware (administración de procesos y seguridad), ejecución de servicios para programas (llamadas al sistema) y ejecución de mandatos de usuario (a través de shells).
Ejercicio 1.2
¿Qué diferencia existe entre un mandato y una llamada al sistema?
Solución: La llamada al sistema es la interfaz de programación (servicio directo del SO), mientras que el mandato es un programa de usuario que utiliza dichas llamadas para ofrecer servicios de alto nivel.
Ejercicio 1.3
¿Qué tipo de diseño tiene el sistema operativo LINUX?
Solución: Es un sistema monolítico, ya que todo su núcleo se ejecuta como un único proceso y permite el acceso a cualquier parte mediante llamadas a funciones.
Figura 1.4. Estructura de un sistema operativo monolítico.
Ejercicio 1.5
¿Qué técnica hardware tiene mayor influencia en la construcción de un SO?
Solución: El DMA (Acceso Directo a Memoria), ya que permite transferencias de datos sin intervención constante de la CPU, facilitando la multiprogramación.
Ejercicio 1.7
¿El intérprete de mandatos de UNIX es interno o externo?
Solución: Es externo (shell). Algunos mandatos son internos por necesidad funcional, pero la mayoría son programas independientes.
Figura 1.5. API del sistema operativo e intérprete de mandatos.
Ejercicio 1.12
¿Cómo se solicita una llamada al SO?
Solución: Mediante un mecanismo de interrupciones usando la instrucción TRAP.
Figura 1.6. Realización de una llamada al sistema.
Ejercicio 1.25
¿Qué ventajas tiene escribir un SO utilizando un lenguaje de alto nivel?
Solución: Principalmente la portabilidad, además de una mayor facilidad en el desarrollo, mantenimiento y depuración del código fuente"