lunes, 25 de noviembre de 2013

U2: 2.2 Estados y Transiciones de los procesos

Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecución y Bloqueado.
Los procesos en el estado listo son los que pueden pasar a estado de ejecución si el planificador los selecciona. Los procesos en el estado ejecución son los que se están ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en estado bloqueado están esperando la respuesta de algún otro proceso para poder continuar con su ejecución. Por ejemplo operación de E/S.


Un proceso puede variar entre 5 distintos estados:

New: cuando el proceso esta siendo creado.
Running: cuando el proceso se esta ejecutando.
Waiting: cuando el proceso esta esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso esta terminado.

Estado de los Procesos.
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.


Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.

1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en: 
Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida). 
2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio. 


Son de dos tipos: 

      
      Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.
      
      Suspendido programado. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.
Estados de los procesos
Nuevo: El proceso es creado.
Ejecución: Se ejecutan instrucciónes.
Espera: El proceso esta en espera por la ocurrencia de algún evento.
Listo: El proceso esta esperando a que le asignen el procesador.
Terminado: El proceso finaliza su ejecución.
Diagrama de estados de los procesos.
Información asociada con cada proceso:
Estado del proceso
Program counter
Registros del CPU
Información de planificación del CPU
Memoria
Información para administración
Información de estatus de E/S
Creación de Procesos.
En UNIX el lanzamiento de procesos se realiza a través de la llamada al sistema fork().

Para utilizar esta llamada al sistema se emplea el header  <unistd.h>.

Su sintaxis es:
                        Pid=fork();

Una llamada exitosa a fork() crea un proceso que es una copia del proceso que lo invoco. Duplica las variables del proceso original con una excepción, el nuevo proceso creado recibe le nombre de proceso hijo. El proceso que lo creo se denomina proceso padre, y el sistema devuelve un 0 al proceso hijo y un valor positivo distinto de 0 (pid del hijo) al proceso  padre.

Después de la llamada exitosa a fork(), tanto el proceso padre como el hijo corren en forma simultanea a partir del punto siguiente a la invocación del fork.

Hay 2 secciones en la figura: antes y después. La sección antes muestra la situación antes de la invocación al fork. Sólo existe el proceso A. El Apuntador AC (apuntador de código) señala a la instrucción que se está ejecutando. Como se está indicando el primer printf  Imprime el texto “Antes del fork”.
La sección después muestra la situación inmediatamente después de la llamada a fork. Existen ahora 2 procesos: Ay B. A es el proceso original, es decir, el proceso padre. B es una copia de A, es decir el proceso hijo. Ambos corren en forma simultánea. Dado que el apuntador AC, señala al último printf, se imprime el texto “Después del fork”. Se imprime 2 veces, una por parte del padre y la otra por parte del hijo.

Descriptor  de procesos y recursos.
            Es una estructura de datos asociada a una entidad informática ya sea un (Recurso o Proceso), en la cual se indica y actualiza todas las informaciones relativas a dicha entidad.
En el caso de un proceso la información general  que contiene es:
1).-      Identificador: Que puede ser interno y externo.
                                   - Interno:       Sistemas.
                                   - Externo:      Usuario.
2).-      Descripción de la máquina virtual asociada: como espacio virtual asignado, tipo de mapeo, tipo de acceso.
3).-      Descripción de los recursos de la máquina que usa como: Lista de recursos que el proceso tiene  derecho a solicitar, dirección real en la memoria principal, estado de las         variables internas  del CPU, prioridad, etc.
4).-      Estados funcionales del proceso:    Los  estados  de  los  procesos  son  internos  del sistema operativo  y  transparente  al   usuario.  Para  éste,  su proceso  estará  siempre en ejecución independientemente  del   estado  en que se encuentre internamente el sistema.

Los  procesos  se  pueden  encontrar  en  tres estados, observe  figura # 34.

            
Estados de los procesos.

Un proceso puede encontrarse en estado de ejecución, bloqueado o listo (que también se llama ejecutable). 
De estos estados de los procesos se derivan las siguientes transiciones y estados:

Transición: El paso de un estado a otro.

Transiciones:

            1. El proceso se bloquea en la entrada.
            2. El planificador elige otro proceso.
            3. El planificador elige este proceso.
            4. La entrada se vuelve disponible.

Estados:

            1. Ejecución (que en realidad hace uso del CPU en ese instante).
            2. Bloqueado (incapaz de correr hasta que suceda algún evento externo.
3. Listo (ejecutable; se detiene temporalmente para permitir que se ejecute otro
     proceso).

En estos tres estados son posibles cuatro transiciones:

1.         Ocurre cuando un proceso descubre que no puede continuar. En algún sistema el proceso debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.
2 y 3.   Son ocasionadas por el planificador del proceso, que es parte del sistema operativo sin que el proceso llegue a saber de ella.
2.         Ocurre cuando el planificador decide que el proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir que otro proceso tome tiempo de CPU.
3.         Ocurre cuando todos los procesos han utilizado su parte del tiempo y es hora de que el primer proceso vuelva a correr.
4.         Ocurre cuando aparece el evento externo que estaba esperando un proceso (como el arribo de alguna entrada). Si ningún otro proceso corre en ese instante, la transición  3 se  activará de inmediato y el proceso iniciara su ejecución, de lo contrario tendrá que esperar, en estado listo.

            Los estados de los procesos se pueden dividir en dos tipos:  activos  e  inactivos.

 Estados de un proceso y sus transiciones.

*Ejecución.                Estado  en  el  que  se  encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener proceso.
*Listo.                        Aquellos  procesos  que  están  dispuestos para ser ejecutados, pero no están en ejecución  por alguna causa (interrupción, haber entrado, en la cola estando otro proceso en ejecución, etc.
*Bloqueados.             Son  los  procesos  que  no  pueden  ejecutarse  de momento por necesitar algún recurso no disponible (generalmente recursos de E/S).

* Estados inactivos.
            Son aquellos que no pueden competir por el procesador, pero que puedan volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso suspendido hasta que vuelva a ser activado.
Son de dos tipos:
Suspendido bloqueado.
Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.

Suspendido preparado.
Es el proceso que ha sido suspendido, pero no tiene causa para estar bloqueado.


Transiciones de estado.

Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno  de estos cambios se denomina transición de estado.

Transiciones de estado.

La asignación del CPU al primer proceso de la lista de listos es llamada despacho, y es ejecutado por la entidad del sistema llamada despachador. Indicamos esta transición de la manera siguiente:

Despacho (nombre del proceso): Listo en   ejecución.
Mientras el proceso tenga CPU,  se dice que esta en ejecución. Para prevenir que cualquier  proceso monopolice el sistema, ya sea de manera accidental o maliciosamente el sistema operativo ajusta un reloj de interrupción del hardware para permitir al usuario ejecutar su proceso durante un intervalo de tiempo especifico o cuanto. Si el proceso no abandona voluntariamente el CPU, antes de que expire el intervalo, el reloj genera una interrupción, haciendo que el sistema operativo recupere el control. El sistema operativo hace que el proceso que anteriormente  se hallaba en estado de ejecución pase al de listo, y hace que el primer proceso de la lista de listos pase al estado de ejecución.

Estas transiciones de estado se indican como:

            - tiempo excedido (nombre del proceso): en ejecución Listo

            - bloqueado (nombre del proceso): en ejecución bloqueado

            El proceso cambia del estado bloqueado al estado listo:

            - despertar ( nombre del proceso): bloqueado Listo.

Con  esto tenemos definidas  4  transacciones de estado.

            - despacho ( nombre del proceso): Listo en ejecución

            - tiempo excedido ( nombre del proceso): en ejecución Listo

            - bloqueado ( nombre del proceso): en ejecución bloqueado

            - despertar ( nombre del proceso ): bloqueado Listo.


Suspensión y Reanudación.

Un proceso suspendido no puede proseguir sino hasta que lo reanuda otro proceso. Reanudar (o activar) un proceso implica reiniciarlo a partir del punto en el que se suspendió.

Las operaciones de suspensión y reanudación son importantes por diversa razones:

*Si un sistema está funcionando mal y es probable que falle, se puede suspender los      procesos activos para reanudarlos cuando se haya corregido el problema.
*Un usuario que desconfíe de los resultados parciales de un proceso puede suspenderlo (en vez de abortarlo) hasta que verifique si el proceso funciona correctamente o no.
*Algunos procesos se puede suspender como respuesta a las fluctuaciones a corto plazo  de la carga del sistema y reanudarse cuando las cargas regresen a niveles normales.

 Transiciones de estados de los procesos con suspensión y reanudación.

 El diagrama de transiciones de estado de los procesos, modificado para incluir las operaciones de suspensión y reanudación. Se han añadido dos nuevos estados, denominados suspendido-listo y suspendido bloqueado; no hay necesidad de un estado suspendido-ejecutado. Sobre la línea discontinua se encuentran los estados activos, y debajo de ella los estados suspendidos.

Una suspensión puede ser iniciada por el propio proceso o por otro. En un sistema con un solo procesador el proceso en ejecución puede suspenderse a si mismo; ningún otro proceso podría  estar en ejecución al mismo tiempo para realizar la suspensión (aunque otro proceso sí podría solicitar la suspensión cuando se ejecute). En un sistema de múltiples procesadores, un proceso en ejecución puede suspender a otro que se esté ejecutando en ese mismo momento en un procesador diferente.
            Solamente otro proceso puede suspender un proceso listo. La transición correspondiente es:

1) Suspender (nombre_del_proceso): Listo Suspendido-Listo.


Un proceso puede hacer que otro proceso que se encuentre en el estado suspendido-listo pase al estado listo. La transición correspondiente es:

2)         reanudar ( nombre_del_proceso): Suspendido-Listo             

Un  proceso puede suspender a otro proceso que esté bloqueado. La transición correspondiente es:

3)         suspender ( nombre_del_proceso): Bloqueado                 

Un proceso puede reanudar otro proceso que esté suspendido-bloqueado. La transición correspondiente es:

4)         reanudar ( nombre_del_proceso): Suspendido-Bloqueado                 

Como la suspensión es por lo general una actividad de alta prioridad, se debe realizar de inmediato. Cuando se presenta finalmente el término de la operación ( si es que termina), el proceso suspendido-bloqueado realiza la siguiente transición.

5)         completar(nombre_del _proceso): suspendido-bloqueado suspendido-listo.

6)         suspender (nombre_del_proceso): Ejecución Suspendido-Listo.


En conclusión los sistemas que administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos y con ellos. Tales operaciones incluyen:

                        - Crear un proceso.
                        - Destruir un proceso.
                        - Suspender un proceso.
                        - Reanudar un proceso.
                        - Cambiar la prioridad de un proceso.
                        - Bloquear un proceso.
                        - Despertar un proceso.
                        - Despachar un proceso.
- Permitir que un proceso se comunique con otro (esto se denomina  
  comunicación entre procesos).

Crear un proceso implica operaciones como:

            - Dar un nombre a un proceso.
- Insertarlo en la lista de procesos conocidos del sistema ( o tabla de procesos)
            - Determinar la prioridad inicial de proceso.
            - Crear el bloque de control de proceso.
             - Asignar los recursos iniciales al proceso.

 Un proceso puede crear un nuevo proceso. Si lo hace el proceso creador se denomina proceso padre, y el proceso creado, proceso hijo. Sólo se necesita un padre para crear un hijo. Tal creación origina una estructura jerárquica de procesos. No se puede destruir un proceso cuando este ha creado otros procesos.

