Red de conocimiento informático - Aprendizaje de código fuente - Concepto de sistema operativo" Pensamientos después de la lectura

Concepto de sistema operativo" Pensamientos después de la lectura

Después de un día y medio de arduo trabajo, finalmente conseguí el libro "Introducción a los Sistemas Operativos". Para mí, este libro es más atractivo porque he aprendido algunos conocimientos de hardware informático en clases profesionales. En este libro se presentan en detalle algunos términos profesionales o vocabulario sofisticado que ha escuchado antes y ganará mucho después de leerlo. Permítanme resumir lo que he aprendido aquí:

Primero está la introducción al primer capítulo Aquí primero presentamos el sistema informático, incluido el software y el hardware.

El siguiente es el foco del Capítulo 1: el sistema operativo. Como se muestra a continuación:

Los sistemas operativos actualmente populares incluyen Windows, Unix, Linux, etc. El sistema Windows de Microsoft ha pasado por un proceso de simple a complejo, de bajo nivel a alto nivel desde ms-dos---windows 3---windows 95---windows 98---windows nt---windows; 2000, hasta Ahora con win7, 8 e incluso win10, Microsoft ha ido avanzando. Unix es un sistema operativo universal interactivo de tiempo compartido. Fue desarrollado por Bell Labs, una subsidiaria de AT&T Corporation. El código fuente ha estado abierto desde su nacimiento. Los usuarios pueden participar en la actualización de Unix. En la era de Internet, hereda el legado de Unix y se han realizado muchas mejoras.

El primer capítulo del libro, seguido del segundo, tercero, cuarto, quinto y sexto capítulos respectivamente describen los diversos manejos de las computadoras, resumidos de la siguiente manera:

Aquí pongo cada uno Los puntos clave del capítulo están marcados en rojo, de modo que durante la lectura intensiva, pueda concentrarse en divergir hacia afuera, captar los puntos de prueba y superarlos. El dibujo era un poco tosco cuando lo leí por primera vez, pero mejoró mucho después de una lectura intensiva.

El concepto de nudo de aprendizaje del sistema operativo [Parte 2]

1. ¿Qué es el rendimiento de la computadora?

El llamado rendimiento de la computadora (rendimiento) generalmente se refiere a la velocidad de ejecución de la computadora, que es el recíproco del tiempo de ejecución del programa. El tiempo de ejecución del programa se refiere al tiempo de espera después de que el usuario envía la tarea a la computadora hasta que necesita el resultado.

Incluyendo:

1. Tiempo de acceso al disco y a la memoria

2. Tiempo de ejecución de la CPU

#url# Tiempo de operación

p>

4. Tiempo de sobrecarga del sistema operativo, etc.

2. La importancia del análisis de rendimiento del sistema operativo de escritorio Linux

1. El rendimiento del sistema operativo afecta directamente el rendimiento del sistema de aplicaciones en él

> 2. El resultado de la evaluación del desempeño son indicadores de referencia importantes para los usuarios en el proceso de compra de un sistema operativo

3. Proporcionar orientación a los desarrolladores para optimizar el rendimiento del sistema operativo

4. Proporcionar una base para la evaluación del sistema operativo

5. Proporcionar una base para la evaluación del sistema operativo

3. Dificultades para analizar el rendimiento de los sistemas operativos de escritorio Linux

1. Aplicaciones varían ampliamente

2. Puntos de prueba Demasiados

3. Dependen de múltiples factores y características

4. No están dirigidos

5. Sin perspectivas de aplicación práctica

4. Rendimiento de la computadora

1. Evaluación del rendimiento a nivel de máquina

La evaluación del rendimiento a nivel de máquina incluye ciertos indicadores básicos de rendimiento de CPU y memoria , la disponibilidad y eficacia de la computadora y la evaluación general del rendimiento a nivel de la máquina. El costo, el precio y la relación rendimiento/precio de la computadora son los criterios de selección más importantes al introducir y comprar una computadora.

2. Evaluación del rendimiento a nivel de algoritmo

Los métodos de evaluación del rendimiento a nivel de algoritmo se utilizan principalmente para la evaluación de máquinas paralelas. Inicialmente, la mayoría de ellos se propusieron para la evaluación del rendimiento de algoritmos paralelos. Posteriormente, estos métodos de evaluación también se ampliaron a programas paralelos.

3. Evaluación del desempeño a nivel de programa

La evaluación del desempeño a nivel de programa utiliza principalmente un conjunto de programas de referencia (benchmark) para probar y evaluar el rendimiento del sistema informático.

5. Pruebe el nivel de precisión del programa

