top of page

Unidad 1 -  Conceptos Generales

1.1 Introducción a los sistemas operativos.



El objetivo fundamental de los sistemas operativos es gestionar y administrar eficientemente los recursos hardware, permitiendo que se ejecuten concurrentemente varios programas, sin que haya conflictos en el acceso de cada uno de ellos a cada uno de los recursos que necesite, y sin que ningún programa monopolice alguno de ellos.



Un sistema operativo es un programa (o conjunto de programas) de control que tiene por objeto facilitar el uso de la computadora y conseguir que ésta se utilice eficientemente.

Es un programa de control, ya que se encarga de gestionar y asignar los recursos hardware que requieren los programas. Pensemos en una computadora que es utilizada desde diversos terminales por varios usuarios. Los recursos hardware son: el procesador (CPU), la memoria principal, los discos, y otros periféricos. Obviamente, si varios usuarios están utilizando la misma Computadora, debe haber alguien o algo que asigne los recursos y evite los conflictos que puedan surgir cuando dos programas requieran los mismos elementos (la misma unidad de disco, o la impresora, por ejemplo). Esta es una de las funciones del sistema operativo. Además de esta función de asignar los recursos a cada programa, el sistema operativo se encarga de contabilizar de éstos, y de la seguridad

 1.2 Sistema informático y sistema operativo



Un sistema informático como todo sistema, es el conjunto de partes interrelacionadas, hardware, software y de recurso humano que permite almacenar y procesar información. El hardware incluye computadoras o cualquier tipo de dispositivo electrónico inteligente, que consisten en procesadores, memoria, sistemas de almacenamiento externo, etc. El software incluye al sistema operativo, firmware y aplicaciones, siendo especialmente importante los sistemas de gestión de bases de datos. Por último el soporte humano incluye al personal técnico que crean y mantienen el sistema (analistas, programadores, operarios, etc.) y a los usuarios que lo utilizan.  

1.3 Componentes de un sistema informático: sistema lógico, sistema físico y sistema humano. Aplicaciones y programas del sistema. Concepto de sistema operativo



Componente físico, que se corresponde a la materia física de la máquina. Los elementos físicos constituyen el hardware del Sistema Informático, y se encuentran distribuidos en el ordenador, los periféricos y el sistema de comunicaciones. Proporcionan la capacidad de proceso y la potencia de cálculo del sistema informático, así como la interfaz con el mundo exterior.



Componente lógico o software, que hace referencia a todo aquello que no es materia y que en términos coloquiales se ha considerado programación. Está constituido por los conjuntos de instrucciones escritas en lenguajes especiales y organizados en programas, que hacen que el sistema físico pueda trabajar realizando diferentes tareas sobre los datos (genéricos o específicos). El software se encuentra distribuido en el ordenador, los periféricos y el sistema de comunicaciones.



Componente humano, constituido por las personas que participan en la dirección, diseño, desarrollo, implantación y explotación de un sistema informático. Este componente tiene una gran importancia, como lo demuestra la significación que han alcanzado los temas relacionados con la interface de usuario, o el término amigable.

1.4 Objetivos de los sistemas operativos



El objetivo fundamental de los sistemas de computación es ejecutar los programas de los usuarios y facilitar la resolución de sus problemas. El hardware se construye con este fin, pero como este no es fácil de utilizar, se desarrollan programas de aplicación que requieren ciertas operaciones comunes. Otros objetivos son:



• Transformar el complejo hardware de una computadora a una máquina accesible al usuario.
• Lograr el mejor uso posible de los recursos.
• Hacer eficiente el uso del recurso.

1.5 El sistema operativo como administrador de recursos, máquina extendida, programa de control y entorno de operación y programación. Objetivos funcionales y criterios.



Un sistema informático tiene recursos como la memoria central, CPU, discos, impresoras y tiene usuarios que quieren usar esos recursos. El sistema operativo debe optimizar el uso de sus recursos entre los distintos usuarios para conseguir un máximo rendimiento y debe lograr que se compartan los recursos del sistema y los datos entre varios usuarios que trabajen simultáneamente. Funciones de los Sistemas Operativos.

• Aceptar todos los trabajos y conservarlos hasta su finalización.
• Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con el ordenador.
• Control de recursos: Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el    Mouse.

• Manejo de errores: Gestiona los errores de hardware y la pérdida de datos.
• Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien después).