Destruir un proceso implica eliminarlo del sistema. Se le remueve de la tabla o listas del sistema, sus recursos se devuelven al sistema y su bloque de control de proceso se borra (es decir, el espacio de memoria ocupado por su PCB se devuelve al espacio de memoria disponible.

Operaciones de procesos y recursos.

Los sistemas operativos poseen una serie de funciones cuyo objetivo es el de la manipulación de los procesos. En general las operaciones que se pueden hacer sobre un proceso son las siguientes:

Crear el proceso. Se produce con la orden de ejecución del programa y suele necesitar varios argumentos, como el nombre y la prioridad del proceso.

Creación de un proceso.
La creación de un proceso puede ser de dos tipos:

Jerárquica.  En  ella  cada proceso que se crea es hijo del proceso creador y hereda el entorno  de ejecución de su padre.  El primer proceso que ejecuta un usuario será hijo del intérprete  de comandos con el que interactúa.

Jerarquía de procesos.
No jerárquico: Cada proceso creado por otro proceso se ejecuta independientemente de su creador con un entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos actuales.
Además de los dos tipos anteriores se pueden realizar las operaciones siguientes:
*Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema operativo destruye su PCB ( Proces control Block).
*Suspender un proceso. Es una operación de alta prioridad que paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del sistema.
*Reanudar un proceso. Trata de activar  un proceso que ha sido previamente suspendido.
*Cambiar la prioridad de un proceso.
*Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada  cierto tiempo (segundos, minutos, horas,...) por etapas o de una sola vez, pero transcurrido un periodo de tiempo fijo.
*Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado previamente por temporización o cualquier otra causa.

U2: 2.1 Concepto de Proceso

Un proceso no es mas que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros y las variables. Conceptualmente cada unos de estos procesos tiene su propia CPU virtual. Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro.
Otras definiciones:


  • Un programa que se está ejecutando.
  • Una actividad asincrónica.
  • El emplazamiento del control de un procedimiento que está siendo ejecutado.
  • Aquello que se manifiesta por la existencia en el Sistema Operativo de un bloque de control de proceso.
  • Aquella entidad a la cual son asignados los procesadores.
  • La unidad despachable.

Los procesos son gestionados por el sistema operativo y están formados por:


U2. Administración de Procesos y del Procesador

U1: 1.6 Núcleo



Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan.


Los núcleos se diseñan para realizar "el mínimo" posible de procesamiento en cada interrupción y dejar que el resto lo realice el proceso apropiado del sistema, que puede operar mientras el núcleo se habilita para atender otras interrupciones.


El núcleo de un sistema operativo normalmente contiene el código necesario para realizar las siguientes funciones:

Manejo de interrupciones. 
Creación y destrucción de procesos. 
Cambio de estado de los procesos. 
Despacho. 
Suspensión y reanudación de procesos. 
Sincronización de procesos. 
Comunicación entre procesos. 
Manipulación de los bloques de control de procesos. 
Apoyo para las actividades de entrada/salida. 
Apoyo para asignación y liberación de memoria. 
Apoyo para el sistema de archivos. 
Apoyo para el mecanismo de llamada y retorno de un procedimiento. 
Apoyo para ciertas funciones de contabilidad del sistema. 
Núcleo o Kernel y niveles de un Sistema Operativo.




El Kernel consiste en la parte principal del código del sistema operativo, el cual se encargan de controlar y administrar los servicios y peticiones de recursos y de hardware con respecto a uno o varios procesos, este se divide en 5 capas:

Nivel 1. Gestión de Memoria: que proporciona las facilidades de bajo nivel para la gestión de memoria secundaria necesaria para la ejecución de procesos.



Nivel 2. Procesador: Se encarga de activar los cuantums de tiempo para cada uno de los procesos, creando interrupciones de hardware cuando no son respetadas.



Nivel 3. Entrada/Salida: Proporciona las facilidades para poder utilizar los dispositivos de E/S requeridos por procesos.



Nivel 4. Información o Aplicación o Interprete de Lenguajes: Facilita la comunicación con los lenguajes y el sistema operativo para aceptar las ordenes en cada una de las aplicaciones. Cuando se solicitan ejecutando un programa el software de este nivel crea el ambiente de trabajo e invoca a los procesos correspondientes.



Nivel 5. Control de Archivos: Proporciona la facilidad para el almacenamiento a largo plazo y manipulación de archivos con nombre, va asignando espacio y acceso de datos en memoria. 

El núcleo y los procesos.
El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión la realiza para atender al
funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. 


Los procesos relacionados con la entidad básica de los sistemas operativos actuales: Los procesos.
El esquema general del mismo es el siguiente:


Definición y concepto de proceso.
El Bloque de Control de Proceso (PCB) como imagen donde el sistema operativo ve el estado del proceso. 
Estados por los que pasa un proceso a lo largo de su existencia en la computadora. 
Operaciones que se pueden realizar sobre un proceso. 
Clasificación de los procesos según su forma de ejecución, de carga, etc. 

U1: 1.5 Estructura: Niveles o Estrados de Diseño

Modular:

Consiste principalmente en llamadas, es decir, el sistema operativo puede hacer tantas llamadas como sean necesarias a diferentes procedimientos.


Micro Kernel:

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 la comunicación entre procesos.

Por Anillos:

El objetivo principal es la organización jerárquica del sistema operativo mediante capas o anillos concéntricos, cada una de las capas está construida sobre la anterior.

Cliente - Servidor:

Es un modelo de aplicación distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios llamados servidores y los dominantes son nombrados clientes.

U1: 1.4 Clasificación




Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características:

Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea).

Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación esta esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas. 


Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización. 
Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP. 
Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. 

