jueves, 23 de febrero de 2023

Concurrencia y secuenciabilidad

 La concurrencia abarca una variedad de problemas de diseño, incluida la comunicación entre procesos, el intercambio de recursos y la competencia, la sincronización de la ejecución de diferentes procesos y la asignación de tiempo de procesador a los procesos, y es esencial para que existan diseños como la multiprogramación.

 

Los procesos simultáneos pueden funcionar de forma totalmente independiente entre sí o pueden ser asincrónicos, lo que significa que a veces necesitan cierta sincronización o colaboración.

 

TIPOS DE PROCESOS SIMULTÁNEOS.

 

Los procesos que se ejecutan simultáneamente en un sistema se pueden clasificar de la siguiente manera:

 

Proceso Libre: Es el que se lleva a cabo sin solicitar el apoyo o colaboración de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan simultáneamente en un sistema.

 

Los procesos son cooperativos: fueron creados para trabajar juntos en una actividad que requiere que puedan comunicarse e interactuar entre sí.

 

Los dos tipos de procesos (independientes y cooperativos) pueden tener una secuencia de relaciones entre ellos y pueden ser de 2 tipos:

 

Interrelaciones motivadas a medida que los procesos comparten o compiten por la entrada de recursos físicos o lógicos.

 

Relación motivada a medida que los procesos se comunican y sincronizan entre sí para lograr un objetivo común

 

 

La concurrencia puede presentarse en tres contextos diferentes:

 

Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.

 

Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.

 

Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:

 

Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.

 

Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.

 

Multicomputadora. Es una máquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores.



Niveles, objetivos y criterios de planificación

El planificador es el fragmento del sistema operativo que dicta y el algoritmo de idealización es el que se utiliza.

 

Cada proceso es único e impredecible, lo que significa que tiene la capacidad de solicitar E/S de forma intensiva o hacer un uso intensivo de la CPU; el programador del sistema operativo no está seguro de cuánto tiempo pasará antes de que se bloquee un proceso, ya sea por una operación de E/S o por alguna otra razón.

 

Idealización del procesador:

 

Idealización preventiva: Es la táctica de detener temporalmente los procesos ejecutables (desde un punto de vista lógico).

 

Idealización no preventiva: es la táctica de permitir que un proceso se ejecute hasta que se complete.

 

Niveles de programación del procesador:

 

Planificación de alto nivel: También se conoce como idealización del trabajo.

 

Determina qué trabajos pueden competir activamente por los recursos del sistema, lo que se conoce como organización de admisiones.

 

Programación intermedia: determina qué procesos pueden competir por la CPU.

 

Programación de bajo grado: determina a qué proceso listo se le asignará la CPU tan pronto como esté disponible y le asigna la CPU, es decir, "envía" la CPU al proceso.



Técnicas de administración del planificador

Las especialidades organizacionales pueden incluir:

 

• Expropiado

 

• No expropiatorio

 

El programador es un programa en el sistema operativo que se delega para asignar recursos del sistema entre los procesos solicitados. En la medida en que pueda elegir, el programador debe dictar cuál de los procesos que compiten por la propiedad del recurso definido debe recibirlo. Los algoritmos tienen diferentes características dependiendo de los criterios sobre los que fueron creados. Esto se refleja en qué tipos de procesos se priorizan sobre otros en la discusión del procesador. Antes de votar sobre un algoritmo, las características de ese algoritmo deben tenerse en cuenta frente a los criterios de diseño elegidos. Algunos de los dichos son:

 

a) Eficacia: Expresada como porcentaje del tiempo medio de ejecución. Si bien puede parecer lógico tratar de mantener este parámetro cerca del 100 %, un costo tan alto puede degradar otros puntos de medición relevantes del comportamiento del sistema, como la latencia promedio que existe.

 

b) Desempeño: Una medida del número de procesos completados por unidad de tiempo.

 

c) Retorno o Tiempo de Retorno: El intervalo de tiempo entre cuando un proceso es creado o visto y cuando es completado por el sistema.

 

d) Tiempo de Espera: La cantidad de tiempo que un proceso espera para que se le conceda un procesador. Debido a que el tiempo que tarda el sistema en ejecutarse se ha eliminado del promedio, es posible que podamos medir la eficiencia del sistema con mayor precisión.

 

e) Tiempo de respuesta a un evento: Es el intervalo de tiempo desde que se ve el evento hasta que se ejecuta la primera instrucción de la rutina de servicio del evento.




 

jueves, 16 de febrero de 2023

Concepto de proceso

 Concepto de proceso


Un proceso no es más que un programa en ejecución e incluye los últimos valores de contador, registros e interruptores del programa. Conceptualmente, todos estos procesos tienen su propia CPU virtual. Por supuesto, de hecho, el procesador cambia de un proceso a otro.

 

Un proceso es un criterio administrado por el sistema operativo basado en un grupo que consta de:

 

Las reglas de un programa destinado a ser ejecutado por un microprocesador. Su estado de ejecución en un momento
dado, es decir, los valores de los registros de la CPU para este programa. Su memoria de trabajo, es decir, la memoria que ha reservado y su contenido

 

Un sistema operativo multihilo puede generar tanto hilos como procesos. La diferencia es que un proceso solo puede generar subprocesos propios y estos subprocesos comparten toda la memoria reservada para el proceso. En este modelo, todos los programas ejecutables en una computadora, incluido siempre el sistema operativo, se organizan en una serie de procesos contiguos, o simplemente procesos. Jerarquía de procesos Un sistema operativo que se ocupa de la terminología de procesos necesita un mecanismo para generar todos los procesos necesarios. Otros sistemas operativos tienen llamadas al sistema para generar un proceso, cargar su memoria y ejecutarlo. Un proceso debe ser capaz de generar otros procesos.


Estados y transiciones de los procesos



Estados y transiciones de los procesos


La tarea principal del procesador es ejecutar las reglas de la máquina que residen en la memoria primaria. Para que un programa se ejecute, el sistema operativo crea un nuevo proceso y el procesador ejecuta sus reglas en secuencia. En un entorno de multiprogramación, el procesador intercala la ejecución de declaraciones de diferentes programas que residen en la memoria. El sistema operativo es responsable de decidir los patrones de anidamiento y la asignación de recursos para cada proceso.

 

puede detenerse porque el sistema operativo ha decidido ceder la CPU a otro proceso durante un tiempo. En el segundo caso estamos hablando de una formalidad del sistema (no hay suficiente CPU para darle a cada proceso su propio procesador privado).

 

1.- Ejecutándose (usando realmente la CPU en este instante).

2.- Listo (se puede ejecutar, pero se suspendió temporalmente para dejar que otro

proceso se ejecute).

3.- Bloqueo (no puede ejecutarse en tanto no ocurra algún evento externo).

Puede haber cuánto transiciones entre estos tres estados, como se muestra.

 


La transacción 1 ocurre después de que un proceso descubre que no puede continuar. En ciertos sistemas, un proceso debe realizar una llamada al sistema, bloqueo, para entrar en un estado bloqueado. En otros sistemas, MINIX incorporado, una vez que un proceso lee desde un determinado canal o documento (por ejemplo, una terminal) y no se puede acceder a ninguna entrada, se bloqueará automáticamente.

 

Las transiciones 2 y 3 son causadas por el programador de procesos, parte del sistema operativo, sin que el proceso lo sepa.

 

La transición 2 ocurre después de que el programador juzga que el proceso en ejecución ha estado funcionando el tiempo suficiente y es hora de dejar que otro proceso tenga algo de tiempo de CPU.

 

La transacción 3 ocurre después de que todos los demás procesos hayan tenido su parte justa y es hora de que el primer proceso reinicie la CPU.

 

La transacción 4 pasa una vez que pasa el evento externo que está esperando un proceso (como la llegada de la entrada). Sin otros procesos ejecutándose en ese momento, la transacción 3 se activa y el proceso empieza a correr

 

De lo contrario, es posible que el proceso deba esperar en espera durante un tiempo hasta que la CPU esté disponible. Usando un modelo de proceso, es mucho más fácil visualizar lo que está pasando en el sistema.

 

Procesos ligeros: Hilos o hebras

 Procesos ligeros: Hilos o hebras

El término proceso incluye 2 conceptos separados y potencialmente independientes: uno relacionado con la propiedad de los recursos y otro relacionado con la ejecución.


Unidad propietaria de recursos: a un proceso se le asigna una ubicación de memoria y, de vez en cuando, se le pueden dedicar otros recursos, como dispositivos de E/S o archivos.

 

Unidad a la que está asignado el procesador: Proceso es el flujo de ejecución (navegación) a través de uno o más programas. Las unidades que el sistema operativo planifica y entrega son los procesos.

 

Si tiene esta separación de propiedades, las unidades de asignación de CPU se conocen como subprocesos, mientras que las unidades que poseen recursos se denominan procesos.

 


 

jueves, 9 de febrero de 2023

Clasificación de los sistemas operativos

Clasificación



Sistemas operativos monousuarios


Un sistema operativo de usuario único es aquel que admite un cliente a la vez, independientemente de cuántos procesadores tenga la PC o cuántos procesos o tareas el cliente pueda ejecutar simultáneamente. Las PC individuales generalmente se agrupan bajo este título.


Sistemas operativos multiusuarios


Los sistemas operativos multiusuario son capaces de ofrecer servicio a bastante más de un cliente a la vez, ya sea a través de unas pocas terminales conectadas a la PC o a través de sesiones remotas en una red de comunicaciones. No importa cuántos procesadores haya en la máquina o cuántos procesos pueda ejecutar cada cliente al mismo tiempo.


Sistemas operativos monotareas


Un sistema de tarea única es aquel que permite solo un trabajo a la vez por cliente. Pueden darse situaciones de sistema multiusuario y monotarea, en las que se reciben varios usuarios en paralelo, pero todos ellos solo pueden realizar una tarea a la vez.


Sistemas operativos multitareas


Un sistema operativo multitarea es un sistema operativo que permite a un cliente realizar muchas tareas simultáneamente. Es común encontrar interfaces gráficas orientadas al uso de menús y mouse. Esto permite cambios rápidos en medio del trabajo de un cliente, aumentando la productividad.


Sistemas operativos uniproceso


Un sistema operativo uniproceso es aquel que solo puede manejar un procesador de computadora, por lo que una PC con más de uno podría ser inútil. El ejemplo más típico de esta clase de sistemas es 2 y MacOS.


Sistemas operativos multiproceso


Un sistema operativo multiproceso se refiere a la cantidad de procesadores en el sistema que es significativamente más de uno y puede usarlos todos para distribuir su carga de trabajo. Una vez que funciona asimétricamente, el sistema operativo elige uno de los procesadores, que hace el papel de procesador maestro y sirve como punto de apoyo para distribuir la carga a los otros procesadores, conocidos como esclavos.