• Protección: Evitar que las acciones de un usuario afecten el trabajo que está realizando otro usuario.
• Mulatices: Un usuario se puede conectar a otra máquina sin tener que estar cerca de ella.
• Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos.

1.6 Recorrido histórico. Tipos de sistemas informáticos.



Elementos y conceptos fundamentales de los sistemas informáticos.

• Informática: Ciencia que trata la información de manera automática.
• Ordenador: Máquina compuesta por elementos físicos, normalmente electrónicos, capaz de realizar tareas a gran velocidad y precisión siempre que las demás instrucciones y datos sean adecuados.
• Programa: Conjunto ordenados de instrucciones que se dan a un ordenador de manera que pueda dar unos resultados a partir de unos datos de entrada. (conjunto de instrucciones = programa.)
• Sistema informático: Según la ISO, un sistema operativo es aquél compuesto por equipos físicos, lógicos y de personal que realiza funciones de entrada, proceso, almacenamiento, salida y control con un fin de llevar a cabo una secuencia de operaciones con los dat
os.

1.7 Sistemas primitivos. Monitor residente. Procesamiento por lotes. La multiprogramación. Sistemas Interactivos: tiempo compartido. Sistemas de tiempo real. Informática personal. Sistemas paralelos. Sistemas distribuidos.



Los sistemas de cómputo primitivos corresponden a los primeros que aparecieron cuando la tecnología computacional estaba en sus inicios. Estos sistemas de cómputo con poco poder en el hardware funcionaban con un sistema operativo de arquitectura monolítica, pudiendo solo atender un programa y por lo tanto a un solo usuario a la vez. Estas primeras computadoras ocupaban mucho espacio físico y consumían mucha energía eléctrica, generando grandes cantidades de calor. Su buen funcionamiento también dependía de la temperatura del ambiente en el que operaban, por lo que generalmente tenían que ser colocadas en cuartos especiales, aislados y refrigeradores. Una computadora personal inicialmente era acompañada de un sistema operativo monolítico, también barato. El procesamiento, que es la forma en la que el sistema operativo atiende a los procesos en estas computadoras era monoprocesal, lo cual quiere decir que le dan su atención a un solo proceso completo a la vez.



  • Monitor residente.



Su funcionamiento era bastante simple, se limitaba a cargar los programas a memoria, leyéndolos de una cinta o de tarjetas perforadas, y ejecutarlos. El problema era encontrar una forma de optimizar el tiempo entre la retirada de un trabajo y el montaje del siguiente. Un monitor residente estaba compuesto por un cargador, un Intérprete de comandos y un Controlador (drivers) para el manejo de entrada/salida.



  • Procesamiento por lotes.



Se conoce como sistema por lotes (en inglés batch procesan), o modo batch, a la ejecución de un programa sin el control o supervisión directa del usuario (que se denomina procesamiento interactivo). Este tipo de programas se caracterizan porque su ejecución no precisa ningún tipo de interacción con el usuario.



Generalmente, este tipo de ejecución se utiliza en tareas repetitivas sobre grandes conjuntos de información, ya que sería tedioso y propenso a errores realizarlo manualmente. Un ejemplo sería el renderizado de los fotogramas de una película.



• Multiprogramación.



La mayoría de los sistemas operativos utilizan una técnica de gestión del procesador denominada multiprogramación, o una variante de ésta llamada tiempo compartido. Los primeros sistemas operativos gestionaban el procesador mediante otra técnica llamada monoprogramación (utilizada en los monitores de batch de flujo único). En este apartado comentaremos el por qué se evolucionó de la mono programación a la multiprogramación. Antes de entrar en esta discusión vamos a ver cómo se realizan las operaciones de entrada/salida (E/S), es decir, las operaciones que permiten la comunicación con los dispositivos de E/S.



• Sistemas interactivos o de tiempo compartido.



Se introdujeron para satisfacer las demandas de usuarios que necesitaban un tiempo de retorno rápido al eliminar los errores de sus programas. Requería el desarrollo de software de tiempo compartido, en donde cada usuario interactuaba directamente con el sistema de cómputo vía comandos introducidos a través de un terminal de tipo máquina de escribir. La retroalimentación al usuario es inmediata y el tiempo de respuesta se mide en minutos o segundos.

1.8 Estructura de computadoras y sistema operativo.



La estructura de una computadora representa un sistema que integra diferentes componentes organizados en diferentes niveles independientes unos de otro en cuanto a su estructura, pero conservando la interdependencia desde el nivel más alto hasta el nivel más bajo en torno a su funcionamiento. La estructura general de las computadoras considera la siguientes funciones:

  • El procesamiento de datos. Se encarga de transforma y dar tratamiento a los datos aplicando funciones básicas como son las aritméticas y las lógicas.