Las características de un Sistema Operativo de multiprogramación o multitarea son las siguientes:

  • Mejora productividad del sistema y utilización de recursos.
  • Multiplexa recursos entre varios programas.
  • Generalmente soportan múltiples usuarios (multiusuarios).
  • Proporcionan facilidades para mantener el entorno de usuarios individuales.
  • Requieren validación de usuario para seguridad y protección.
  • Proporcionan contabilidad del uso de los recursos por parte de los usuarios.
  • Multitarea sin soporte multiusuario se encuentra en algunos computadores personales o en sistemas de tiempo real.
  • Sistemas multiprocesadores son sistemas multitareas por definición ya que soportan la ejecución simultánea de múltiples tareas sobre diferentes procesadores.
  • En general, los sistemas de multiprogramación se caracterizan por tener múltiples programas activos compitiendo por los recursos del sistema: procesador, memoria, dispositivos periféricos.


Sistema Operativo Monotareas. 
Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión.

Sistema Operativo Monousuario. 

Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando. 
Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores. 


Sistema Operativo Multiusuario. 

Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. 
En otras palabras consiste en el fraccionamiento del tiempo (timesharing). 


 Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. 
Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos. 


Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. 
Algunas otras características con que cuentan los Sistemas Operativos por lotes son:
  • Requiere que el programa, datos y órdenes al sistema sean remitidos todos juntos en forma de lote.
  • Permiten poca o ninguna interacción usuario/programa en ejecución.
  • Mayor potencial de utilización de recursos que procesamiento serial simple en sistemas multiusuarios.
  • No conveniente para desarrollo de programas por bajo tiempo de retorno y depuración fuera de línea.
  • Conveniente para programas de largos tiempos de ejecución (ej, análisis estadísticos, nóminas de personal, etc.).
  • Se encuentra en muchos computadores personales combinados con procesamiento serial.
  • Planificación del procesador sencilla, típicamente procesados en orden de llegada.
  • Planificación de memoria sencilla, generalmente se divide en dos: parte residente del S.O. y programas transitorios.
  • No requieren gestión crítica de dispositivos en el tiempo.
  • Suelen proporcionar gestión sencilla de manejo de archivos: se requiere poca protección y ningún control de concurrencia para el acceso.
Sistemas Operativos de tiempo real. 
Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos. 
Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes: 
  • Control de trenes.
  • Telecomunicaciones.
  • Sistemas de fabricación integrada.
  • Producción y distribución de energía eléctrica.
  • Control de edificios.
  • Sistemas multimedia.
Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características: 
  • Se dan en entornos en donde deben ser aceptados y procesados gran cantidad de sucesos, la mayoría externos al sistema computacional, en breve tiempo o dentro de ciertos plazos.
  • Se utilizan en control industrial, conmutación telefónica, control de vuelo, simulaciones en tiempo real., aplicaciones militares, etc.
  • Objetivo es proporcionar rápidos tiempos de respuesta.
  • Procesa ráfagas de miles de interrupciones por segundo sin perder un solo suceso.
  • Proceso se activa tras ocurrencia de suceso, mediante interrupción.
  • Proceso de mayor prioridad expropia recursos.
  • Por tanto generalmente se utiliza planificación expropiativa basada en prioridades.
  • Gestión de memoria menos exigente que tiempo compartido, usualmente procesos son residentes permanentes en memoria.
  • Población de procesos estática en gran medida.
  • Poco movimiento de programas entre almacenamiento secundario y memoria.
  • Gestión de archivos se orienta más a velocidad de acceso que a utilización eficiente del recurso.
Sistemas Operativos de tiempo compartido.
Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. 
Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria. 
Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. 
Características de los Sistemas Operativos de tiempo compartido:
  • Populares representantes de sistemas multiprogramados multiusuario, ej: sistemas de diseño asistido por computador, procesamiento de texto, etc.
  • Dan la ilusión de que cada usuario tiene una máquina para sí.
  • Mayoría utilizan algoritmo de reparto circular.
  • Programas se ejecutan con prioridad rotatoria que se incrementa con la espera y disminuye después de concedido el servicio.
  • Evitan monopolización del sistema asignando tiempos de procesador (time slot).
  • Gestión de memoria proporciona protección a programas residentes.
  • Gestión de archivo debe proporcionar protección y control de acceso debido a que pueden existir múltiples usuarios accesando un mismo archivos.
Sistemas Operativos distribuidos.
Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. 
Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. 
Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. 
Características de los Sistemas Operativos distribuidos:
  • Colección de sistemas autónomos capaces de comunicación y cooperación mediante interconexiones hardware y software .
  • Gobierna operación de un S.C. y proporciona abstracción de máquina virtual a los usuarios.
  • Objetivo clave es la transparencia.
  • Generalmente proporcionan medios para la compartición global de recursos.
  • Servicios añadidos: denominación global, sistemas de archivos distribuidos, facilidades para distribución de cálculos (a través de comunicación de procesos internodos, llamadas a procedimientos remotos, etc.).
Sistemas Operativos de red. 
Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. 
El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. 
Los Sistemas Operativos de red mas ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. 
Sistemas Operativos paralelos. 
En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo.
En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso. 
Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

Conclusión: 
Luego de haber investigado y analizado se puede ver que se han desarrollado varios tipos de sistemas operativos con diferentes interfaces y categorías. Pero hemos podido observar que todos los sistemas operativos han sufrido cambios por parte de los programadores, y siguen evolucionando. 
Los sistemas operativos empleados normalmente son UNIX, Macintosh OS, MS-DOS, OS/2, Windows 95 y Windows NT. El UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Otros SO multiusuario y multitarea son OS/2, desarrollado inicialmente por Microsoft e IBM, Windows NT y Win95 desarrollados por Microsoft. El SO multitarea de Apple se denomina Macintosh OS. El MS-DOS es un SO popular entre los usuarios de PCs pero solo permite un usuario y una tarea. 
Los sistemas operativos han ido evolucionando a medida de las necesidades que se fueron generando, cada sistema operativo tiene un fin determinado que es la de realizar tareas según el objetivo a lograr, dependiendo de lo que necesite el o los usuarios. La mayoría de los sistemas operativos de ultima generación tienden a, atender un gran numero de usuarios, y que los procesos a realizar demoren en un mínimo de tiempo.