Portada » Informática » Capa de informatica
Un sistema operativo (SO) es una serie 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 mas amigable.
El hardware y el software se iniciaron en forma conjunta, pero por lo general, el software siempre va mas adelantado.
Primera Generación (1945/1955)
* Uso de tubos de vacío
* Necesidades estructurales muy grandes
* Programación exclusivamente en lenguaje de maquina
Segunda Generación (1955/1965)
* Uso de transistores lo cual:
o Aumentó de velocidad y rendimiento del sistema
o 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 mas 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/hoy)
* 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)
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)
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 lo mas eficiente el modelo de consola.
Un SO puede analizarse como una maquina 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.
Un proceso es solamente un programa en ejecución, puede asumir tres estados:
Estado 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 interface que permite al usuario comunicarse con el sistema
* Los que son propios del núcleo del sistema (Kérnel): aquellos que pueden dispararse sin intervención del usuario
Uno de los procesos principales del kérnel 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, sólo 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 : macro instrucciones del procesador
* capa 1 : gestión y administración de la memoria
* capa 2 : a la comunicación inter-procesos
* capa 3 : a la gestión y administración de los dispositivos de entrada y salida
* capa 4 : a las 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, sólo 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 y 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 ejecutaran mediante Round Robin.