【408】Sistema operativo - Inolvidable autoevaluación Pregunta 1 (Parte 1)

pradera

Preguntas de práctica del sistema operativo

primera parte:

1:

(Opción única) ¿Cuál de las siguientes afirmaciones es verdadera sobre las ventajas de los procesos sobre los hilos?
a. La creación de procesos es más rápida y liviana
b. El aislamiento entre procesos es más completo y seguro
c. La comunicación entre procesos es más fácil de lograr
d. El cambio entre procesos es más rápido
  • ❌AD:
    El proceso es responsable de la aplicación de recursos y es la unidad básica de aplicación de recursos.

    Thread es la unidad básica de la CPU para programar y ejecutar tareas, que es más ligera que el proceso.

    El bloque de gestión de control de procesos se denomina PCB, el bloque de gestión de control de subprocesos se denomina TCB y el bloque de gestión de control de subprocesos a nivel de usuario se denomina LWP.

  • ✅ B:
    El proceso tiene un espacio de direcciones independiente y está lógicamente aislado. Siempre que no haya problemas con el sistema operativo, un error en un proceso no afectará a otros procesos.

    Los recursos solicitados por el proceso, como el espacio de direcciones lógicas, se comparten entre los subprocesos del mismo proceso. Un subproceso fuera de los límites hará que todo el proceso se cuelgue.

    Debido a que el proceso es muy seguro, solo enfatizamos la seguridad de subprocesos al escribir código.

  • ❌C:
    El proceso está bien cerrado, por lo que la comunicación solo puede depender de terceros, como: conductos anónimos, conductos con nombre, memoria compartida montada, colas de mensajes, sockets de socket y semáforos.

    Debido a que los subprocesos comparten recursos de proceso, la comunicación es más conveniente. Solo necesita implementar la exclusión mutua para un recurso que es visible para todos. Los métodos de comunicación incluyen variables globales, mutexes, variables de condición y semáforos.

  • Recursos compartidos y exclusivos de hilos bajo un mismo proceso:

    • compartido:
      1. tabla de descriptores de archivos
      2. Método de procesamiento de señales
      3. directorio de trabajo actual
      4. id de usuario e id de grupo
    • Exclusivo:
      1. identificador de subproceso
      2. pila (cada subproceso crea sus propias variables temporales)
      3. Registros de contexto (guardar el contenido actual cuando cambia el proceso)
      4. Prioridad de programación (PRI y NICE)
      5. Palabra de máscara de señal (después de todo, se puede configurar mediante sigprocmask())
      6. error

2:

Las formas de acelerar una operación matricial incluyen:
a.Usar subprocesos múltiples en un procesador de un solo núcleo
b.Usar subprocesos múltiples en un procesador de varios núcleos
c.Mejorar la tasa de aciertos de la memoria caché mediante la optimización del orden de las operaciones
  • ❌R:
    Un procesador de un solo núcleo implementa subprocesos múltiples para que parezca que se están ejecutando múltiples tareas, pero debido a la sobrecarga de programación, la eficiencia de cada tarea es muy inferior a la de un solo subproceso de un solo núcleo. Se puede usar para un servidor de un solo núcleo para responder a múltiples solicitudes de usuarios.

  • ✅B:
    La matriz de a*b se multiplica por la matriz de b*c, y se entrega a los núcleos a*c, cada núcleo realiza b veces de multiplicación y b-1 veces de suma, múltiples núcleos son paralelos y el la velocidad es más rápida que la de un solo núcleo Los subprocesos son a*c veces más rápidos

  • ✅C:
    El proceso de acceso a la memoria de la CPU:

    1. El núcleo de la CPU inicia una solicitud de datos de VA (dirección virtual) y primero verifica si hay una PA (dirección física) correspondiente a los primeros 20 bits de la VA en la TLB (tabla rápida) dentro de la MMU dentro de la CPU. Es decir, no hay necesidad de Translation Table Walk.
    2. Si no hay PA correspondiente a los primeros 20 bits de VA en la TLB, debe pasar el registro de direcciones de la tabla de páginas de la MMUCR3Encuentre la dirección física de la tabla de páginas de primer nivel (directorio de páginas), consulte las entradas de la tabla de páginas correspondientes a los primeros 10 bits en la tabla de páginas de primer nivel (PA de la tabla de páginas de segundo nivel) y vaya a la segunda tabla de páginas de nivel (a menudo denominada directamente tabla de páginas) Consulte la entrada de la tabla de páginas correspondiente a los 10 bits del medio (PA del marco de la página), y el PA correspondiente al último VA es la entrada de la tabla de páginas de segundo nivel + el último desplazamiento de 12 bits. Este proceso ha pasado sucesivamente por la MMU, la tabla de páginas de primer nivel, la tabla de páginas de segundo nivel y la memoria.Parece que una persona camina, por lo que se llama Translation Table Walk.
    3. Esto se debe a que la TLB está dentro de la CPU, por lo que acceder a la TLB para obtener PA es mucho más rápido que acceder a la tabla de páginas de dos niveles en la memoria para obtener PA.
    4. Eliminación de TLB: cuando cualquier procesador en el procesador multinúcleo cambia el PA correspondiente al VA en el TLB, otros procesadores también cambian y se sincronizan en consecuencia.

3:

(Elección única) Qué elemento no se utilizará en el proceso de traducción de direcciones virtuales a direcciones físicas
a. MMU en la CPU
b. TLB en la CPU
c. Almacenamiento secundario (disco)
d. Registro que apunta al directorio de la página (CR3)
e Tabla de paginas en memoria
- ✅ABDE:
  1. El TLB contiene el PA correspondiente a los primeros 20 bits del VA y busca directamente el desplazamiento de PA+12 bits en la memoria sin pasar por la tabla de traducción.
  2. El TLB no contiene el PA correspondiente a los primeros 20 bits de VA, necesita pasar por la tabla de traducción, primero consultar el registro CR3 para obtener el PA del directorio de la página, luego acceder al PA del directorio de la página, acceder a la página tabla PA, y acceda a la memoria PA+desplazamiento de 12 bits.
  3. Tanto los registros TLB como CR3 se almacenan dentro de la MMU
  • ❌C:

    1. La CPU y los archivos en el disco nunca pueden interactuar directamente.Los archivos se programan en la memoria antes de usarse y luego se vuelven a escribir en el disco una vez que se completa la modificación.
    2. Archivo: Una colección de información almacenada en una computadora con un disco duro como soporte.
    3. Sistema de archivos: El mecanismo de software en el sistema operativo responsable de administrar y almacenar archivos.
    4. Apertura y cierre de archivos: Para evitar la recuperación repetida de directorios.
      El sistema operativo mantiene una tabla que contiene todos los archivos abiertos y numera cada entrada de archivo. Después de abrir el archivo, se almacena en la memoria misma, y ​​el índice del archivo en la memoria se almacena en la entrada de la tabla; después de cerrar el archivo , se vuelve a escribir de la memoria al disco Borre el índice y el número en la entrada.
    5. Seis estructuras jerárquicas del sistema de archivos: interfaz de llamada
      de usuario sistema de directorio de archivos módulo de verificación de control de almacenamiento sistema de archivos lógicos y búfer de información de archivos sistema de archivos físicos módulo de asignación auxiliar + módulo de programa de administración de dispositivos




    6. Asignación de bloques de disco para almacenamiento de archivos: asignación
      secuencial Asignación
      de enlaces:
      1. Enlace explícito: el puntero (número de bloque) al final de cada bloque físico del archivo se almacena directamente en la tabla de asignación de archivos FAT.
      Solo hay una tabla de asignación de archivos FAT en todo el disco. El número de bloque correspondiente a -1 significa que el bloque es el último bloque que almacena el archivo, y el número de bloque correspondiente a -2 significa que el bloque está libre. FAT está cargado en la memoria después de que se inicie el sistema operativo Reduzca la E/S del disco.
      2. Enlace implícito: excepto el último bloque de disco, todos los demás bloques de disco tienen punteros al siguiente bloque de disco.
      asignación de índice

4:

Los subprocesos A y B comparten el valor del entero x, ejecutan respectivamente dos líneas de código A{x=0;x=1;}; B{x=0; x=2;}, al final del programa, el valor de x puede ser:
a. 0
b. 1
c. 2
d. 3
  • ✅BC:
    En teoría, el valor de x depende de la última declaración de asignación, que puede ser x=1 o x=2, y la programación del proceso es relativamente aleatoria.
  • ✅Durante la prueba real, debido a que las dos declaraciones de asignación son muy livianas, básicamente no se activará la programación del proceso debido a la expiración del intervalo de tiempo, por lo que al escribir el código, el proceso de pthread_create() determina el valor de x.
  • Adjunte una copia del código de Linux, use el comando g++ file name -lpthread para compilar:
#include <iostream>
#include <pthread.h>
using namespace std;
int x;
void *func1(void *argv){
    
      
  //pthread_detach(pthread_self());
  *((int*)argv) = 0;
  cout<<"1  "<<*((int*)argv)<<endl;
  *((int*)argv) = 1;
  cout<<"1  "<<*((int*)argv)<<endl; 
  return (void*)&"0";
}
void *func2(void *argv){
    
     
  //pthread_detach(pthread_self());
  *((int*)argv) = 0;
  cout<<"2  "<<*((int*)argv)<<endl;
  *((int*)argv) = 2;
  cout<<"2  "<<*((int*)argv)<<endl;
  return (void*)&"0";
}
int main(){
    
    
  pthread_t tid1, tid2;
  pthread_create(&tid2, nullptr, func2, &x);
  pthread_create(&tid1, nullptr, func1, &x);
  pthread_join(tid2, nullptr);
  pthread_join(tid1, nullptr);
  cout<<"x = "<<x<<endl;
  return 0;
}


5:

(Opción única) ¿En cuál de las siguientes situaciones no es necesario utilizar un mecanismo de sincronización (bloqueo, semáforo, etc.)?
a. No hay recursos compartidos entre subprocesos
b. Recursos ilimitados
c. No hay programas concurrentes
d. No se requiere ninguno de los anteriores
  • ✅D:
    A: No hay recursos críticos, no hay mutex y no es necesario sincronizar
    B: La razón para agregar mutex al acceder a los recursos es que los recursos son limitados. Se puede decir que la mayoría de los casos no necesitan exclusión mutua cuando los recursos son ilimitado. (Tal vez todavía se necesita la comunicación de subprocesos, la comunicación de procesos puede usar canalizaciones anónimas, canalizaciones con nombre, memoria compartida, sockets, colas de mensajes)
    C: serial es equivalente a que todos los recursos estén controlados por un flujo de ejecución durante la ejecución del programa, no se requiere exclusión mutua

6:

(Opción única) ¿Qué factores no deben tenerse en cuenta al diseñar un sistema operativo?
a. Rendimiento del sistema
b. Confiabilidad del sistema
c. Seguridad del sistema
d. Todo lo anterior es necesario
  • ✅D

7:

(Opción única) ¿Cuál de las siguientes no es una tarea/función de un sistema operativo (común)?
a. Administrar recursos de hardware
b. Aislar el espacio de direcciones de un proceso
c. Manejar llamadas al sistema, interrupciones, excepciones
d. Evitar que los procesos de usuario entren en un estado de interbloqueo
  • ✅D:
    • Condiciones necesarias para el interbloqueo:
      1. mutuamente excluyentes
      2. no privar
      3. solicitud para mantener
      4. ciclo de espera
    • Estrategias de prevención de interbloqueos: rompiendo las cuatro condiciones necesarias
    • Algoritmo de evitación de interbloqueo:
      1. a través del algoritmo del banquero
      2. encontrar una secuencia segura del estado del sistema
    • Algoritmo de detección de interbloqueo:
      1. ¿Hay ciclos en el gráfico de asignación de recursos?
    • Algoritmo de solución de punto muerto:
      1. Apropiación de recursos: suspender algunos procesos estancados, apropiarse de sus recursos
      2. Método de proceso de cancelación: forzar la cancelación de algunos o todos los procesos de interbloqueo y aprovechar sus recursos
      3. Método de reversión de procesos: uno o más procesos revierten lo suficiente para evitar un punto muerto, que es un proceso que libera recursos voluntariamente.

8:

¿Cuáles de las siguientes afirmaciones sobre los sistemas operativos son verdaderas?
a. BIOS es una parte del sistema operativo
b. El modo de usuario y el modo kernel se refieren al estado de funcionamiento de la CPU
c. El controlador de interrupciones (incluida la llamada al sistema) es el único programa de entrada para que el modo de usuario ingrese al modo kernel.
d) Algunas interrupciones se pueden enmascarar, esta operación de enmascaramiento es una instrucción privilegiada.
  • ❌R:

    • Después de encender la placa base, el bus de la CPU se conecta a la ROM y a la RAM de la tarjeta de memoria en la placa base, y está lista.Mapeo de direcciones segmentadas en modo real, después de lo cual haga lo siguiente:

      1. El registro cs (segmento de código) en la CPU se establece en 0xffff
      2. El registro ip (puntero de instrucción) en la CPU se establece en 0x0000
      3. La primera instrucción a la que accede la CPU es el valor del registro del segmento cs <<4+desplazamiento del segmento ip = 0xfff0
      4. La conversión de dirección de segmento del modo real es (registro de segmento<<4+valor de compensación), no hay tabla de segmento
    • 0xfff0 es la dirección de entrada del programa BIOS en la ROM. El programa BIOS no se cargará en la memoria RAM. Las tareas principales son:

      1. Comprobar el entorno de hardware
      2. Establezca una tabla de vectores de interrupción y una rutina de servicio de interrupción, y muestre el resultado en la pantalla al mismo tiempo
      3. Cargue el cargador de arranque de 440 bytes (BootStrap) en el sector de arranque del sistema operativo (OBR) del primer sector accesible para el sistema operativo: disco 0 cabeza 1 cilindro 1 sector en la memoria
    • El programa BootLoader en la memoria hace el siguiente trabajo:

      1. Desactive las interrupciones y concéntrese en las siguientes cosas:
      2. A20 habilitar
      3. configuraciónValor del selector de segmento en el registro de segmento,
        registros de segmento en modo protegido yselectorAmbos son de 16 bits,
        Los 13 bits superiores del selector de segmento son el índice para encontrar el descriptor de segmento,
        los 2 bits inferiores son el nivel de privilegio de la solicitud y el bit del medio indica si la consulta actual es GDT o LDT.
        Debido a que el esquema de la dirección base del segmento <<4+offset en el registro del segmento ya no se usa para obtener ningún PA,
        pero consultadescriptor de segmentoVenirIndica la segmentación de la memoria y la dirección base del segmento para el modo protegido,
      4. Consulta si el límite GDT inferior de 16 bits en el registro GDTR de 48 bits está fuera de los límites,
        si no, pasa los 32 bits superioresUbique e inicialice la tabla de descriptores globales en la memoria,
        Los 16 bits superiores en el descriptor de segmento son la dirección base del segmento y los 16 bits inferiores son el límite del segmento.
      5. Establezca el bit 0 (bit PE) del registro CR0 en 1, ingrese al modo de protección y habilite el mecanismo de paginación
      6. Al abrir el mecanismo de paginación se realizan tres pasos:
        a) Inicializar el directorio de páginas y la tabla de páginas
        b.La dirección del directorio de la página se escribe en el registro CR3
        C. La posición PG del registro CR0 es 1
      7. conjunto de pila
      8. Cargue el kernel del sistema operativo desde el disco a la memoria y entregue el control de la computadora al kernel del sistema operativo
  • ✅B:

    • Para evitar el mal uso de las instrucciones privilegiadas, se propone el concepto de modo de usuario y modo kernel.
      La CPU juzga en qué estado se encuentra observando los 2 bits inferiores del registro del segmento CS.
      ring0 es el modo kernel. En este tiempo, la CPU puede acceder a la memoria a voluntad y ejecutar todas las instrucciones
      ring3 En modo usuario, la CPU solo puede acceder a la memoria solicitada por el usuario y ejecutar instrucciones no privilegiadas.
    • Las instrucciones privilegiadas comunes son:
      1. comando de dispositivo de inicio
      2. comando de parada
      3. configurar el comando del reloj
      4. Instrucciones de E/S
      5. protección de almacenamiento
      6. Borrar comando de memoria
      7. operación de interrupción
    • Tareas comunes en modo usuario:
      1. programación de procesos
      2. iniciar una interrupción externa
      3. Se produce un error de página
      4. preparar llamada al sistema
    • Tareas comunes en modo kernel:
      1. explicación del comando
      2. Todos los controladores de interrupción en la tabla de vectores de interrupción
      3. manejo de fallos de página
      4. Manejo de interrupciones de reloj
      5. llamada al sistema
    • Cómo ingresar al modo kernel desde el modo usuario:
      1. Interrupción, como la autoadministración
      2. Excepciones (también llamadas interrupciones sincrónicas)
      3. Interrupción suave: llamada al sistema (es la implementación específica de la trampa, y la trampa es una declaración visual, lo que significa que la conversión continua del usuario del kernel es como pisar una trampa)
  • ✅D:

    • La instrucción sti de interrupción enmascarada es una instrucción privilegiada.Cuando llega la interrupción enmascarable desde fuera de la CPU, el
      bit de interrupción enmascarable (bit IF) en el registro de bandera se establece en 1, y
      el bit de interrupción enmascarable (bit IF) en la bandera de respuesta el registro se establece en 0. no responde cuando
    • Clasificación de interrupción:
      1. Interrupción interna (no enmascarable):
        Generada a partir de la instrucción que se está ejecutando actualmente, detectada internamente por la CPU, respondiendo al proceso de ejecución de la instrucción, excepto
        interrupción cero y autointerrupción (gestión de visitas), omite automáticamente la instrucción de interrupción una vez que se completa el procesamiento,
        y algunas las instrucciones están procesando las excepciones continúan después
        1. Autointerrupción, como el control de acceso
        2. Interrupción de software, como /0, fuera de los límites, el código del programa contiene interrupción
      2. Interrupción externa (casi todas enmascarables)
        1. Solicitudes de periféricos, como entrada de teclado, impresora
        2. Intervención humana, como consola de programa, interrupción del reloj
    • Clase de interrupción 2:
      1. La interrupción suave se genera al ejecutar la instrucción de interrupción.
        El número de interrupción de la interrupción suave se indica directamente en la instrucción.
        No es necesario utilizar un controlador de interrupción y la interrupción suave no se puede enmascarar.
      2. La interrupción dura es activada por el periférico,
        el número de interrupción de la interrupción dura lo proporciona el controlador de interrupción y
        la interrupción dura es enmascarable
    • Flujo de procesamiento de interrupciones:
      1. Apague la interrupción
      2. Guarde el punto de interrupción mediante la instrucción implícita de interrupción de hardware (registro pc o contenido pc+psw)
      3. El bus DMA envía el vector de interrupción desde la tabla de vectores a la CPU (completado por hardware, ingresar después de la ejecución Estado del núcleo)
      4. El software asiste al hardware, usando la pila centralizada del sistema o la pila central independiente del proceso para guardar el campo y enmascarar la palabra 5.
      Ejecutar la rutina de servicio de interrupción
      6. Restaurar el campo y enmascarar la palabra
      7. Abrir interrupción
      8. Retorno de interrupción
    • Campo:
      32 registros de usuario + registro de PC
  • ✅C:

    • El método del modo usuario al modo kernel:
      1. interrumpir
      2. excepción (pausa síncrona)
      3. Interrupción suave: llamada al sistema (implementación específica de trap)
    • todas las llamadas del sistema

9:

¿Cuál de las siguientes afirmaciones sobre la pila es correcta?
a. La operación (push, pop) del proceso de modo de usuario en la pila de usuario caerá en el núcleo del sistema operativo
b. Distintos subprocesos del mismo proceso comparten una pila de modo de usuario
c. Distintos subprocesos del mismo proceso comparten una pila de interrupción
d. Modo de usuario Después de que el proceso cae en el núcleo, el puntero de pila del modo de usuario se almacenará en la pila de interrupción
e. El montón asignado por malloc puede no ser completamente continuo en la memoria física.
  • ❌R:

    • El estado del usuario usa un espacio de direcciones bajo de 0~3G, que contiene la pila del usuario. El
      estado del kernel usa un espacio de direcciones alto de 3G~4G, que contiene la pila del kernel.
    • La pila de interrupciones puede usar la pila del kernel directamente (más interrupciones son fáciles de desbordar),
      o puede ser utilizada por todos los subprocesos de proceso en el sistema operativo (no es fácil de desbordar)
      1. Si se usa la pila del kernel, las interrupciones pueden interrumpirse:
        después de que llega una interrupción, la pila del kernel en sí está vacía
        1. Primero inserte la dirección de la pila del modo de usuario en la pila del kernel,
        2. Luego configure el registro de la pila en la dirección de la pila del kernel que estaba vacío justo ahora
        Después de procesar una interrupción,
        1. Primero escriba la dirección de la pila del usuario en la parte superior de la pila del kernel en el registro de la pila
        2. Luego, saque la parte superior de la pila del kernel
      2. Si se usa una pila de interrupción independiente, la interrupción no se puede interrumpir:
        debido a que la pila de interrupción no registra en qué subproceso/proceso ocurrió la interrupción actual, debe volver al subproceso/proceso inmediatamente después de que se complete el procesamiento
  • ❌B:

    • Un proceso es la unidad básica para solicitar recursos. Los subprocesos de un mismo proceso comparten la mayor parte del espacio de direcciones, excepto la pila.
    • De forma predeterminada, la pila de subprocesos asigna espacio de pila del montón de procesos y cada subproceso tiene un espacio de pila independiente.
      Para evitar pisar el espacio de la pila entre subprocesos, también hay un pequeño tamaño de protección entre las pilas de subprocesos para aislar y proteger sus respectivos espacios de pila.Una vez que otro subproceso entra en esta área aislada, se activará una falla de segmentación.
    • El tamaño de la pila de procesos se determina aleatoriamente durante la ejecución y no tiene nada que ver con la compilación y la vinculación.
      La pila de procesos es más grande que la pila de subprocesos, pero no más de 2 veces.
      La pila de subprocesos tiene un tamaño fijo, puede usar ulimit -a para verla y usar ulimit -s para modificarla
  • ❓C:

    • Si la pila del kernel no sirve como pila de interrupciones, todos los subprocesos comparten la única pila de interrupciones en el sistema operativo.
    • Si la pila del kernel actúa como la pila de interrupción, la pregunta es si los subprocesos tienen pilas de kernel separadas.
      1. Al principio, todas las pilas del kernel están vacías y la pila del kernel de cada subproceso puede ser un proceso compartido o puede crearse con el tiempo.
      2. La práctica ha demostrado que los subprocesos en el sistema Linux tienen pilas de kernel independientes.
  • ✅D: Ver la explicación de A

  • ✅E:

    • La memoria de malloc es continua en VA, pero la tabla de páginas mapea el PA correspondiente a cada byte de VA.
      Por lo tanto, la memoria asignada por malloc puede no ser físicamente continua, pero debe ser lógicamente continua.

10:

(Elección única) ¿Cuál de las siguientes afirmaciones sobre subprocesos es incorrecta:
a. La simultaneidad no se puede lograr en un procesador de un solo núcleo
b. El subproceso es la unidad de programación independiente más pequeña del sistema operativo
c. Un valor de puntero, el resultado es el mismo
d. El cambio entre subprocesos necesita guardar parte del valor de registro y el puntero de pila
  • ❌R:
    • La concurrencia se refiere a la ocurrencia de dos o más eventos dentro del mismo período de tiempo, macroscópicamente simultáneos, microscópicamente alternos.
    • Paralelo significa que dos o más eventos ocurren al mismo tiempo
    • En 2001, IBM lanzó el primer procesador multinúcleo del mundo, IBM® POWER4.
      Pero la gente puede jugar al buscaminas y escuchar música al mismo tiempo.
  • ✅B:
    • concepto
    • Los subprocesos se dividen en subprocesos a nivel de kernel (KST) y subprocesos a nivel de usuario (ULT)
      1. KST tiene alta concurrencia (la única ventaja), alta sobrecarga, baja eficiencia y requiere cambio de kernel
      2. ULT tiene baja concurrencia (la única desventaja), baja sobrecarga, alta eficiencia y no requiere cambio de kernel (la programación de procesos de Bytheway está en modo de usuario)
      3. Un ULT puede ser para múltiples KST, múltiples ULT pueden ser para un KST, múltiples ULT pueden ser para múltiples KST
      4. La corrutina de Go y el subprocesamiento múltiple de Python son ULT
  • ✅C:
    • El valor del puntero es *p, lo que indica que la variable ya existe en el proceso y se pasa a diferentes hilos.
    • Las variables en la pila de diferentes subprocesos son únicas, y el proceso comparte el resto del espacio de direcciones.
      Por lo tanto, no importa si la variable en el proceso se abre en el montón o en la pila del proceso, el acceso al subproceso es público
  • ✅D:
    • Durante el proceso de cambio de subproceso, es necesario guardar el ID del subproceso actual, el estado del subproceso, la pila, el estado del registro, etc.
      1. SP: puntero de pila, que apunta a la dirección superior de la pila actual
      2. PC: contador de programa, almacena la próxima instrucción a ejecutar
      3. EAX: registro de acumulación, el registro predeterminado para la suma y la multiplicación

11:

Para un sistema operativo de 32 bits, cuando el tamaño de la página cambia de 4 KB a 8 KB, causará
: A. La tabla de páginas se vuelve más grande
. B. La entrada de la tabla de páginas se usa para guardar los bits de información de la página (sucia, r/w, válido/presente, etc.) El número aumenta
c. El número de bits que representan el desplazamiento en la página aumenta
d. La dirección física que se puede direccionar se vuelve más grande
  • El sistema operativo de 32 bits puede acceder a la memoria 2 32 = 4 GB
  • ❌R:
    Comprensión cualitativa, las entradas de la tabla de páginas son todas 4B, cuanto menor es el número de entradas de la tabla de páginas, menos memoria se consume para almacenar la tabla de páginas, el número
    de entradas de la tabla de páginas en la tabla de páginas de primer nivel es igual al número de páginas, el número de páginas de 8 KB es menor y el número de hojas de tabla de páginas es menor. consume menos memoria
    • Tabla de páginas de nivel 1:
      4 KB por página, 220 páginas en total
      . Una entrada de la tabla de páginas requiere 20/8 = 3 bytes para el número de registro, más 4 bytes para la información de la página.
      Una página puede almacenar 4 KB / 4B == 1K entradas de la tabla de páginas
      Requiere tabla de páginas 2 20 / 2 10 = 2 10 = 1K
      cada 4KB, multiplicado por 1K, es igual a 4MB
    • Tabla de páginas de nivel 1:
      8 KB por página, 2 19 páginas en total
      . Una entrada de la tabla de páginas requiere 19/3 = 3 bytes para el número de registro, más 4 bytes para la información de la página.
      Una página puede almacenar 4 KB/4B == 1K entradas de la tabla de páginas
      Requiere la tabla de páginas 2 19 / 2 10 = 512 hojas
      , cada 4 KB, multiplicado por 512 hojas, es igual a 2 MB
  • ✅B:
    • Tabla de páginas de nivel 1:
      4 KB por página, 220 páginas en total, compensación dentro de la página de dirección virtual hasta 212
      entradas de página requiere un número de 20 bits, dejando información de página de 12 bits,
      8 KB por página, 219 páginas en total , página de dirección virtual Compensación interna de hasta 2 entradas de 13 páginas que requieren un número de 19 bits, dejando información de página de 13 bits (promedio de bits más uno)
    • Mapa de bits de información de la página:
      entrada del directorio de páginas
    • Dos métodos para escribir en la memoria después de un golpe de CaChe:
      1. escritura simultánea:
        cuando la CPU escribe datos en la memoria caché, también escribe una copia en la memoria al mismo tiempo, de modo que las dos sean coherentes

      2. reescritura:
        cuando la CPU escribe datos en la memoria caché, marca el área de la memoria caché actualizada y solo vuelve a escribir en la memoria cuando el área debe ser reemplazada por una nueva área

      3. escritura posterior (no se usa comúnmente):
        cuando la CPU escribe datos en el caché, guarda los datos escritos en el búfer de actualización, y el búfer de actualización vuelve a escribir los datos en la memoria a su debido tiempo

    • Dos métodos de procesamiento después de una falla de CaChe:
      1. Asignación de escritura:
        lea la ubicación de escritura en la memoria caché y, a continuación, utilice la operación de acierto de escritura (escritura de acierto de caché). Una operación de error de escritura es similar a una operación de error de lectura.
      2. Asignación sin escritura:
        la ubicación de escritura no se lee en la memoria caché, pero los datos se escriben directamente en la memoria. De esta forma, solo la memoria de la operación de lectura de memoria se registrará en la memoria caché de Cache.
  • ✅C:
    1. Cuando una página tiene 4 KB (2 2 * 2 10 ), hay 2 20 páginas, los primeros 20 bits buscan la tabla de páginas y los últimos 12 bits se compensan en la página.
    2. Cuando una página tiene 8 KB (2 3 * 2 10 ), hay 2 19 páginas, las primeras 19 páginas buscan la tabla de páginas y los últimos 13 bits de la página se desplazan
    3. El desplazamiento de página de la dirección lógica, que es el mapa de bits de información de la página en el directorio de páginas o la entrada de la tabla de páginas de la tabla de páginas de segundo nivel
  • ❌D:
    • La cantidad de capacidad de memoria accesible es el número de 2 raíces de bus , que es igual al tamaño de la memoria

12:

¿Cuál de las siguientes afirmaciones sobre fallas de página es correcta?
a. Un programa de interrupción de falla de página generará una excepción y fallará
b. La interrupción de falla de página puede deberse al hecho de que la dirección virtual a la que se accede no tiene una asignación de página física correspondiente
c. La premisa de la interrupción de falla de página es TLB Miss
D. En el controlador de interrupción de falla de página Puede modificar las tablas de página
  • ❌R:

    • Cuando ocurre una interrupción interna en el modo de usuario, después de una interrupción por falla de página, el valor del registro y el puntero de pila se guardan, y cae
      en el modo kernel para el procesamiento de interrupciones sin bloquearse.
    • Proceso de manejo de interrupción de falla de página:
      1. Primero, el hardware entra en el kernel, guardando el contador del programa en la pila.
        La mayoría de las máquinas almacenan información de estado diversa sobre la instrucción actual en registros especiales en la CPU.
      2. El ajuste de contexto puede ocurrir durante el intercambio de entrada y salida de página,
        por lo que es necesario guardar información volátil en registros de uso general y otros registros de uso general.
      3. Verifique los bits de protección de validez y seguridad de la dirección de la página virtual. Termina el proceso si ocurre una falla de protección.
      4. Si simplemente no hay PA correspondiente a VA, el sistema operativo encontrará una página libre como el mapeo de VA
      5. Si no hay un marco de página libre, debe buscar una página que deba intercambiarse a través del algoritmo de reemplazo de página.
        Si se modifica el contenido de la página encontrada, debe guardar el contenido modificado en el disco.
        En este momento , marque la página como ocupada y, a continuación, escriba la llamada de disco, se produce el cambio de contexto (deje que se ejecuten otros procesos mientras espera la escritura del disco). Después de que el
        marco de la página esté limpio, continúe escribiendo la llamada de disco, se produce el cambio de contexto y escriba el contenido de la página libre en el disco a la página de memoria
      6. Cuando todo el contenido de la página en el disco se escribe en la página de memoria, se envía una interrupción al sistema operativo.
        El sistema operativo actualiza las entradas de la tabla de páginas en la memoria, actualiza el número de página de la asignación de página virtual a la página escrita
        y marca la página como normal.
      7. Restaure el estado antes de que ocurra la interrupción por falla de página y redirija el dispositivo de instrucción del programa a la instrucción que causó la interrupción por falla de página.
      8. El proceso que provocó el salto de página se programa y el sistema operativo vuelve a la rutina del código ensamblador.
      9. La rutina del código ensamblador restaura la escena, restaurando la información previamente guardada en los registros de propósito general.
  • ✅B:

    • El proceso de escritura de datos de la CPU en la memoria:
      1. La CPU accede a la TLB en la MMU para comprobar si se puede obtener directamente el PA correspondiente a la VA.
      2. Si no existe, se requiere el recorrido de la tabla de traducción para consultar el directorio de la página y encontrar el PA en la tabla de la página secundaria.
      3. Después de encontrar PA, verifique si CaChe ha almacenado PA y su valor almacenado. De lo contrario, debe buscar PA.
      4. Después de modificar la memoria, cargue selectivamente los valores de PA y memoria en Cache
    • El proceso de ocurrencia de la interrupción de falla de página:
      1. No hay PA correspondiente a VA en TLB
      2. No hay una tabla de páginas correspondiente a los primeros 10 bits de VA en el directorio de páginas.
      3. Hay tablas de páginas correspondientes a los primeros 10 bits de VA en el directorio de páginas, pero no hay ninguna entrada de tabla de páginas correspondiente a los 10 bits del medio en la tabla de páginas.
    • Tres tipos de fallos de página
  • ✅C:

    • La interrupción por falla de página se refiere a la ausencia de la tabla de página correspondiente a los primeros 20 bits de VA en la tabla de página, por lo que no se puede encontrar el PA inicial de la página correspondiente a VA.
    • Ahora que hemos ido a consultar la tabla de paginas, quiere decir que no hay PA correspondiente a la VA en la TLB
  • ❌D:

    • Si hay una entrada en la tabla de páginas correspondiente a los primeros 20 bits de VA, pero los permisos son incorrectos, elimine el proceso directamente
    • Si no hay una entrada en la tabla de páginas correspondiente a los primeros 20 bits de VA, la página física no está en la memoria
      1. Si la memoria no está llena, cargue una página grabable directamente desde el disco
      2. Si la memoria está llena, debe usar el algoritmo de reemplazo de página para volver a escribir una página en el disco y luego transferir una página grabable desde el disco.
      3. Después de la llegada de una nueva página, se debe agregar una nueva entrada en la tabla de páginas para registrar el PA de la página recién transferida en la memoria correspondiente a VA

13:

¿Cuál de las siguientes afirmaciones sobre el almacenamiento en caché Caché (memoria caché, no TLB) es correcta?
a. Encuentra el bloque de datos correspondiente basado completamente en la dirección virtual
b. Hay múltiples niveles de caché en la computadora, cuanto más cerca de la CPU, más pequeño es el caché
c. Cuando se cambia el proceso, el caché debe borrarse
d La tasa de aciertos de caché está relacionada con el orden del programa de aplicación
  • ☀️: Cache realmente ha aprendido los principios de la composición por computadora
    1. El caché es el caché interno de alta velocidad de la CPU, que almacena PA y los datos correspondientes en la
      memoria principal
      Además, solo se admite PA.
      • Early ARM9 Level 1 Cache usa direcciones virtuales como índices y etiquetas, llamado modo VIVT, que tiene serios problemas de duplicación/ambigüedad de caché
      • En el período posterior, ARM11 comenzó a usar la dirección virtual como índice y la dirección física como marca, lo que se denomina método VIPT, que resuelve el problema de la duplicación/ambigüedad de caché.
      • Flujo de trabajo VIPT:
        1. Cuando el VA se envía a la MMU/TLB para su traducción, también se envía a la memoria caché para encontrar el grupo (uso real del mapeo de asociación de grupos). Después de que la MMU completa la traducción y obtiene el PA, el PA busca un grupo específico. cachelina en el grupo
        2. Es decir, VI se refiere al uso de VA para encontrar la agrupación de bloques de caché
        3. PT se refiere al uso de PA para encontrar un Cacheline específico en el grupo especificado
    2. Principio de aceleración de caché: principio de localidad
      1. Localidad temporal: las instrucciones o los datos a los que se accedió recientemente pueden volver a accederse en un futuro próximo debido a la existencia de bucles.
      2. Localidad espacial: es probable que la instrucción o los datos a los que se accede estén adyacentes en el espacio de almacenamiento a la información actualmente en uso
    3. Partición de memoria:
      • La memoria se compone de 2 n bytes de direcciones, y cada 2 b bytes se dividen en un bloque, luego el desplazamiento en el bloque es de 2 b direcciones
      • Suponiendo que se dividen m bloques, los primeros log m bits de cada dirección representan el log m-ésimo bloque
      • Los bloques de memoria son más pequeños que las páginas de memoria.
        Bloque de caché:
      • La dirección de caché se divide en dos secciones: el bit alto indica el número de bloque de caché (número de línea) y el bit bajo indica el desplazamiento dentro del bloque (longitud de línea)
      • La memoria caché es mucho más pequeña que la memoria principal, por lo que el número de bloques de caché es mucho menor que el número total de bloques de memoria.
      • De acuerdo con el principio de localidad espacial, Cache no almacena la memoria principal en unidades de bytes, sino en unidades de bloques.
    4. El famoso problema de la velocidad de acceso a la matriz:
    • La matriz está organizada de cerca en la dimensión más baja en la memoria principal y luego en la siguiente dimensión más baja (almacene primero la misma columna y luego almacene la misma fila)
      método de almacenamiento de matriz
    • El principio de localidad espacial de Cache hace posible almacenar arr[x][y] cerca cuando se almacena arr[x][y] en Cache, por lo que atravesar
      arr[][] línea por línea es menos de 60 veces más rápido que atravesar tiempos columna por columna
    1. La estructura básica de Cache:
      • Cuerpo de almacenamiento en caché: almacene instrucciones y bloques de datos transferidos desde la memoria principal e intercambie información con la memoria principal en unidades de bloques
      • Mecanismo de conversión de direcciones de caché de memoria principal: realice la conversión de la dirección de memoria principal (PA) a la dirección de caché (número de bloque + desplazamiento de bloque) mirando la tabla (el número de bloques de caché es mucho menor que el de la memoria principal), en para distinguir si las entradas de la tabla son todas 0. Este bloque no tiene ningún PA correspondiente, o todos los 0 PA le corresponden, y se agrega un bit válido a la entrada, 1 significa que corresponde y 0 significa que no corresponde.
      • Unidad de control de reemplazo (hardware): cuando el caché esté lleno, reemplace el bloque de datos de acuerdo con el algoritmo de reemplazo de página y modifique el mecanismo de conversión de direcciones
      • y otras partes
    2. Reglas de mapeo para bloques de caché y bloques de memoria:
      • Mapeo totalmente asociativo: una parte de la memoria principal se puede asignar a cualquier parte de la memoria caché
      • Asignación directa: solo se permite asignar un bloque de memoria principal a un bloque fijo de caché
      • Establezca el mapeo asociativo: una parte de la memoria principal solo puede asignarse a unas pocas partes en un determinado grupo de caché
    3. Ejemplo de caché:
      • Suponga que el espacio de direcciones de la memoria principal de una determinada computadora es de 256 MB y su caché de datos con direccionamiento de bytes tiene 8 líneas de caché y la longitud de la línea es de 64B.
        Análisis: 256 MB indica que la dirección es de 28 bits, 8 líneas indican que la tabla mantenida por el mecanismo de traducción de direcciones de caché tiene 8 entradas y una longitud de línea de 64B indica que el desplazamiento en el bloque es de 6 bits
      • Búsqueda de tabla O(n) en mapeo asociativo completo, pero Cahceline no se reemplaza con frecuencia:
        • La dirección emitida por la CPU es 1111 1000 0100 1010 1010 1010 1010, los últimos 6 bits son el desplazamiento dentro del bloque, y los primeros 22 bits se utilizan para registrar la relación correspondiente con el número de bloque en la entrada de la tabla y buscar la tabla en el mecanismo de conversión de direcciones
        • Los últimos 6 bits son el desplazamiento en el bloque y consultan la tabla correspondiente en la organización de direcciones según los primeros 22 bits (1111 1000 0100 1010 1010 10):
          Conversión de direcciones de caché
        • Si el bit válido correspondiente al bloque de consulta es 1, devuelve datos; de lo contrario, debe buscar y reemplazar el bloque de caché correspondiente a PA
    • Bajo el mapeo directo, la tabla de búsqueda es O(1), pero la cacheline se reemplaza con frecuencia:
      • La dirección emitida por la CPU es 1111 1000 0100 1010 1010 1010 1010, los últimos 6 bits son el desplazamiento dentro del bloque, el número de líneas de registro en el medio = log8 = 3 bits son el número de bloque y los primeros 19 bits son utilizado en la entrada para registrar y corresponder a la relación de bloque de caché
      • Primero use los 3 dígitos del medio para bloquear el número de bloque y luego verifique si los primeros 19 dígitos existen en la entrada de la tabla. Si existe, escríbalo directamente, y si no existe, búsquelo.
        Tabla de búsqueda de asignación directa
    • Bajo el mapeo de grupo asociativo del grupo x-way, la búsqueda en la tabla es O (x), y el reemplazo de Cacheline no es frecuente
      • Supongamos que hay un grupo asociativo de 2 vías, u 8 líneas, cada línea tiene 64 bytes
      • La dirección emitida por la CPU es 1111 1000 0100 1010 1010 1010 1010, los últimos 6 bits son el desplazamiento dentro del bloque, el número de grupos de registros en el medio = log4 = 2 bits son el número de grupo y los primeros 20 bits son utilizado en la entrada para registrar y corresponder a la relación de bloque de caché
      • Primero use los 2 dígitos del medio para bloquear el número de grupo, y luego verifique si los primeros 20 dígitos existen en la entrada de la tabla de este grupo. Si existe, escríbalo directamente, y si no existe, búsquelo.
        Conjunto asociativo de 2 vías
  • ❌R:
    • El caché de nivel 1 puede consultar los datos en el bloque de caché a través de PA y VA
    • Los cachés de nivel 2 y nivel 3 solo pueden consultar los datos en el bloque de caché a través del PA
  • ✅B:
    • El caché de nivel 1 está dentro de la CPU, el caché de nivel 2 y nivel 3 están fuera de la CPU
    • Cuanto mayor sea la velocidad del dispositivo de almacenamiento, menor será la capacidad de almacenamiento y más caro será el costo
  • ❓C:
    • Cuando se cambia el proceso se debe refrescar la TLB encargada de registrar el PA correspondiente a la VA(Actualizar cuando se pierda y reducir permisos)
    • Cuando se cambia el proceso, debido a que el PA usado es inconsistente, la Caché tiene una alta probabilidad de cambiar
    • La memoria caché tiene un concepto llamado ambigüedad de la memoria caché, que se debe al hecho de que la memoria caché no cambia después del cambio de proceso.
      Para evitar la ambigüedad de la memoria caché, la memoria caché también se borra después del cambio de proceso. Se tarda mucho tiempo desde la falta constante hasta la repetición. -establecimiento
  • ✅D:
    • Caché almacena el contenido según la localidad temporal y la localidad espacial
    • Si la secuencia de ejecución de instrucciones tiene una fuerte repetibilidad en el tiempo y concentración en el espacio, puede evitar el acceso a la memoria accediendo a la memoria caché.

14:

Existe el siguiente código en una tarea de subprocesos múltiples, donde x es una variable compartida de subprocesos múltiples
----------------------comienzo------ ---- ------------
static int x = 0; // lock.acquire()
en el tiempo T1 ; // x = 1 en el tiempo T2 ; // lock.release() en hora T3 ; // hora T4 ------------------------fin------------------ --- La siguiente afirmación es correcta si? a. En el tiempo T1, el valor de x debe ser 0 b. En el tiempo T2, el valor de x debe ser 0 c. En el tiempo T3, el valor de x debe ser 1 d. En el tiempo T4, el valor de x debe ser ser 1 e. Ninguna de las afirmaciones anteriores es correcta













  • ❌R:
    • El primer hilo en entrar en la sección crítica, x no ha sido modificado en este momento, es 0
    • Después de entrar en la sección crítica del hilo, se ha modificado x, que es 1
  • ❌B:
    • El primer hilo que entra en la sección crítica, antes de que se ejecute x=1, x no ha sido modificado, es 0
    • Después de entrar en la sección crítica, se ha modificado x Antes de que se ejecute x=1, x ya es 1
  • ✅C:
    • En este momento, solo el subproceso actual ingresa a la sección crítica, y x = 1 acaba de ejecutarse, y no hay otro subproceso para modificarlo antes de que se libere el bloqueo
  • ✅D:
    • Al ir a T4, al menos un subproceso ejecuta x = 1, y ningún subproceso ejecuta x = 0, por lo que una vez que se cambia x a 1, es imposible volver a 0
  • ❌E

15:

¿Cuál de las siguientes afirmaciones sobre variables de condición (Variable de condición, cv) es correcta?
a. La función Wait(&lock) debe llamarse mientras se mantiene el bloqueo
b. La función Signal() liberará el bloqueo
c. Cuando la función Signal() regrese, es posible que el bloqueo no se mantenga y el programa necesite adquirir el bloqueo de nuevo,
la función d .Broadcast() despertará con éxito al menos un hilo en espera
  • ❌R:
    • wait() es para solicitar un bloqueo y es un valor de variable de condición –
    • Intente solicitar un bloqueo cuando no haya ningún bloqueo. Si el valor de la variable de condición es >0 en este momento, puede solicitarlo. Después de adquirir el bloqueo, el valor de la variable de condición:
    • Si el valor de la variable de condición es 0 en este momento, no se puede aplicar el bloqueo, pero la variable de condición sigue siendo –, -1 significa que un subproceso está bloqueado esperando adquirir el bloqueo
  • ✅B:
    • signal () es para liberar el bloqueo y es una variable de condición ++
    • Cuando el valor de la variable de condición ++ > 0, el bloqueo puede ser utilizado por el proceso de espera (), de lo contrario, hay |valor de la variable de condición| procesos que se bloquean y esperan
  • ✅C:
    • Después de que signal() libera el bloqueo, el subproceso actual vuelve a participar en el arrebato de bloqueos por parte de muchos subprocesos, y es probable que la próxima ronda de bloqueos no sea arrebatada.
  • ❌D:
    • pthread_cond_signal() activa al menos un proceso que espera adquirir el bloqueo y comienza a competir por el bloqueo
    • pthread_cond_broadcast() activará todos los procesos que esperan adquirir el bloqueo y comenzarán a competir por el bloqueo

dieciséis:

¿Cuál de las siguientes afirmaciones sobre los tres tipos comunes de sistemas de archivos: FAT, FFS y NTFS es correcta?
a. El sistema de archivos FAT tiene una velocidad de lectura aleatoria baja para archivos grandes;
b. El sistema de archivos FFS adopta un índice de estructura de árbol asimétrico (profundidad) para admitir el almacenamiento y la búsqueda eficientes de archivos pequeños y grandes al mismo tiempo; c.
El sistema de archivos NTFS es el más amigable con los archivos pequeños, porque puede almacenar datos directamente en la MFT, mientras que los otros dos sistemas de archivos requieren índices; d. El sistema de archivos
FAT puede admitir la representación de archivos dispersos;
e. El sistema de archivos FAT utiliza el algoritmo de asignación de ajuste siguiente ; El sistema de archivos FFS usa el algoritmo de asignación de primer ajuste; El sistema de archivos NTFS usa el algoritmo de asignación de mejor ajuste
  • ✅R:

    • El proceso de búsqueda de archivos en el sistema de archivos FAT en el sistema de archivos de enlace explícito:
      1. Encuentre <nombre de archivo: número de bloque de inicio> en la tabla de memoria FCB
      2. Encuentre algunos datos en el bloque inicial del disco duro
      3. Encuentre el siguiente número de bloque correspondiente al número de bloque inicial en la tabla FAT, si no es EOR
      4. Encuentre algunos datos en el número de bloque correspondiente del disco duro
      5. Encuentre el siguiente número de bloque correspondiente al número de bloque inicial en la tabla FAT, si es EOR
      6. Finalizar búsqueda, se han encontrado todos los datos
    • Se puede ver que el bloque x solo se puede encontrar a través del método de estrella de cadena hacia adelante,
      por lo que el sistema de archivos FAT tiene una tasa de lectura aleatoria baja para archivos grandes.
    • Para evitar movimientos repetidos de la cabeza, el sistema de archivos FAT almacena archivos de acuerdo con el siguiente principio de ajuste
  • ✅B:

    • FFS usa el método BLA para encontrar datos en lugar del método CHS
    • BLA divide el disco duro en dos partes, BOOT Block y Block Groups
      Block Group es una matriz grande, cada matriz contiene 6 partes:
      Block Bitmap e inode Bitmap son ambos mapas de bits, por lo que FFS usa el primer algoritmo de ajuste Grupo de bloques: usamos Block group [1 2 3] para almacenar archivos, en el que el nodo inodo almacena los metadatos de la información del archivo, y el bloque almacena el archivo real.El tamaño de cada bloque BLock es fijo, y los metadatos del archivo se almacenan en el inodo en lugar de en el archivo de directorio donde se encuentra: la estructura de datos de FFS es un árbol asimétrico de tamaño fijo (profundidad diferente) de índice de niveles múltiplesEl número de archivo es el índice de la tabla de inodos, que es muy adecuada para acceder a archivos pequeños y grandes. inserte la descripción de la imagen aquí
  • ✅C:

    • El sistema de archivos NTFS adopta el algoritmo de mejor ajuste, que no atraviesa todos los mapas de bits, sino que solo almacena en caché una parte: una
      función de NTFS: SetEndOfFile() se usa para especificar el tamaño esperado del archivo cuando se crea
      NTSF

    • Todos los metadatos de archivos NTFS (información relacionada con archivos, similar a los inodos FFS) se almacenan en el área MTF.
      Cada elemento de registro MFT tiene aproximadamente 1 KB y el formato es: encabezado de registro + atributo 1 + atributo 2 + atributo 3 + ...
      El atributo contiene el nombre del archivo + el tamaño del archivo + el tiempo de modificación del archivo...,la longitud se puede extender
      Entre ellos, el atributo DATA puede almacenar directamente el contenido del archivo pequeño completo o el puntero del archivo grande.
      NTFSMFT

    • Los directorios de contenido NTFS están organizados como árboles B o árboles B+

      1. El archivo MTF número 0 es el propio MFT
      2. El archivo MTF número 5 es el directorio raíz /
      3. El archivo MTF número 6 es el mapa de bits de espacio libre
      4. El archivo MTF número 8 es la lista de bloques defectuosos que contiene el volumen
      5. El archivo MTF número 9 es $Secure, es decir, información de control y acceso de seguridad
  • ❌D:

    • Solo FAT no admite archivos dispersos. Las ventajas de NTFS sobre FAT son:
      1. Cifrado de archivos y permisos de archivos y carpetas
      2. Compresión de discos y archivos dispersos
      3. tamaño de archivo único, tamaño de partición
      4. SetEndOfFile() se usa para especificar el tamaño esperado del archivo en la creación (cuota de archivo)
      5. Admite Active Directory (directorio de trabajo actual) y dominios
    • FFS admite archivos dispersos:
      donde uno o más rangos de espacio vacío están rodeados por datos de archivo y el espacio vacío no ocupa espacio en el disco
    • NTFS también admite archivos dispersos:
      el algoritmo comprime 0 bytes inútiles y ya no ocupan mucho espacio
    • ls muestra un tamaño de archivo disperso mucho más grande que du muestra un tamaño de archivo disperso
  • ✅E:

    • Tiempo de invención:
      1. FAT es una tabla de asignación de archivos inventada por Microsoft en la década de 1970 y todavía se usa hoy en día en tarjetas de memoria flash y cámaras digitales.
      2. FFS se inventó en la década de 1980 y tiene una buena localidad espacial. Posteriormente EXT2 EXT3 se basa en esto
      3. NTFS es un sistema de archivos de nueva tecnología inventado por Microsoft en la década de 1990. Es el sistema de archivos principal de MS y representa el sistema de archivos en capas de EXT4 XFS APPLE.
    • Algoritmo adaptativo:
      1. FAT es el próximo ajuste
      2. FFS es el primer ajuste
      3. NTFS es la mejor opción
    • Estructura lógica:
      1. FAT es una sola lista enlazada
      2. FFS es un árbol asimétrico con buena localidad espacial
      3. NTFS es un árbol B/B+, la estructura del árbol es más flexible

17:

¿Cuál de las siguientes afirmaciones sobre el sistema de archivos virtual (vfs) es correcta?
a. Solo la definición de una API estándar
b. El propósito es admitir mejor los diferentes tipos de dispositivos de hardware de E/S
c. Al igual que los sistemas de archivos tradicionales, vfs también tiene los conceptos de inodo y dentry
d. Llamadas al sistema de E/S ser recibido por vfs primero, y luego pasado al sistema de archivos correspondiente
  • ❌R:
    • El sistema operativo inicial estaba hecho a medida para el hardware.Después de que naciera el sistema de archivos de red, la gente comenzó a interesarse en admitir múltiples tipos de archivos en un solo sistema.
    • El VFS moderno admite docenas de FS, permite que las nuevas funciones y diseños sean transparentes para el programa y tiene una capa independiente de la tienda de respaldo. Compatibilidad con sistemas de archivos en memoria y pseudosistemas de archivos configurables y sistemas de archivos de red
    • VFS no es solo un envoltorio de API, sino también una pieza importante de código
  • ✅B:
    • VFS hace que la perspectiva del usuario ignore las diferencias de hardware y solo pueda ver:
      1. Interfaz de programación única, funciones unificadas bajo POSIX que encapsulan llamadas al sistema
      2. Árbol de sistema de archivos único, que puede montar de forma transparente sistemas de archivos remotos
      3. Opcionalmente, personalice bibliotecas para cada sistema de archivos
  • ✅C:
    • VFS también usa BLA para la administración de discos, donde cada grupo de bloques contiene 6 partes
      1. El superbloque refleja el sistema de archivos real, el tamaño y el estado del archivo.
      2. Hay dos tipos de inodos, uno es el inodo del VFS y el otro es el inodo del sistema de archivos específico.
        El primero está en la memoria, el segundo está en el disco. Entonces, cada vez, el inodo en el disco se transfiere realmente al inodo en la memoria, de modo que se usa el inodo del archivo del disco.
      3. El dentry de entrada de directorio se utiliza para describir los atributos lógicos del archivo. Cada archivo tiene una estructura de entrada de directorio, que
        contiene el puntero de inodo. Las entradas de directorio de cada archivo forman un árbol de directorio enorme, y
        las entradas de directorio solo existen en la memoria. No hay una descripción real correspondiente en el disco.
        Una entrada de directorio válida es una estructura y su puntero de inodo interno debe ser válido
  • ✅D:
    • El sistema de archivos real utilizado por el sistema Linux es VFS, y sus niveles son los siguientes:
      nivel VFS

18:

¿Cuál de las siguientes afirmaciones sobre la tecnología de redundancia de disco RAID 5 implementada mediante el método de paridad es correcta?
a. En comparación con la duplicación completa de RAID 1, ahorra espacio en disco
b. Cuando se daña más de un disco, los datos no se pueden recuperar
c. Cuando solo se daña 1 disco, pero no se sabe cuál, los datos no se pueden recuperar
d. el valor de paridad no se coloca en el mismo disco principalmente para evitar que el disco se convierta en un cuello de botella de E/S
  • RAID0: almacenado por separado en varios discos duros, sin medidas de seguridad

  • RAID1: Cada disco duro tiene un disco de respaldo

  • RAID10: Almacenado por separado en varios discos duros, cada disco duro tiene un disco de respaldo

  • RAID5: suponiendo que hay n> 2 discos duros, los datos se dividen en (n-1) partes y se obtiene una información de verificación general para las (n-1) partes de datos.
    Escriba n rondas, las primeras n-1 rondas son principalmente para escribir datos y la última ronda es principalmente para escribir información de verificación.
    En cada ronda, se selecciona un disco duro como soporte de información de verificación total y el resto se utiliza como soporte de datos.

  • ✅R:
    - RAID1 consume la mayoría de los recursos del disco duro

  • ✅B:
    - La verificación de paridad es similar a XOR

  • ❌C:
    - No necesita saber cuál es el disco dañado, solo necesita saber la información de la suma de verificación y el resto del contenido de almacenamiento del disco

  • ✅D:
    - Cuando se lee una parte de los datos y se descubre que está dañada:
    1. Si la información de verificación está en cada disco, entonces hay un cabezal de disco que está verificando la información en este momento.
    2. Si la información de verificación está solo en un disco, en este momento, el cabezal del disco debe moverse a la información de verificación de esta parte


19:

¿Cuál de las siguientes afirmaciones sobre las máquinas virtuales es correcta?
a. El kernel del sistema operativo (kernel invitado) en la máquina virtual se ejecuta en el estado del kernel y puede ejecutar instrucciones privilegiadas
b. Cuando ocurre una interrupción, el hardware decide enviarla al kernel host o al kernel invitado
c. El kernel invitado lo envía desde el kernel a través de la instrucción iret Al regresar al programa de usuario invitado, caerá en el kernel host
d.Use tablas de páginas ocultas para realizar el mapeo de memoria en la máquina virtual, y el kernel host necesita realizar un seguimiento de la modificación de la tabla de páginas en el núcleo invitado
  • El resumen del artículo de introducción a la máquina virtual más detallado y claro :

  • Tres condiciones de virtualización:

    1. Equivalencia: VMM debe simular el mismo entorno para la máquina virtual en la máquina host que se ejecuta en la máquina física.
    2. Eficiencia: el rendimiento de ejecución de las instrucciones de la máquina virtual no debe tener una pérdida significativa en comparación con el rendimiento ejecutado directamente en una máquina física.
    3. Control de recursos: VMM puede controlar completamente los recursos del sistema, y ​​vmm coordina y controla la asignación de recursos de las máquinas host a las máquinas virtuales.
  • Modelos atrapados y simulados:

    1. "Compresión de nivel de privilegio": el modo de kernel y el modo de usuario de la máquina virtual se ejecutan en el modo de usuario de la máquina física.
    2. Cuando la máquina virtual ejecuta instrucciones sin privilegios, la ejecución directa de la CPU
    3. Cuando una máquina virtual ejecuta una instrucción privilegiada, la esencia es ejecutar la instrucción privilegiada directamente en el modo de usuario, provocando una excepción del procesador y cayendo en el VMM.La función de manejo de excepciones VMM actúa como un proxy para que la máquina virtual complete el acceso a los recursos del sistema, es decir, el VMM simula el modo kernel.
    4. La "compresión de nivel de privilegio" también cumple con los requisitos de los recursos del sistema de control VMM en el estándar de virtualización. La máquina virtual no modificará los recursos de la máquina host porque puede ejecutar directamente instrucciones privilegiadas, destruyendo así el entorno de la máquina host.
  • Barreras para la virtualización de la arquitectura x86:

    1. De acuerdo con los permisos declarados por el registro del segmento CS de la CPU, las instrucciones se dividen en instrucciones privilegiadas que tocan los recursos del sistema e instrucciones no privilegiadas que no tocan los recursos del sistema.
    2. Sin embargo, bajo la arquitectura x86, las instrucciones confidenciales sin privilegios también pueden acceder a los recursos del sistema, y ​​VMM no interceptará la máquina virtual al ejecutar estas instrucciones confidenciales.
    3. Hay dos soluciones: una es modificar el código de invitado, que no cumple con las pautas de transparencia de virtualización. La segunda es la traducción binaria, que traduce las instrucciones confidenciales en instrucciones privilegiadas equivalentes. La traducción dinámica es mejor que la traducción estática y no es necesario crear nuevos archivos.
  • Tecnología de virtualización de memoria:

    1. Tanto el cliente como el host tienen su propio espacio de direcciones, y este espacio de direcciones se divide en espacio de direcciones virtuales y espacio de direcciones físicas debido al proceso. Hablemos de cómo la máquina virtual accede al espacio de memoria física de la máquina física.
    2. Conceptos básicos:
      HPA: dirección física del host
      HVA: dirección virtual del host
      GPA: dirección física del huésped
      GVA: dirección virtual del huésped
      PDBR: tabla de directorio de páginas Registro de dirección base física, llamado CR3 en X86
      EPT: tabla de páginas extendida
    3. La MMU tradicional solo es responsable de VA -> PA, y la MMU en el escenario de virtualización es responsable de GVA -> GPA -> HVA -> HPA Antes de la aparición de la virtualización de memoria asistida por hardware, este proceso se realizaba a través de software
      , es decir, a través de VMM. La implementación más típica es la tecnología de tablas de páginas ocultas.
    4. Tabla de páginas en la sombra:
      VMM combina las tablas de páginas en Guest y Host en una tabla de páginas, llamada tabla de páginas en la sombra, para realizar el mapeo GVA->HPA.
      tabla de página de sombra
    5. La tabla de la página oculta realiza la conversión de GVA -> HPA:
      • GVA->GPA: El software de la capa VMM configurará la página física de la máquina física utilizada por la tabla de página del invitado como protegida contra escritura. Cuando el invitado realiza contenido de escritura GVA->GPA,Debido a que es de solo lectura, provoca la salida de la VM, capturas en VMM. (Explicaremos el proceso de salida de VM en detalle cuando la CPU esté virtualizada).
      • GPA -> HVA: este proceso se realiza mediante el software VMM, que es fácil de entender,Es el malloc general
      • HVA->HPA, este proceso es lo que sabemos usarLa MMU física completa la conversión de la memoria virtual del proceso VMM a la memoria física.
      • Ponga GVA -> HPA,La relación de mapeo de esta ruta se registra en la tabla de páginas, que es la tabla de páginas ocultas.
  • Procesamiento de hardware de Intel de instrucciones confidenciales:

    1. Intel no modifica las instrucciones confidenciales no privilegiadas en instrucciones privilegiadas. Después de todo, no es necesario interceptar todas las instrucciones privilegiadas.
      Por ejemplo,estado del núcleobajocambio de proceso, necesita cambiar el registro CR3 para guardar el directorio de páginas del proceso actual
    2. Originalmente, el VMM necesita capturar cada modificación del registro cr3 por parte del kernel invitado, de modo que apunte a la tabla de páginas ocultas.
      usarSoporte de EPT de hardwareFinalmente, el registro cr3 no necesita apuntar a la tabla de páginas ocultas, solo apunta a la tabla de páginas del proceso del kernel invitado,
      por lo que el VMM no necesita capturar la operación del invitado en el registro cr3, y esta instrucción sensible no necesita estar atrapado en el VMM
    3. El modo de ejecución de la máquina host se denomina VMX Root Mode.
      El modo de ejecución de la máquina virtual se denomina VMX Non Root Mode.
      El registro cr3 puede aclarar si se trata de un invitado o de un host.
      La transición de la máquina host a la virtual máquina se llama entrada de VM
      desde la máquina virtual a la máquina host La transición se llama salida de VM
    4. VMM se ejecuta en VMX Root Mode.
      Con soporte de hardware Ept, la máquina virtual puede deshacerse del modo kernel y el modo de usuario y ejecutarse en el modo de usuario de la máquina física, es decir, la forma de compresión de nivel de privilegio, ejecutándose directamente bajo el dos estados del modo no raíz.
    5. El VMM en modo raíz puede cambiar a modo no raíz ejecutando el comando de virtualización de CPU VMLaunch, que se denomina entrada de VM.
      Cuando aparece un comando confidencial, la CPU cambia del modo raíz a modo no raíz, que se denomina salida de VM, y luego el VMM lo simula a través de comandos privilegiados Operación sensible
    6. Hay 3 diferencias en la CPU en modo VMX con soporte de hardware
      • El estado del usuario invitado puede ir directamente al estado del kernel sin pasar por el estado del kernel del Host
      • Después de que la CPU invitada recibe la interrupción, la CPU sale del modo invitado al modo host, y el estado del kernel del host maneja la interrupción y regresa al modo invitado una vez que se completa el procesamiento. IO también se puede manejar directamente en modo invitado
      • Originalmente, todas las instrucciones privilegiadas se producían cuando la máquina virtual salía y volvía al estado de kernel del host para ser procesadas por VMM. Ahora, las instrucciones privilegiadas que no requieren la intervención de VMM se ejecutan directamente en el invitado. Las instrucciones confidenciales seguirán saliendo y regresando al estado del kernel del host, y las instrucciones confidenciales serán simuladas por instrucciones privilegiadas.
    7. El sistema VMX diseña una estructura de datos para guardar el contexto: VMCS, una de las cuales se usa para guardar el estado de ejecución del host y el invitado, y la otra se usa para controlar el comportamiento del invitado.
  • ❌R:

    • Compresión de nivel de privilegio, el kernel y el usuario del invitado están en el usuario del host
  • ❌B:

    • Después de que ocurre la interrupción, el kernel host primero proporciona el controlador de interrupciones, luego el kernel host guarda el puntero de pila y la información de registro, y finalmente el kernel invitado ejecuta el controlador de interrupciones.
  • ✅C:

    • Una vez que se completa el procesamiento de interrupción del kernel invitado, si desea regresar directamente al usuario invitado, se produce una excepción de CPU, regrese al kernel host y luego el kernel host regresa al usuario invitado.
  • ✅D:

    • El kernel host modifica la tabla de páginas por sí mismo, por supuesto que sabe
    • Si el kernel invitado intenta modificar la tabla de páginas, activará un error de solo lectura y luego regresará al kernel host, y el VMM reescribirá la tabla de páginas ocultas y la tabla de páginas del sistema operativo.

20:

(Opción única) ¿Cuál de las siguientes operaciones no puede hacer que el modo de usuario cambie al modo kernel?
a. Excepción de error de página
b. Llamar a una función de cadena en libc
c. Dividir por cero
d. El programa del usuario abre un archivo en el disco
  • ❌R:
    • La excepción de falla de página activará el controlador de excepción de falla de página, que es un procesamiento de interrupción y necesita ingresar al estado del kernel
  • ✅B:
    • La biblioteca libc pertenece a la biblioteca de llamadas al sistema y la mayoría de las API corresponden a una llamada al sistema, por ejemplo, la interfaz open() utilizada en la aplicación corresponde a la llamada al sistema open() con el mismo nombre.
    • Pero no existe una correspondencia uno a uno entre las API en la biblioteca de funciones y las llamadas al sistema. Las aplicaciones pueden obtener los servicios proporcionados por el kernel con la ayuda de llamadas al sistema, pero algunas funciones, como las operaciones de cadena, no necesitan implementarse con la ayuda del kernel, por lo que no es necesario asociarlas con una llamada al sistema.
    • Hay interrupciones, excepciones y llamadas al sistema para que el estado del usuario ingrese al estado del kernel.Todas las llamadas al sistema harán que ingrese al estado del kernel.
  • ❌C:
    • Se produce una interrupción suave al dividir por 0, y es necesario ingresar al estado del kernel para dividir por 0.
  • ❌D:
    • Disk IO pertenece a la lectura y escritura de archivos, con llamadas al sistema de open(), close() y write(), y necesita ingresar al estado del kernel

21:

Las siguientes operaciones que cambiarán inmediatamente el contenido de TLB son
a. Aumentar el mapeo en la entrada de la tabla de páginas
b. Modificar la dirección de la página física asignada en la entrada de la tabla de páginas
c. El subproceso A en el mismo proceso cambia al subproceso B
d. Modo de usuario proceso A Cambiar al modo de usuario proceso B
  • ☀️TLB se usa como caché de direcciones y debe ser coherente con la tabla de páginas PTE
    • Tres situaciones comunes de descarga de TLB:
      1. señorita TLB
      2. Cambio de proceso (excluyendo ingresar al modo kernel, solo enfatizando diferentes cambios de proceso)
      3. Cambios en los permisos de entrada de la tabla de páginas
      4. Derribos TLB poco comunes
    • Descarga relacionada con la consistencia de la tabla de páginas:
      1. Cuando el contenido de la tabla de páginas PTE cambia, como cuando la página se cambia durante un error de página, solo se borrará una determinada entrada de TLB.
  • ✅A:
    • Dado que ahora no está seguro si hay VA correspondiente a PA1 en la tabla de páginas, y la nueva asignación es el caso de VA correspondiente a PA2, se requiere un elemento en el TLB de descarga.
  • ✅B:
    • La modificación de la dirección de la página física asignada pertenece a la modificación de la entrada de la tabla de páginas, que debe sincronizarse con el TLB, y un elemento separado en el TLB de descarga.
  • ✅C:
    • Dado que las direcciones físicas utilizadas entre diferentes procesos son de comunicación casi nula, se requiere vaciar
    • Pero después de cambiar el proceso, las entradas TLB de la parte del kernel no cambiarán mucho.
  • ❌D:
    • Si todo el TLB se vacía al ingresar al modo kernel, el kernel enfrentará un TLB vacío, y luego el proceso de instrucción y acceso a datos en el modo kernel será muy largo.
    • Después de volver al estado de usuario desde el estado del núcleo, se vacía todo el TLB y se tarda mucho en acceder a las instrucciones y los datos en el estado de usuario.

Subsecuente:

  • Han pasado cuatro meses desde la última publicación del blog y hemos entrado en 2023. Pronto terminaré mi pasantía de cuatro meses y me prepararé para el examen de ingreso de posgrado. Espero desembarcar en la Primera Guerra Mundial.

Supongo que te gusta

Origin blog.csdn.net/buptsd/article/details/128869779
Recomendado
Clasificación