1.9  El sistema de entrada/salida. Eventos



1.10 Sistema de interrupciones. Interrupciones vectorizadas. Acceso directo a memoria (DMA). Excepciones e interrupciones software



Una interrupción es un mecanismo que permite ejecutar un bloque de instrucciones interrumpiendo la ejecución de un programa, y luego restablecer la ejecución del mismo sin afectarlo directamente. De este modo un programa puede ser interrumpido temporalmente para atender alguna necesidad urgente del computador y luego continuar su ejecución como si nada hubiera pasado.



Interrupciones vectorizadas



• Disponen de dos líneas de interrupción, una de petición y otra de reconocimiento.
• El vector de interrupción es generado por el dispositivo que produce la interrupción.
• Utiliza un mecanismo de daisy chaining en la transmisión de la señal de reconocimiento.


El proceso de interrupción se desarrolla en los siguientes pasos:



• El dispositivo de E/S genera la petición de interrupción activando INT.
• La CPU la reconoce activando RINT.
• Los dispositivos de E/S que reciben RINT y no han interrumpido, la transmiten al siguiente elemento de la cadena.
• El dispositivo de E/S que recibe RINT y ha realizado la petición coloca el vector de interrupción n en el bus de datos.
• A partir del vector n la CPU bifurca a la rutina de tratamiento correspondiente al dispositivo.



Acceso directo a memoria (DMA)



• El acceso directo a memoria (DMA, del inglés direct memory access) permite a cierto tipo de componentes de una computadora acceder a la memoria del sistema para leer o escribir independientemente de la unidad central de procesamiento (CPU) principal. Muchos sistemas hardware utilizan DMA, incluyendo controladores de unidades de disco, tarjetas gráficas y tarjetas de sonido. DMA es una característica esencial en todos los ordenadores modernos, ya que permite a dispositivos de diferentes velocidades comunicarse sin someter a la CPU a una carga masiva de interrupciones.

1.11 Jerarquía de memorias

Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias. Los puntos básicos relacionados con la memoria pueden resumirse en:

• Cantidad
• Velocidad
• Coste

1.12 Concepto y ejemplos de jerarquía de memorias. Principio de caché. Consistencia y coherencia.


La creación de a lo menos tres niveles o jerarquías diferentes de memoria. 



• Memoria caché: Es una memoria muy rápida de poca capacidad y que se ubica generalmente muy cerca del procesador (actualmente se ubican en el interior del propio procesador). A veces encontramos más de un nivel de Cache. Tiene como objetivo aumentar la rapidez de acceso a los datos de memoria, es transparente para el usuario. Se dice que es transparente porque está pero no se ve. Por ejemplo si un procesador ejecuta una instrucción cada 2 o 3 ns resulta para el demasiado tiempo de espera si la memoria demora 10 ms en llevar la información.



• Memoria Principal: Esta memoria es de mayor capacidad, pero más lenta que la memoria CACHE



• Disco Duro: El disco duro no es considerado como memoria, sino más bien se le considera como un almacén de información.



1.13 Elementos de protección.


Sin necesidad de herramientas adicionales y sin hacer hábito de ciertas precauciones, puedes exponer tu sistema operativo (y por lo tanto tus datos) a varios tipos de amenazas. La protección de tu sistema operativo consiste en colocar los instrumentos y los comportamientos en el lugar correcto.

1.14 Necesidad de protección en el sistema operativo. Instrucciones privilegiadas. Modo dual de operación. Implementación en hardware.


A medida que ha aumentado la complejidad de los sistemas operativos, sobre todo al trata de ofrecer interfaces de más alto nivel con el usuario, lo objetivos de la protección se han vuelto mucho más refinados. En esta refinación observamos que los diseñadores de los diseñadores de los sistemas de protección se han apoyado mucho en ideas que se originaron en los lenguajes de programación y especialmente en los conceptos de tipos de datos abstractos y objetos. Los sistemas de protección ahora se ocupan no sólo de la identidad de un recurso al cual se intenta acceder, sino también de la naturaleza funcional de ese acceso. En los sistemas de protección más nuevos, el interés en la función que se invocará se extiende más allá de un conjunto de funciones definidas por el sistema, como los métodos de acceso a archivos estándar, para incluir funciones que también podrían ser definidas por el usuario.



