Análisis de documentos del sistema operativo.

1. Procesos e Hilos

1.1 Concepto de proceso

1.2 La diferencia y conexión entre proceso y programa.

2. Programación del procesador

3. Sincronización y Exclusión

3.1 Sincronización

3.2 Exclusión

4. Punto muerto

(3) Para evitar que esto ocurra, se pueden utilizar los siguientes métodos:

  1. Procesos e hilos

1.1 Concepto de proceso

  1. Un programa con ciertas funciones independientes realiza un proceso de ejecución dinámica y un proceso de asignación de recursos en un determinado conjunto de datos.
  2. Elementos del proceso: código, datos, tabla de proceso (bloque de control de proceso) Código, Datos, PT (PCB).
  3. Es la unidad básica de asignación de recursos.
  4. característica

①Dinamicidad: la cantidad de procesos es dinámica y su estado cambia con el tiempo. Cuando se crea un proceso, está en estado listo, esperando que el sistema asigne recursos y lo programe para el estado de ejecución. Cuando un proceso está programado para el estado de ejecución, comienza a ejecutar instrucciones. Cuando un proceso está esperando que ocurra algún evento (como esperar a que se complete la entrada/salida), entrará en un estado de bloqueo y esperará a que ocurra el evento. Cuando ocurra el evento, el proceso se despertará y volverá a entrar en el estado listo.

②Independencia: Cada proceso es independiente y no es fácil interferir o influirse entre sí. Cada proceso tiene su propio espacio de direcciones, incluido código, datos, pila, etc. La comunicación entre procesos debe realizarse a través de mecanismos específicos (como memoria compartida o canalizaciones).

③Concurrencia: en un entorno de multiprogramación, se ejecutan varios procesos al mismo tiempo y cada proceso tiene su propio flujo de ejecución independiente. Dado que la CPU solo puede ejecutar un proceso en un momento determinado, el sistema operativo necesita utilizar un algoritmo de programación para decidir qué proceso se ejecutará primero para lograr la concurrencia entre procesos.

④Asincronicidad: debido a las diferentes velocidades de ejecución entre procesos, el sistema operativo no puede garantizar que cada proceso pueda ejecutarse en el orden esperado. El proceso necesita esperar a que ocurran ciertos eventos durante la ejecución, como esperar a que se completen las operaciones de E/S o esperar una señal. En este caso, el sistema operativo necesita proporcionar los mecanismos correspondientes, como semáforos o gestión, para coordinar la secuencia de ejecución entre procesos.

1.2 La diferencia y conexión entre proceso y programa.

  1. Los procesos son dinámicos y los programas son estáticos.
  2. Los procesos son temporales, los programas son permanentes.
  3. La composición de procesos y programas es diferente.

①El programa contiene principalmente código y datos.

②Además del código y los datos, un proceso también tiene una tabla de procesos.

  1. Existe una conexión muy estrecha entre procesos y programas.

①El programa se ha creado varias veces y puede corresponder a diferentes procesos.

②Un programa puede ser utilizado por múltiples programas a través de llamadas al sistema.

(5) Un programa en ejecución se denomina proceso. Cada proceso se ejecuta en su propio espacio. El espacio es relativamente independiente y está protegido por el sistema operativo. En cada espacio de proceso, generalmente hay uno o más subprocesos ejecutándose.

  1. Programación del procesador
  1. Es una parte importante del sistema operativo. Su función principal es asignar procesos en el sistema a los procesadores disponibles de acuerdo con ciertas estrategias para maximizar la eficiencia y el rendimiento del sistema (tareas que se pueden completar por unidad de tiempo). datos procesados, es un indicador importante del rendimiento del sistema). Las siguientes son algunas estrategias comunes para la programación del procesador;

①Programación por orden de llegada (FCFS): la programación se realiza en el orden en que llegan los procesos, es decir, el proceso que llega primero se procesa primero.

②Programación de línea de servicio de trabajo más corto (SJF): la programación se realiza en función del tiempo de ejecución esperado del proceso y el proceso con el tiempo de ejecución más corto se ejecuta primero.

③Programación de prioridades: asigne una prioridad a cada proceso y programe de acuerdo con la prioridad. Los procesos con mayor prioridad se ejecutan primero.

④ Programación de rotación de intervalos de tiempo: divide el tiempo del procesador en varios intervalos de tiempo. Cada proceso se ejecuta durante un cierto tiempo en un intervalo de tiempo. Después de exceder el intervalo de tiempo, se suspende y espera la siguiente ronda de programación.

⑤Programación de colas de retroalimentación de varios niveles: divida el proceso en múltiples colas según la prioridad. Cada cola tiene un tamaño de intervalo de tiempo diferente. El intervalo de tiempo de la cola con alta prioridad es más corto y el intervalo de tiempo de la cola con baja prioridad es más largo Cuando un proceso completa su intervalo de tiempo en una cola, se moverá a la siguiente cola hasta que se complete el proceso.

(2) Diferentes estrategias de programación son adecuadas para diferentes escenarios. El sistema operativo selecciona la estrategia de programación más adecuada de acuerdo con la situación real para mejorar la eficiencia y el rendimiento del sistema.

  1. Sincronicidad y exclusión

3.1 Sincronización

Cuando varios procesos o subprocesos acceden a recursos compartidos al mismo tiempo, pueden ocurrir problemas de sincronización, como inconsistencia de datos, condiciones de carrera y conflictos. Para evitar estos problemas, es necesario utilizar un mecanismo de sincronización para coordinar el orden de ejecución de procesos o subprocesos. Los mecanismos de sincronización comunes son los siguientes:

①Semáforo: se puede utilizar para limitar la cantidad de accesos simultáneos a recursos compartidos. Los semáforos incluyen dos tipos: semáforos binarios y semáforos técnicos. Un semáforo binario sólo puede tomar dos valores, lo que indica que un recurso está disponible. El semáforo de conteo puede tomar múltiples valores, indicando cuántos recursos están disponibles. Cuando un proceso o subproceso necesita acceder a un recurso compartido, intenta adquirir un semáforo y, si el valor del semáforo es cero, espera hasta que el valor del semáforo sea distinto de cero. Una vez que un proceso o hilo adquiere el semáforo, puede acceder al recurso compartido. Una vez completado el acceso, el proceso o subproceso debe liberar el semáforo para que otros procesos o subprocesos puedan obtener el semáforo y continuar accediendo al recurso compartido.

②Variable de condición: generalmente se usa junto con el bloqueo mutex. Las variables de condición se pueden utilizar para suspender procesos o subprocesos mientras se espera un recurso compartido y reactivarlos cuando se cumple la condición. Cuando un proceso o subproceso necesita acceder a un recurso compartido, si descubre que el recurso ya está ocupado por otros procesos o subprocesos, puede esperar la variable de condición. Cuando se cumplen las condiciones de la variable de condición, el proceso o subproceso en espera se despierta y continúa la ejecución.

3.2 Exclusión

Proteja los recursos compartidos del acceso simultáneo de múltiples procesos o subprocesos, evitando así condiciones de carrera y conflictos. Los mecanismos de exclusión se utilizan a menudo para proteger la coherencia y la integridad de los recursos compartidos y evitar la incoherencia de los datos y resultados erróneos. Los mecanismos de exclusión comunes incluyen bloqueos mutex, bloqueos de lectura y escritura, etc.

① Bloqueo mutex: puede garantizar que solo un proceso o subproceso acceda a recursos compartidos en cualquier momento. Cuando un proceso o subproceso necesita acceder a recursos compartidos, solicitará un bloqueo mutex. Si el bloqueo ya está retenido por otro proceso o subproceso, luego Esperará hasta que se libere el bloqueo. Una vez que el proceso o subproceso obtenga el bloqueo mutex, podrá acceder de forma segura al recurso compartido. De manera similar, los recursos deben liberarse una vez completado el acceso.