1. Programa real

Ejecutando aplicaciones reales, como el compilador de lenguaje c, software de procesamiento de texto tex, herramientas de diseño cad, especias, etc.

2. Programa principal

Extrae una pequeña cantidad de segmentos de código clave del programa real y evalúa el rendimiento del programa

2. Evaluar el rendimiento del programa

3. Programas de prueba pequeños

La longitud del código de estos programas de prueba generalmente está dentro de las 100 líneas. Los usuarios pueden escribir algunos segmentos de programas pequeños en cualquier momento. de acuerdo con sus propios propósitos y predecir Los resultados de salida (como problemas de reina, problemas de clasificación, problemas de números primos, etc.) se utilizan para juzgar el rendimiento de la máquina.

4. Programa de prueba integral

Primero cuenta las operaciones en una gran cantidad de aplicaciones para obtener la proporción de varias operaciones y luego compila artificialmente un programa de prueba para esta proporción.

6. Prueba comparativa 6.1 Significado

Los programas de pruebas comparativas se utilizan para probar y predecir el rendimiento de los sistemas informáticos, revelar las ventajas y desventajas de las máquinas con diferentes configuraciones y proporcionar a los usuarios Capacidades de toma de decisiones que le permiten saber qué máquina se adapta mejor a los requisitos de su aplicación. Los programas de referencia intentan proporcionar un estándar objetivo e imparcial para evaluar el rendimiento de la máquina.

6.2 Clasificación

Macro-Micro:

Hay dos categorías principales: macro benchmarks y micro benchmarks. El primero prueba el rendimiento general de un sistema informático y compara el rendimiento de diferentes sistemas informáticos en relación con una determinada categoría de aplicación, por lo que es útil para los compradores de máquinas, pero no puede revelar las razones del buen o mal rendimiento del sistema informático. Este último prueba las propiedades de un aspecto específico de la computadora, como la velocidad de la CPU, la velocidad de la memoria, la velocidad de E/S, el rendimiento del sistema operativo, las características de la red, etc.

Categoría de aplicación:

Rendimiento de punto fijo

Rendimiento de punto flotante

Rendimiento de servicios web

Datos rendimiento de procesamiento

Rendimiento del software del sistema

Rendimiento de computación científica y de ingeniería

6.3 Principales herramientas de evaluación comparativa

lmbench

Por sgi Mantenido por larry mcvoy, es un punto de referencia portátil que prueba la sobrecarga del sistema operativo y la capacidad de transferir datos entre procesadores, cachés, memoria principal, redes y discos en diferentes plataformas Unix.

piedra de afilar

Este es un programa de referencia integral diseñado para comparar el rendimiento de punto flotante de diferentes computadoras. Lmbench mide principalmente los siguientes componentes del kernel: programador, gestión de procesos, comunicaciones, red, mapa de memoria y sistema de archivos.

dhrystone

dhrystone es un programa de referencia integral, que se utiliza principalmente para probar el rendimiento de operaciones lógicas y enteras. No puede predecir el rendimiento de los programas de usuario y la principal desventaja de estos puntos de referencia. es que los compiladores son muy sensibles.

linpack

Este punto de referencia es la velocidad de una subrutina de 64 bits de longitud de palabra con total precisión que resuelve un sistema de ecuaciones lineales de orden 100, con resultados expresados ​​en mflops (millones de operaciones de punto flotante por segundo) se dan en unidades.

spec

Inicialmente centrado en probar el rendimiento de la CPU, ahora enfatiza el desarrollo de pruebas comparativas que reflejan aplicaciones del mundo real (como cargas del mundo real, etc.) y se ha ampliado. a cliente/servidor Computación, aplicaciones empresariales y subsistemas de E/S.

unixbench

Una de las herramientas de prueba de rendimiento más utilizadas en sistemas operativos tipo Unix. Es un programa de microevaluación que prueba principalmente el rendimiento relacionado con Linux, incluido el punto flotante de la CPU. capacidades informáticas, copia de archivos de diferentes tamaños utilizando diferentes tamaños de búfer, rendimiento de canalización, velocidad de inicio del proceso y sobrecarga de llamadas al sistema.

xbench

Prueba principalmente el rendimiento de la interfaz gráfica xwindow.

iozone

Una herramienta de evaluación del sistema de archivos que puede probar lectura, escritura, relectura, reescritura, lectura inversa, lectura zancada, fread, fwrite, lectura aleatoria, propagación, mmap y el rendimiento. de aio

ltp

El proyecto de prueba de Linux es un proyecto de prueba de código abierto del proyecto de prueba de Linux. Es la organización de pruebas de rendimiento de Linux más grande y se especializa en pruebas de rendimiento de Linux. Este proyecto recopila varias herramientas de prueba del kernel de Linux y materiales relacionados. Su objetivo es introducir pruebas automatizadas en las pruebas del kernel de Linux, mejorando así el rendimiento del kernel de Linux.

6.4 Situación actual y deficiencias

Los programas de referencia de Linux son todos programas de micro-benchmark que prueban un aspecto específico de la máquina y se centran en uno o más aspectos, como la velocidad de la CPU. Velocidad de la memoria, velocidad de E/S, características de la red, etc., con énfasis en el hardware. Actualmente no existen puntos de referencia macro para el rendimiento de todo el sistema operativo Linux.

Las herramientas de prueba de Linux existentes se basan en microbenchmarks. Hay demasiados puntos en el sistema operativo que se pueden utilizar para pruebas de micropuntos de referencia. Escribir una herramienta de prueba integral de tres capas de arriba hacia abajo consumirá mucha mano de obra y recursos materiales, y no tendrá mucho valor práctico. Después de todo, las aplicaciones varían mucho, lo que no favorece sacar conclusiones rápidas sobre el rendimiento de la versión de Linux en un tiempo limitado.

7. Método de evaluación del desempeño

Cómo realizar la evaluación del desempeño En términos generales, la evaluación del desempeño de las soluciones reales debe incluir los siguientes tres aspectos:

p> p>

1. Someter el sistema evaluado a una carga de estrés;

2. Mida la capacidad del sistema para realizar tareas específicas de manera eficiente, el tiempo que lleva realizar tareas específicas y la utilización de la CPU cuando realizando tareas específicas;

3. Realizar mejoras basadas en consideraciones de rentabilidad. El propósito de la evaluación y el análisis del desempeño es ayudar a los desarrolladores a comprender mejor y más profundamente el sistema, identificar los cuellos de botella del sistema y realizar las mejoras adecuadas.

8. Tres técnicas de evaluación del desempeño

1. Tecnología de análisis (modelado)

La tecnología de análisis también se denomina análisis de modelado. Bajo ciertos supuestos, existe un. cierta relación funcional entre los parámetros del sistema informático y los indicadores de rendimiento. Las ecuaciones se enumeran según la carga de trabajo en las condiciones de conducción y se resuelven mediante métodos matemáticos.

2. Tecnología de simulación (simulación)

La tecnología de simulación establece un modelo de sistema basado en las características operativas del sistema de evaluación; establece un modelo de carga de trabajo basado en las posibles características de carga de trabajo del sistema; ; escribe simulaciones en lenguaje El programa imita el modo de operación del sistema de evaluación; diseña experimentos de simulación, selecciona factores relacionados con las metas de acuerdo con las metas de evaluación, obtiene valores experimentales y luego realiza estadísticas y análisis. Estadísticas y Análisis. La característica de esta tecnología es que puede usarse en el diseño o aplicación práctica del sistema y puede combinarse con tecnología de análisis para formar un sistema híbrido.

3. Tecnología de medición (medición)

La tecnología de medición solo puede medir sistemas que se han puesto en uso y, por lo general, utiliza diferentes niveles de pruebas de referencia.

9. Composición de la carga de trabajo (carga de trabajo)

La carga de trabajo es una simulación de tareas de trabajo reales. Una carga de trabajo es una tarea típica generada por el sistema de evaluación y es adecuada para el trabajo real. , y las tareas de trabajo deben producir cargas de presión correspondientes en el sistema. Una buena carga de trabajo de evaluación del desempeño debe incluir las siguientes características básicas.

Mensurabilidad

Repetibilidad

Constancia

Tipicidad

10. Siguiente análisis de arriba hacia abajo

1. Nivel del sistema: incluido procesador, memoria, disco duro, red, etc. (recursos de hardware)

2.

11. Medición y evaluación de Linux El principal estándares y parámetros de rendimiento del sistema de escritorio

1. Tiempo de respuesta (tiempo transcurrido)

El tiempo que tarda el kernel en completar una tarea (programa), como el acceso al disco, la memoria acceso, entrada/

salida en espera, etc.

2. Tiempo de CPU

El tiempo de ejecución del programa en la CPU. La unidad es segundos.

3. Utilización de la CPU

12. Los principales criterios para medir la evaluación del rendimiento de los sistemas operativos de escritorio Linux

Proporciona estándares unificados, objetivos, justos y comparables. .

1. Autorizado

No es sólo tu propia imaginación. Debe estar respaldado por bases teóricas y fácticas confiables y ser ampliamente reconocido por la industria.

2. Sistemático

No es una simple combinación de herramientas y puntos de referencia existentes, sino una evaluación sistemática del rendimiento del programa de la máquina.

Refleja las capacidades de procesamiento integrales de todo el software y hardware de la computadora, no solo el software o el hardware. Es decir, las pruebas en la misma plataforma de hardware pueden reflejar el rendimiento de diferentes sistemas operativos. en el mismo sistema operativo y diferentes plataformas de hardware también deberían ser diferentes.

3. Integralidad

Es una prueba del rendimiento general de la máquina, no solo una prueba de un determinado hardware o de un determinado aspecto de capacidad.

4. Practicidad

Se requiere que el método tenga valor práctico y significado de referencia.

5. Imparcialidad

No apuntar a determinados intereses.

13. Cómo determinar la carga de prueba

Desde la perspectiva de la teoría de micro-benchmark, hay demasiados parámetros de rendimiento básicos del sistema operativo Los parámetros de rendimiento básicos de la prueba. Incluye CPU, memoria, E/S, red, sistema operativo, sistema de archivos, compilador, base de datos y otros indicadores de rendimiento.

Es mucho más sencillo comenzar con la teoría macro comparativa, que determina principalmente la carga de trabajo adecuada para simular operaciones representativas del usuario. La determinación de la carga de trabajo requiere una cierta base teórica y los resultados prácticos de varias herramientas de prueba de Linux existentes se pueden utilizar como referencia.

14. Cómo probar el rendimiento del sistema operativo Linux

El sistema operativo de escritorio Linux es un sistema operativo para aplicaciones de escritorio de usuario desarrollado en base al kernel de Linux en los últimos años. El kernel todavía está basado en Linux. Simplemente agrega muchos programas de ventana y realiza grandes mejoras en la interfaz de usuario y la facilidad de uso, lo que lo hace más fácil de usar y más práctico.

Prueba de Linux

La clave para probar el rendimiento de Linux es probar el rendimiento del kernel de Linux, y la prueba del rendimiento del kernel de Linux se puede subdividir en cinco pruebas principales de subsistemas. Puede diseñar cargas de trabajo para estos cinco subsistemas del kernel.

El concepto de sistema operativo [Parte 3]

Fin del aprendizaje del sistema operativo Linux (1)

Recientemente leí un libro sobre el sistema operativo Linux Hablaba principalmente de algunos conocimientos conceptuales y no tenía una comprensión profunda del núcleo ni de los mecanismos internos. Ahora quiero resumir algunos conocimientos adquiridos al leer libros:

El mayor encanto de Linux es que admite GPL y está centrado en la red. De hecho, la función del sistema operativo es integrar eficazmente los recursos de software y hardware mientras atiende a los usuarios. El sistema operativo mejora la eficiencia del desarrollo y la clave para aprender Linux es estudiar y comprender su estructura central.

Hablando de la historia de Linux, la versión original fue desarrollada por el estudiante universitario finlandés Linustorvalds, y la versión actual de Linux fue desarrollada con la sabiduría de todos. Linux incluye muchas de las características que la gente espera de un sistema operativo, como verdadera multitarea, memoria virtual, los programas TCP/IP más rápidos del mundo, bibliotecas **** y soporte multiusuario, muchos de los cuales no son compatibles con Windows. Linux hereda casi todas las características de Unix y tiene muchas características nuevas creadas recientemente. Puede crear múltiples directorios de usuarios en el directorio raíz para lograr operaciones multiusuario. Linux también tiene una interfaz rica. Su código fuente es abierto y se puede utilizar en todas las plataformas. En resumen, Linux es poderoso en términos de capacidades de red y eficiencia de hardware.

Linux realiza exclusivamente las tareas de nivel más bajo, ya sea a nivel de programa o a nivel de usuario. En comparación con la interfaz gráfica, el shell es más directo y más rápido de usar. El desarrollo de controladores de dispositivos es más sencillo y conveniente en Linux. Desde la versión del kernel Linux 2.0, se admite el modo multinúcleo y se introduce la tecnología de módulo dinámico. El sistema puede modificar el kernel en tiempo de ejecución para lograr la escalabilidad dinámica del kernel, pero también trae ciertos efectos negativos de inestabilidad.

La investigación de Linux en mi país todavía está por detrás del nivel de primera clase del mundo. La dirección de desarrollo del kernel de Linux se centra principalmente en tres aspectos: soporte de hardware, sistemas integrados y sistemas distribuidos. Esto requiere mucho desarrollo de controladores de hardware y desarrollo de sistemas distribuidos por Internet.

El procesador es la CPU. En el sistema del procesador, no existe una ejecución concurrente real, es solo el destino de la ejecución en serie. La clave para mejorar la utilización del procesador es organizar adecuadamente el cambio entre programas. Los trabajos son en realidad solicitudes realizadas por los usuarios y los trabajos en línea requieren una ejecución interactiva en todos los dispositivos. Los comandos de Shell son interactivos y más en tiempo real. Puede ejecutar un comando a la vez o ejecutar comandos de script en lotes. Un proceso es un programa ejecutado dinámicamente. El proceso en Linux debe ser el mismo que el proceso en Windows. Cada proceso tiene un número de identificación único. El árbol de procesos muestra claramente las relaciones entre procesos. La PCB del bloque de control de procesos contiene una gran cantidad de información sobre el procesador y el sistema de archivos, y muchos procesos se programan de acuerdo con la PCB.

La función de la memoria virtual en Linux es maximizar la memoria limitada. Según el principio de localización, la memoria física del programa se divide en pequeños bloques con ciertas reglas. Cada vez que se ejecuta, solo el. Los bloques pequeños se cargan en la memoria y se ejecutan. Esto requiere una asignación razonable de la relación entre la memoria y la memoria externa, almacenando temporalmente pequeños bloques de memoria innecesaria en la memoria externa, y la CPU solo accede a una parte del programa. A través de múltiples intercambios de información entre la memoria interna y externa, se crea la ilusión de que se trata de una memoria virtual. El sistema utiliza un mecanismo de segmentación y un mecanismo de paginación de tres niveles.

Sabemos que el propósito de diseñar un sistema operativo es maximizar el uso de los recursos de hardware y mantener la computadora en condiciones de funcionamiento tanto como sea posible, lo que requiere una buena programación informática. Los niveles de programación del procesador se dividen en programación de trabajos, programación de intercambio, programación de procesos y programación de subprocesos de mayor a menor. La programación de trabajos es el nivel más alto y se utiliza para crear y finalizar trabajos; la programación de intercambio se refiere al intercambio de procesos entre el almacenamiento interno y externo; la programación de procesos se refiere a la transición entre estados de procesos y, finalmente, la programación de subprocesos se refiere a la ocupación o sin conversión entre ellos; Se requieren procesadores.

Los periféricos generalmente se refieren a dispositivos de hardware distintos de la CPU y la memoria, denominados colectivamente periféricos. Están conectados y gestionados de forma unificada a través de interfaces. El propósito de la administración de dispositivos es administrar coordinadamente una gran cantidad de dispositivos externos para que puedan funcionar de manera ordenada. En Linux, los dispositivos se administran de manera uniforme como un archivo y puede usar el modo de operación de archivo para operar dispositivos de hardware. La función del controlador del dispositivo es operar directamente el hardware y proporcionarle una interfaz.

El sistema de archivos es una parte importante de Linux. El sistema de archivos proporciona una gestión unificada de datos y dispositivos y proporciona una interfaz de servicio unificada para comandos de usuario y funciones del sistema.

La información del sistema para el archivo se guarda en la PCB del bloque de control de proceso. Resuma los dispositivos en archivos para una administración unificada y proporcione una interfaz unificada para la administración de dispositivos.

El sistema de archivos predeterminado es ext2.

El sistema de archivos virtual está ubicado en el nivel superior de la jerarquía del sistema de archivos de Linux, administrando varios sistemas de archivos lógicos o asimilando varios sistemas de archivos lógicos para lograr sus características multiplataforma.

El sistema de archivos de Linux utiliza múltiples índices, de forma similar a como se utiliza una cadena de estructura de datos. Cada archivo, directorio y dispositivo en el sistema de archivos está en el mismo nivel y corresponde a un i-nodo. El i-nodo en memoria es un espejo del i-nodo en disco para reducir la cantidad de accesos a dispositivos y mejorar la eficiencia del acceso a archivos.

El directorio de Linux en sí es un archivo, llamado archivo de directorio. Los directorios de un solo nivel tienen conflictos de nombres de archivos, mientras que en los directorios de varios niveles, se utiliza un árbol de directorios para registrar la estructura del directorio. Al compartir archivos, la ruta absoluta del archivo generalmente se usa para acceder al archivo. Si desea compartir el archivo, primero debe retroceder y encontrar el archivo compartido, lo cual es muy ineficiente. El método mejorado de vinculación de archivos permite que los archivos formen una estructura de red en el árbol de directorios.

El directorio raíz del sistema Linux es el directorio raíz, con varios subdirectorios predeterminados debajo de él. bin es el subdirectorio de utilidades, que almacena las utilidades del sistema de uso común; el subdirectorio de arranque almacena la imagen de inicio del sistema; el subdirectorio de desarrollo asigna un nodo i a cada dispositivo, etc., es el subdirectorio de datos básicos, que almacena la contraseña de usuario y la configuración de red. y otras configuraciones; inicio es el directorio de inicio del usuario, que almacena la contraseña del usuario del sistema, la configuración de red y otras configuraciones. ect es el subdirectorio de datos básicos, que almacena la contraseña del usuario, la configuración de red y otros archivos de configuración del sistema. home es el subdirectorio de datos del usuario, al que se accede de forma predeterminada después de que el usuario inicia sesión y almacena las funciones de la biblioteca; el directorio de usuarios del superadministrador.

El sistema de archivos virtual (vfs) administra de manera uniforme varios tipos de sistemas de archivos. No puede existir en un disco físico, solo puede existir en la memoria. Es responsable de administrar y controlar el sistema de archivos lógico subyacente, puede admitir varios sistemas de archivos lógicos y proporciona interfaces y administración unificadas para varios sistemas de archivos lógicos.

En resumen, después de un estudio superficial del sistema operativo Linux, tengo una cierta comprensión de la arquitectura y composición de todo el sistema, especialmente el sistema de archivos especial y la gestión de almacenamiento de Linux. impresión y comprensión. En el futuro, si tiene la oportunidad, deberá tener una comprensión más profunda de la estructura interna de Linux.

El concepto de sistema operativo [Parte 4]

1. ¿Qué es la sincronización? Dos procesos que cooperan entre sí necesitan coordinar su trabajo en un punto determinado. Una vez que un proceso llega a ese punto, debe detenerse y esperar a que se completen ciertas operaciones, a menos que el otro proceso haya completado estas operaciones. Esta es la sincronización entre procesos.

¿Qué es la exclusión mutua?

Dos procesos no pueden usar los mismos recursos clave al mismo tiempo. Solo después de que un proceso haya terminado de usarlos, el otro proceso puede usarlos. Este fenómeno se llama exclusión mutua entre procesos.

① Las principales características de la sincronización son: un proceso espera a que otro proceso proporcione información en un punto determinado, y existe una relación de restricción directa entre los dos procesos, que es en forma de proceso-proceso. . La exclusión mutua se manifiesta principalmente como: un proceso espera a que otro proceso proporcione información en un momento determinado, y existe una relación de restricción indirecta entre los dos procesos, que se expresa en forma de proceso-recurso-proceso.

2. Intente dar las definiciones de las operaciones p y v.

Las operaciones p y v son dos operaciones definidas sobre el semáforo s, las cuales se definen de la siguiente manera:

p(s): ①s: = s-1; , el proceso que llama a p (s) continúa ejecutándose; ③Si s 0, el proceso que llama a v(s) continúa ejecutándose ③Si s ≤ 0, el primer proceso se despierta de la cola de bloqueo esperando el semáforo s, y luego El proceso llamar a v(s) continúa ejecutándose.

¿Cómo utilizar las operaciones p y v para lograr la exclusión mutua entre procesos?

Las operaciones p y v son potentes herramientas para resolver problemas de sincronización y exclusión mutua. Para resolver el problema de exclusión mutua se deben seguir los siguientes pasos: Primero, enumerar los procedimientos que ejecutará cada proceso de acuerdo con la descripción del problema dado. En segundo lugar, configure la señalización. En el problema de exclusión mutua, se agrega p(s) antes de la sección crítica y v(s) después de la sección crítica. Finalmente, determine el valor inicial del semáforo. En problemas de exclusión mutua, el semáforo suele ser el número de recursos mutuamente excluyentes.

Explique el significado físico del semáforo:

Cuando el semáforo s > 0, el valor de s representa el número de recursos disponibles de un determinado tipo, y ejecutar la operación p representa una solicitud para asignar una unidad de Recursos; cuando s ≤ 0, significa que no hay recursos disponibles en este momento, el valor absoluto de s significa el número de procesos en la cola de bloqueo del semáforo s. significa liberar una unidad de recursos.

3. ¿Cómo utilizar las operaciones p y v para sincronizar entre procesos?

Las operaciones p y v son potentes herramientas para resolver problemas de sincronización y exclusión mutua. Para resolver un problema de sincronización, se deben seguir los siguientes pasos: Primero, enumerar los procedimientos que debe realizar cada proceso según la descripción del problema dado. En segundo lugar, configure el transmisor de señal. Establezca múltiples transmisores de señales para cada punto de sincronización en el problema de sincronización, agregando p(s) para esperar y v(s) para señalar (cancelar la espera)

. Finalmente, determine el valor inicial del transmisor de señal. En problemas de sincronización, el valor inicial de la señal generalmente se toma como 0; en problemas de sincronización y exclusión mutua, el valor inicial de la señal se establece de manera diferente: en problemas de sincronización, el valor inicial de la señal generalmente se toma como 0; Problemas de exclusión mutua, el valor inicial de la señal generalmente se toma como el número de recursos mutuamente excluyentes.

4. ¿Cuáles son las ventajas de las primitivas de comunicación avanzadas?

Puede transferir grandes cantidades de información entre procesos.

En la comunicación mediante buffer de mensajes, ¿cuáles son las funciones principales de las primitivas de envío y recepción?

La función de la primitiva de envío es copiar la información que se enviará desde el área de envío al búfer de mensajes y colgarla al final de la cola del búfer de mensajes del proceso de recepción. Si el proceso de recepción está bloqueado esperando un mensaje, el proceso se despierta.

La función de la primitiva de recepción: copiar el mensaje del remitente desde el búfer de mensajes al área de recepción y luego eliminar el búfer de mensajes de la cola de mensajes. Si no hay ningún mensaje para recibir, ingresa al bloqueo. estado.

5. ¿Qué es una dirección de correo electrónico?

Los buzones se utilizan para almacenar cartas, mensajes enviados de un proceso a otro.

Estructura de datos del buzón: encabezado del buzón y cuerpo del buzón. El encabezado del buzón es la parte de descripción del buzón. El cuerpo del buzón se compone de muchas cuadrículas, cada cuadrícula puede almacenar una carta.

La información contenida en el encabezado es: ① nombre del buzón ② tamaño del buzón ③ número de letras almacenadas ④ número de espacios.

¿Cómo utilizar el buzón para comunicarse entre dos procesos?

Antes de que el proceso a quiera enviar un mensaje al proceso b, primero debe compilar el mensaje en letras, luego llamar a la primitiva de envío para enviar las letras al proceso b y colocar las letras en el buzón del proceso. b. Para obtener información del proceso a, el proceso b solo necesita llamar a la primitiva de recepción y solicitar una carta del proceso a desde su buzón. Esto completa un proceso de comunicación desde el proceso a hasta el proceso b.

6. ¿Por qué se utiliza el mecanismo de comunicación de paso de mensajes en los sistemas operativos de red?

La comunicación basada en variables prestadas atención se utiliza para la comunicación entre procesos dentro de los nodos de la red, mientras que la comunicación basada en el paso de mensajes se utiliza para la comunicación entre procesos dentro de los nodos dentro de la red.

¿Cuáles son los métodos de comunicación en el mecanismo de comunicación de mensajería? Primitivas de comunicación ② Llamada a procedimiento remoto ③ Comunicación por paquetes.

7. ¿Qué es la sincronización primitiva?

Cuando un proceso llama a la primitiva de envío, después de enviar el mensaje, el proceso de envío está en un estado bloqueado hasta que el mensaje se envía por completo, las declaraciones posteriores de la primitiva de envío pueden continuar ejecutándose. Cuando un proceso llama a la cláusula de recepción, no devuelve el control inmediatamente, sino que espera hasta que la información se recibe y se coloca en el área de recepción designada antes de devolver el control y continuar con las instrucciones posteriores de la cláusula. Durante este tiempo permanece bloqueado. El envío y la recepción mencionados anteriormente se denominan primitivas de comunicación síncrona o primitivas de comunicación de bloqueo.

¿Qué son las primitivas asíncronas? El proceso de envío no entra en el estado de bloqueo después de llamar a la primitiva de envío; continúa ejecutando sus declaraciones posteriores sin esperar a que se envíe el mensaje.

Cuando se utilizan primitivas de comunicación asíncrona, ¿por qué el remitente no puede utilizar el búfer hasta que se envía el mensaje?

Porque si el proceso de envío utiliza o modifica el búfer original antes de que se complete el mensaje (es decir, durante el mensaje), se producirá un error.

¿Cómo solucionar este problema?

Hay dos formas de hacer esto (se deben usar primitivas asincrónicas): ① Use primitivas sin bloqueo con funciones de copia, es decir, deje que el kernel copie el mensaje al búfer del kernel y permita llamar al proceso. continúa corriendo. Utilice el envío sin bloqueo con interrupción, es decir, interrumpa el proceso de envío al enviar el mensaje y notifique al proceso de envío que el búfer está disponible en este momento.

8. ¿Cómo garantizar que los mensajes no se pierdan en la comunicación entre procesos?

Para garantizar que la otra parte reciba el mensaje, puede utilizar primitivas confiables. Específicamente: el cliente envía una solicitud al servidor y el kernel del servidor devuelve un acuse de recibo al kernel del cliente para esta solicitud. Cuando el kernel del cliente recibe este mensaje, activa el proceso del cliente. La solicitud/respuesta entre el cliente y el servidor requiere cuatro mensajes: el cliente envía una solicitud al servidor ② el núcleo del servidor envía una confirmación al núcleo del cliente ③ el servidor envía una respuesta al cliente ④ el núcleo del cliente envía una confirmación a el núcleo del servidor.

9.

9. Llamada a procedimiento remoto: en una red o sistema distribuido, hay dos nodos a y b. El proceso en el nodo a llama al proceso en el nodo b. , el proceso en el nodo a se suspende, el proceso llamado se ejecuta en el nodo b, el mensaje se pasa del proceso que llama al proceso llamado en forma de parámetros y el resultado de la ejecución del proceso llamado se devuelve al proceso que llama . Este tipo de comunicación se denomina llamada a procedimiento remoto.

¿Cuál es su principio básico?

Permite que un programa en un nodo llame a un procedimiento o función en otro nodo. Por ejemplo, un proceso en la máquina del nodo a llama a un procedimiento almacenado en la máquina del nodo b. El proceso de llamada en la máquina del nodo a se suspende y el procedimiento almacenado llamado se ejecuta en la máquina del nodo b. Los mensajes se pasan como parámetros del proceso que llama al proceso llamado, y los resultados de la ejecución del proceso llamado se devuelven al proceso que llama. La mensajería y el procesamiento de E/S son invisibles para el programador.

10.¿Qué significa transparencia en rpc?

Se refiere a realizar llamadas a procedimientos remotos lo más parecidas posible a las llamadas locales. El proceso que llama no debe saber que el proceso llamado se está ejecutando en otra computadora, y viceversa, y el proceso llamado no debe saber qué proceso en qué máquina lo llamó. Cómo garantizar esta transparencia: las llamadas a procedimientos remotos se vuelven transparentes configurando un proxy de cliente en la máquina cliente y un proxy de servidor similar en la máquina servidor.

11. Describir brevemente los pasos de la llamada a procedimiento remoto.

① El programa cliente llama al agente cliente de la forma habitual. El agente del cliente construye un mensaje y lo inserta en el kernel. El kernel local envía el mensaje al kernel remoto.

El kernel remoto envía el mensaje al agente del servidor. El agente del servidor obtiene los parámetros del paquete de mensajes y llama al servidor. El servidor completa el servicio correspondiente y envía los resultados al agente de servicio. (7) El agente de servicio empaqueta los resultados en mensajes y los envía al kernel. (8) El kernel remoto envía el mensaje al kernel del cliente. El kernel del cliente entrega el mensaje al agente del cliente. El agente del cliente recupera los resultados y los devuelve al programa de llamada del cliente. Y da ejemplos.

12. Intente explicar las ventajas y desventajas de las llamadas a procedimientos remotos.

Ventajas: formato estandarizado, fácil de usar, transparente

Desventajas: falta de flexibilidad;

¿Qué desafíos de implementación aún quedan por resolver?

① Los parámetros de las llamadas a procedimientos remotos no son lo suficientemente universales entre los diferentes modelos del sistema. ② Falta de capacidad para recibir resultados varias veces en una sola llamada. Las llamadas a procedimientos remotos carecen de la capacidad de transferir grandes cantidades de datos.

13. ¿Qué es la comunicación grupal?

En un sistema de red, una colección de procesos que interactúan se denomina grupo. La comunicación en la que un remitente envía mensajes a varios receptores en una sola operación se denomina comunicación grupal.

¿Cuándo se utiliza la comunicación grupal? La comunicación grupal se puede utilizar en sistemas de red.

¿Cuáles son las principales características de la comunicación por paquetes? Cuando se envía un mensaje a un grupo, todos los miembros del grupo lo reciben. La comunicación grupal toma la forma de "uno a muchos", es decir, un remitente y varios receptores.

¿Cómo implementar la comunicación grupal? La implementación de la comunicación grupal depende en gran medida del hardware. En algunos sistemas de red, a un grupo se le puede asignar una dirección de red especial. Puede ser multidifusión, difusión o unidifusión.