Las políticas para el uso de recursos también podrían variar, dependiendo de la aplicación, y podrían cambiar con el tiempo. Por estas razones, la protección ya no puede considerarse como un asunto que sólo concierne al diseñador de un sistema operativo; también debe estar disponible como herramienta que el diseñador de aplicaciones pueda usar para proteger los recursos de un subsistema de aplicación contra intervenciones o errores.



1.15 Estructura y funciones de los sistemas operativos.


También llamados sistemas monolíticos. Este tipo de organización es con mucho la mas común; bien podría recibir el subtitulo de "el gran embrollo". La estructura consiste en que no existe estructura alguna. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede llamar a los demás cada vez que así lo requiera. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto cálculo útil para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parámetros en lugares bien definidos, como en los registros o en la pila, para después ejecutar una instrucción especial de trampa de nombre "llamada al núcleo" o "llamada al supervisor".


Esta instrucción cambia la máquina del modo usuario al modo núcleo y transfiere el control al sistema operativo, lo que se muestra en el evento. El sistema operativo examina entonces los parámetros de la llamada, para determinar cual de ellas se desea realizar, como se muestra en el evento. A continuación, el sistema operativo analiza una tabla que contiene en la entrada k un apuntador al procedimiento que realiza la k-esima llamada al sistema. Esta operación que se muestra en (3), identifica el procedimiento de servicio, al cual se llama. Por ultimo, la llamada al sistema termina y el control regresa al programa del usuario.



1.16 Componentes funcionales de un sistema operativo.


Funciones del Sistema Operativo Las funciones clásicas del sistema operativo se pueden agrupar en las tres categorías siguientes: Gestión de los recursos de la computadora. Ejecución de servicios para los programas. Ejecución de los mandatos de los usuarios.


En una computadora actual suelen coexistir varios programas, del mismo o de varios usuarios, ejecutándose simultáneamente. Estos programas compiten por los recursos de la computadora, siendo el sistema operativo el encargado de arbitrar su asignación y uso. Como complemento a la gestión de recursos, el sistema operativo ha de garantizar la protección de unos programas frente a otros y ha de suministrar información sobre el uso que se hace de los recursos. El Sistema Operativo como Gestor de Recursos


Un usuario es una persona autorizada para utilizar un sistema informático. El usuario se autentica mediante su nombre de cuenta y su contraseña o password. Concepto de Usuario y de Grupo de Usuario


El sistema operativo está formado por una serie de componentes especializados en determinadas funciones. Cada sistema operativo estructura estos componentes de forma distinta. En esta sección se describen en primer lugar los distintos componentes que conforman un sistema operativo.



1.17 Gestión de procesos. Gestión de la memoria. Gestión de la entrada/salida. Sistemas de ficheros. Interfaces de usuario y de programación. Programas del sistema.



Gestión de procesos. Un proceso es simplemente, un programa en ejecución que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:



              • Crear y destruir procesos
              • Parar y reanudar procesos
              • Ofrecer mecanismos para que los procesos puedan comunicarse y se sincronicen



Gestión de la memoria principal. La memoria es una gran tabla de palabras o bytes que se referencian cada una mediante una dirección única. Este almacén de datos de rápido acceso es compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido ante fallos del sistema. El SO es el responsable de:



              • Conocer qué partes de la memoria están siendo utilizadas y por quién
              • Decidir qué procesos se cargarán en memoria cuando haya espacio disponible
              • Asignar y reclamar espacio de memoria cuando sea necesario


Gestión de Entradas y Salidas. Esto representa los intercambios de información desde el procesador o incluso al acceso directo de la memoria. Esta actividad de entrada y salida se realiza gracias a la relación que hay entre el sistema operativo con los diversos periféricos, así administrar y controlar  los estados y recursos que tienen cada uno de estos mediante los controladores de dispositivos.



Sistemas de ficheros. Los sistemas de archivos o ficheros, estructuran la información guardada en una unidad de almacenamiento (normalmente un disco duro de una computadora), que luego será representada ya sea textual o gráficamente utilizando un gestor de archivos. La mayoría de los sistemas operativos manejan su propio sistema de archivos.



Programas de sistema. Son aplicaciones de utilidad que se suministran con el SO pero no forman parte de él. Ofrecen un entorno útil para el desarrollo y ejecución de programas, siendo algunas de las tareas que realizan:



                  • Manipulación y modificación de archivos.
                  • Información del estado del sistema.
                  • Soporte a lenguajes de programación.
                  • Comunicaciones.



