Los sistemas operativos se pueden clasificar de acuerdo a los servicios que puede prestar:
Monousuario: Soportan a un solo usuario a la vez, sin importar la cantidad de procesadores, procesos o tareas. Computadoras personales.
Estado del proceso:
Es la fotografía de un proceso en determinado momento, que se toma para identificar:
Para que en el momento de reanudar el proceso, continuar exactamente en donde se quedó.
Multiusuario: Dan servicio a más de un usuario a la vez, normalmente se utilizan terminales remotas mediante una red de comunicaciones, se ejecutan de manera simultánea.
Los SO en un bajo nivel no trabaja con objetos sino con registros los cuales se van apilando (lista apilada), donde los elementos se colocan uno encima del otro y solo podemos acceder de manera inmediata al elemento que está encima de la pila o stack.
Es un sitio de almacenamiento temporal, trabaja con 2 instrucciones básicas:
Se crea un stack por proceso, ahí se guardan las variables primitivas y procesos más complejos.
Cuando manejamos objetos o valores por referencia, se accede a ellos por medio de apuntadores, es decir mediante las direcciones de memoria, en donde se encuentra el objeto referenciado.
Es el SO quién lleva un inventario de las ubicaciones que se están usando del objeto del proceso.
Threads (hilos)
Es un mecanismo que permite a una aplicación realizar varias tareas de manera concurrente.
Se basa en el concepto de multitarea, es decir un sistema puede ejecutar varios procesos a la vez. Pero que pasa si un proceso ejecuta varios subprocesos o tareas a la vez.
Monotareas: Solo pueden hacer una tarea a la vez.
Multitareas: Puede realizar varias labores al mismo tiempo.
Uniproceso: Maneja un solo procesador en el equipo.
Multiproceso: Equipos que manejan varios procesadores, en los cuales distribuyen la carga de trabajo de forma simétrica o de manera asimétrica.
Proceso: Conjunto de instrucciones que se ejecutan de manera secuencial que llevan a cabo una tarea en específico.
Planificador de Procesos:
Es el encargado de permitir la ejecución de los diferentes procesos en una o varias CPU (Unidad Central de Proceso (conformada por memoria principal, Unidad lógica aritmética y Registros de control).
Ejecución en paralelo:
Cuando tenemos una sola CPU, la ejecución de los hilos se realiza alternando el tiempo, aunque parezca que se realiza al mismo tiempo.
En caso de utilizar más de una CPU, los hilos de un mismo proceso se pueden ejecutar de forma paralela, pero en caso de ejecutarse diferentes procesos cada uno con sus propios hilos, se van alternando con los diferentes CPU's, no hay ejecución en paralelo.
El tiempo de ejecución de un proceso o de varios procesos dependerá de número de CPU's con los que cuente tu equipo y la cantidad de threads que se ejecuten en un mismo tiempo determinado, por lo que el equipo se alentará.
El tiempo de ejecución de los hilos se puede administrar mediante la programación o el uso de ciertas librerías de programación.
Los Threads del Kernel
Todo sistema operativo tiene un Kernel, el cual se encarga entre otras cosas de crear los threads.
(Kernel, es el núcleo del Sistema Operativo y se encarga de:
Los sistemas Operativos Monotarea, ejecutan un proceso y solo hasta que lo terminan ejecutan otro proceso, de igual manera, hasta que lo terminan, realizan el siguiente proceso, sucesivamente, ejemplo más común es el MSDOS.
Todos los procesos deben de esperar su turno para ejecutarse, también se le conoce como planificación por lotes (batch), (Ej. Trabajos de Impresión).
Los SO multitareas "pueden realizar varias tareas a la vez", lo que sucede es que pequeñas fraciones de las tareas se ejecutan en lapsos de tiempo diminutos, lo cual hace parecer que se ejecutan al mismo tiempo, pero en realidad no es así.
La cantidad de tareas que realiza un proceso es variable, ya que está en base a la cantidad de tiempo limitado asignado por el SO.
En ese momento el SO determina cual es el siguiente proceso que se ejecuta. Los lapsos de tiempo y la prioridad de los procesos están determinados por el SO, luego entonces hay procesos que se ejecutan "más rápido que otros".
Cada interrupción es dada por el procesador y se activa cada determinado tiempo, a este lapso de tiempo se le conoce como Quantum.
Cada vez que se crea un thread se crea un objeto del kernel que tiene toda la información necesaria con respecto al proceso, código ejecutable del thread, variables, etc. el objeto del thread existe en el espacio de direcciones asignadas al kernel.
El kernel proporciona acceso para modificar o supervisar el funcionamiento de un thread. Se encarga de manera automática de calendarizar la ejecución de cada uno de los thread en ejecución.
Los Thread de usuario:
Son independientes del kernel del sistema, para el SO, no existen.
Otra manera de generar una interrupción es mediante una señal enviada desde un dispositivo de hardware, como por ejemplo una tarjeta de red, en ese momento el proceso que se está ejecutando se suspende y se ejecuta el de la red.
Los 3 momentos de suspensión de un proceso:
Son creados y administrados por los programas del usuario (.NET Framework o con Java) y se ejecutan de acuerdo a su programación.
El programa en ejecución se detiene hasta que el thread se ejecuta y termina su parte del proceso.
Todo ello requiere una programación más sofisticada, lo que provoca que sino se hace, no tiene soporte del SO.
Pueden bloquear a todos los procesos hasta que algún dispositivo conteste el llamado.
Windows provee funcionalidades para convertir thread de usuario a thread del kernel y viceversa, lo cual facilita dar solución a escenarios de bloqueo del sistema.
Sistemas Operativos Distribuidos:
Son aquellos que permiten interactuar distintos equipos de manera remota, intercambiando información, transferencia de archivos, ejecutar comandos remotos, compartir hardware y muchos recursos.
Sistemas operativos Distribuidos:
El usuario accede a los diferentes recursos de la red de manera remota mediante una máquina virtual e invoca los recursos mediante su nombre, como si fueran recursos locales, como principales ejemplos tenemos a los cajeros automáticos, manejan millones de operaciones por minuto, utilizan servidores espejo.
Estado de ejecución de un proceso:
El sistema guarda el estado del proceso en la memoria como: