Sistemas Operativos: Evolución, Arquitectura y Gestión de Procesos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 8,56 KB
Un sistema operativo (SO) es un conjunto de instrucciones que posibilita el inicio de un sistema de procesamiento. La idea es desvincular al usuario de las tareas a llevar a cabo en las instrucciones de bajo nivel, presentando a dicho usuario una interfaz más amigable.
El hardware y el software se iniciaron en forma conjunta, pero por lo general, el software siempre va más adelantado.
Evolución de los Sistemas Operativos
Primera Generación (1945-1955)
- Uso de tubos de vacío
- Necesidades estructurales muy grandes
- Programación exclusivamente en lenguaje de máquina
Segunda Generación (1955-1965)
- Uso de transistores, lo cual:
- Aumentó la velocidad y el rendimiento del sistema
- Minimizó las condiciones estructurales
- Aparición de primitivos dispositivos de entrada y salida
- Aparición de los primeros dispositivos de almacenamiento magnético
- Primeros sistemas operativos y lenguajes de programación
Tercera Generación (1965-1975)
- Aparición de circuitos integrados, con lo cual se incrementa la capacidad y velocidad de procesamiento
- Aparición de las primeras BIOS, con lo cual los sistemas operativos se hacen más eficientes (la BIOS realiza la precarga de los drivers del hardware del sistema)
- Se formalizan los lenguajes de programación
- Aparece el SO Unix
Cuarta Generación (1975-Actualidad)
- Aparición de microprocesadores
- Se formalizan los SO y los ensambladores (permiten que la escritura de aplicaciones con cualquier lenguaje, pueda ser compilada a cualquier plataforma sin reescribirla)
Arquitectura y Funcionalidad de los Sistemas Operativos
El acceso directo a memoria (DMA) 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.
Cada SO determina un ciclo de reloj para cada proceso.
El desarrollo de los SO modernos se origina en la necesidad de simplificar al usuario las tareas requeridas para que el sistema se inicie. En su inicio, cada instrucción que requería el sistema debía escribirse y luego ordenar su ejecución. Actualmente, estas tareas están automatizadas y se presentan al usuario en modo consola o como GUI (interfaz gráfica del usuario). Siendo más eficiente el modelo de consola.
Un SO puede analizarse como una máquina extendida o como un administrador de recursos.
La forma en que el SO se comunica con el procesador se conoce con el nombre de llamada al sistema, los cuales son procesos que se ejecutan en forma secuencial.
Gestión de Procesos
Un proceso es simplemente un programa en ejecución, puede asumir tres estados:
- Listo: el sistema requiere al proceso, cargándolo en memoria e inscribiendo su dirección en la tabla de procesos.
- En ejecución: proceso desarrollándose, pudiendo esto generar nuevos procesos basándose en una estructura de tipo árbol.
- Detenido: un proceso que no finalizó porque espera una respuesta externa, pero no se sigue ejecutando ya que solamente puede haber en ejecución un único proceso. El hecho de que esté detenido permite que otros procesos se inicien hasta tanto todos los procesos disparados puedan finalizar.
En un SO se diferencian 2 grandes grupos de procesos:
- Los que dispara el usuario (Shell): corresponden a la interfaz que permite al usuario comunicarse con el sistema.
- Los que son propios del núcleo del sistema (Kernel): aquellos que pueden dispararse sin intervención del usuario.
Uno de los procesos principales del kernel se denomina administrador de procesos, el cual se encarga de definir qué proceso puede ejecutarse, y lleva el control generando una tabla llamada ‘tabla de procesos’, en la cual se escriben las direcciones asignadas en memoria de cada uno de ellos.
Cada proceso se ejecuta en forma atómica, es decir, solo habrá en ejecución un proceso a la vez cuya duración estará dada por la cantidad de ciclos que el sistema le asigne.
El gráfico de la figura representa el estado de la memoria principal en un sistema monolítico, en los cuales los procesos pueden ser invocados en cualquier momento, y por cualquier usuario, a diferencia de un sistema por capas en el cual cada llamada al sistema únicamente podrá ejecutarse en la capa en que corresponde.
Los sistemas por capas se constituyen con procesos independientes, los cuales se desarrollan cada uno en su nivel correspondiente.
La figura muestra el esquema básico de un SO por capas:
- Capa 0: macroinstrucciones del procesador
- Capa 1: gestión y administración de la memoria
- Capa 2: comunicación interprocesos
- Capa 3: gestión y administración de los dispositivos de entrada y salida
- Capa 4: aplicaciones del usuario
- Capa 5: es la única transparente al usuario
Un proceso no es otra cosa que una porción de código que puede asumir tres estados posibles:
- Listo: cuando el planificador de procesos lo escribe en la tabla de procesos, en la cual deberá figurar la prioridad y las direcciones en la memoria principal de los recursos que el proceso necesite durante su ejecución.
- En ejecución: se lleva a cabo cuando el planificador apunta el vector de ejecución a la dirección asignada a este en la tabla de procesos.
- En espera: se produce cuando un proceso que se encontraba en ejecución, espera un evento externo, o bien es detenido por una exclusión, disparada por otro proceso, que debe acceder a lo que se denomina “sección crítica”.
La sección crítica de un proceso es aquella porción de código que accede a la memoria principal y modifica valores en esta. Esta característica, denominada “exclusión mutua” debe evitarse, ya que dos procesos accediendo simultáneamente a la memoria principal activarían la instrucción TSL, la cual, de no resolverse, bloquearía el sistema operativo.
El algoritmo base para planificar la ejecución de procesos se conoce con el nombre de "cena de los filósofos". El argumento consistía en presentar a los filósofos como elementos binarios, es decir, solo podían llevar a cabo dos tareas atómicas no simultáneas, las cuales eran comer y pensar. En la mesa existían cinco tenedores y cinco filósofos, y la condición para poder comer era la de obtener dos tenedores. Si esta condición se cumplía, el filósofo podría comer durante un tiempo, y luego dejaría ambos tenedores sobre la mesa para que otro pudiese comer.
- Filósofos → procesos
- Tenedores → recursos
Esto presentaba un problema. Cuando simultáneamente los cinco tomaban cada uno un tenedor, ninguno podría comer, y de no resolverse, morirían de hambre. Este término se aplica para referirse a un estado de bloqueo mutuo entre dos o más procesos.
El planificador de procesos es otro proceso de alta prioridad, que se ocupa de generar tablas en las cuales se escriben los procesos que están en condiciones de ejecutarse, o bien a la espera de un evento exterior.
Los algoritmos más comunes que utiliza el planificador para la ejecución de los procesos son el algoritmo de Round Robin y el de prioridad.
Round Robin: consiste en asignar a cada proceso un tiempo de ejecución denominado 'cuanto', el cual es estático y se mide en ciclos de reloj. Este algoritmo no es selectivo con respecto a los procesos, sino que los ejecuta de acuerdo a su posición en la cola de procesos. Si un proceso no finaliza en el cuanto asignado, el planificador vuelve a colocarlo en la pila de procesos, y habilita la ejecución del próximo proceso. Este algoritmo presenta fallas conceptuales, ya que si se asignan cuantos pequeños, un proceso largo deberá recorrer varias veces la cola de procesos para finalizar su ejecución. Por otro lado, si el cuanto es mayor, se corre el riesgo de desperdiciar tiempo de procesamiento en procesos cortos. La mejor solución a Round Robin fue el desarrollo posterior denominado algoritmo de prioridad.
Algoritmo de prioridad: consiste en un arreglo de colas de ejecución, en las cuales se enlistan los procesos que se ejecutarán mediante Round Robin.