1.18 El núcleo del sistema operativo


 

El núcleo del sistema operativo, también llamado kernel(núcleo en alemán) es aquella parte de un sistema operativo que interactúa de forma directa con el hardware de una máquina. Entre las funciones principales del kernel se encuentran:

                  • La gestión de memoria.
                  • La administración del sistema de archivos.
                  • La administración de servicios de entrada/salida.
                  • La asignación de recursos entre los usuarios.

1.19 Interfaz con los servicios del sistema


La forma en que se realiza una llamada al sistema consiste en colocar una serie de parámetros en un lugar específico (como los registros del procesador), para después ejecutar una instrucción del lenguaje máquina del procesador denominada trap (en castellano, trampa). La ejecución de esta instrucción máquina hace que el hardware guarde el contador de programa y la palabra de estado del procesador (PSW, Processor Status Word) en un lugar seguro de la memoria, cargándose un nuevo contador de programa y una nueva PSW. Este nuevo contador de programa contiene una dirección de memoria donde reside una parte (un programa) del sistema operativo, el cual se encarga de llevar a cabo el servicio solicitado. Cuando el sistema operativo finaliza el servicio, coloca un código de estado en un registro para indicar si hubo éxito o fracaso, y ejecuta una instrucción return from trap, esta instrucción provoca que el hardware restituya el contador de programa y la PSW del programa que realizó la llamada al sistema, prosiguiéndose así su ejecución.



1.20 El sistema operativo como programa guiado por eventos. Las llamadas al sistema. Implementación.


Cuando hablamos de eventos nos referimos a la forma en la que la KVM se comunica con el sistema operativo. Es decir la forma en la que la maquina virtual es capaz de capturar los eventos que le lleguen del sistema operativo y gestionarlos. De esta forma la KVM es capaz de responder ante acciones que recibe del sistema operativo como por ejemplo la apertura de un fichero, la pulsación de una tecla en el dispositivo de entrada estándar. El creador de un programa dirigido por eventos debe definir los eventos que manejarán su programa y las acciones que se realizarán al producirse cada uno de ellos, lo que se conoce como el administrador de evento. Los eventos soportados estarán determinados por el lenguaje de programación utilizado, por el sistema operativo e incluso por eventos creados por el mismo programador.



Las llamadas al sistema comúnmente usan una instrucción especial de la CPU que causa que el procesador transfiera el control a un código privilegiado . previamente especificado por el mismo código. Esto permite al código privilegiado especificar donde va a ser conectado así como el estado del procesador. Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso del inglés Process Control Block), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.



1.21 Diseño de sistemas operativos.



1.22 Principios fundamentales: Principio de abstracción. Principio de caché. Políticas y mecanismos



1.23 Modelos de diseño: Sistemas monolíticos. Sistemas jerárquicos. Modelo de máquina virtual.  El modelo cliente/servidor. Micro-núcleos



Sistemas monolíticos. Este enfoque, que es por mucho la organización más común, bien podría subtitularse “El Gran Desorden”. La estructura consiste en que no hay estructura. El sistema operativo se escribe como una colección de procedimientos, cada uno de los cuales puede invocar a cualquiera de los otros cuando necesita hacerlo. Cuando se usa esta técnica, cada procedimiento del sistema tiene una interfaz bien definida en términos de parámetros y resultados, y cada uno está en libertad de invocar a cualquier otro, si este último realiza algún cálculo útil que el primero necesita.

• Modelo de máquina virtual. El corazón del sistema, conocido como monitor de máquina virtual, se ejecuta en el hardware solo y realiza la multiprogramación, proporcionando no una, sino varias máquinas virtuales a la siguiente capa superior. Sin embargo, a diferencia de otros sistemas operativos, estas máquinas virtuales no son máquinas extendidas, con archivos y otras características bonitas; más bien, son copias exactas del hardware solo, incluido el modo de kernel/usuario, E/S, interrupciones y todo lo demás que la máquina real tiene.

Micronúcleo. Un micronúcleo es un tipo de núcleo de un sistema operativo que provee un conjunto de primitivas o llamadas mínimas al sistema para implementar servicios básicos como espacios de direcciones, comunicación entre procesos y planificación básica. Todos los otros servicios (gestión de memoria, sistema de archivos, operaciones de E/S, etc.), que en general son provistos por el núcleo, se ejecutan como procesos servidores en espacio de usuario.

bottom of page