② Bloqueo de lectura y escritura: un mecanismo de exclusión común que distingue entre operaciones de lectura y operaciones de escritura para mejorar el rendimiento de la concurrencia. Las operaciones de lectura no requieren exclusión y varios procesos o subprocesos pueden realizar operaciones de lectura al mismo tiempo; las operaciones de escritura requieren exclusión y solo un proceso o subproceso puede realizar operaciones de escritura. Cuando un proceso o subproceso necesita realizar una operación de escritura, solicitará un bloqueo de escritura. Si el bloqueo de escritura ya está retenido por otro proceso o subproceso, esperará hasta que se libere el bloqueo de escritura. Una vez que el proceso o subproceso obtenga el bloqueo de escritura, se puede realizar la operación de escritura. Cuando un proceso o subproceso necesita realizar una operación de lectura, solicitará un bloqueo de lectura. Si el bloqueo de escritura ya está retenido, esperará hasta que se libere el bloqueo de escritura. Si no se mantiene el bloqueo de lectura, puede obtener el bloqueo de lectura y realizar una operación de lectura. En los bloqueos de lectura y escritura, los bloqueos de escritura tienen un efecto exclusivo, mientras que los bloqueos de lectura tienen un efecto de compartir.

  1. punto muerto
  1. El punto muerto es un problema muy común en la programación concurrente. Ocurre cuando varios procesos o subprocesos esperan los recursos de los demás, lo que hace que todos los procesos o subprocesos no puedan continuar con la ejecución.
  2. La aparición de interbloqueo también es una condición necesaria, que son: condición de exclusión mutua, condición de solicitud y retención, condición de no privación y condición de espera de bucle.

① Condición mutuamente excluyente: cada recurso solo puede ser retenido por un proceso o subproceso a la vez. Si varios procesos o subprocesos solicitan un recurso mutuamente excluyente al mismo tiempo, solo un proceso o subproceso puede obtener el recurso.

② Condiciones de solicitud y retención: después de que un proceso o subproceso retiene un recurso, continúa solicitando otros recursos, y estos recursos pueden estar retenidos por otros procesos o subprocesos. Si un proceso o subproceso retiene un recurso pero se le niega una solicitud de otro recurso, conservará la posesión del recurso original sin liberarlo.

③ Condiciones de no privación: los recursos ya asignados no pueden ser privados por la fuerza. Si un proceso o subproceso ya posee un recurso, otros procesos o subprocesos no pueden privarlo por la fuerza.

④Condición de espera de bucle: varios procesos o subprocesos forman un bucle de espera, y cada proceso o subproceso está esperando los recursos retenidos por otros procesos o subprocesos.

  1. Para evitar que esto suceda, puede utilizar los siguientes métodos:

①Evite el uso de múltiples recursos compartidos

② Destruya las condiciones de espera del bucle, como introducir prioridad de recursos, introducir un mecanismo de tiempo de espera, etc.

③Evitar puntos muertos, como la asignación de recursos en un orden determinado y el uso de métodos de diagrama de asignación de recursos.

④ Detectar y recuperar puntos muertos, como el uso de algoritmos de detección de puntos muertos, algoritmos de recuperación de puntos muertos, etc.

*Cabe señalar que aunque las medidas anteriores pueden evitar o resolver el problema del punto muerto, estas medidas aumentarán la complejidad y los gastos generales del sistema. Por lo tanto, al diseñar e implementar el sistema, se debe considerar plenamente el problema del punto muerto y se deben adoptar métodos y estrategias apropiados para evitar y resolver el problema del punto muerto.

Supongo que te gusta

Origin blog.csdn.net/LforikQ/article/details/130552816
Recomendado
Clasificación