1. Descripción general del sistema operativo
1.1 Definición y objetivos del sistema operativo
Definición: El sistema operativo es el hardware y el software que controla y administra el sistema informático, y el software del sistema que asigna y programa los recursos .
Objetivos: conveniencia, eficacia (mejorar la tasa de utilización de los recursos del sistema, aumentar el rendimiento del sistema) , capacidad de expansión y apertura.
1.2 Funciones básicas del sistema operativo
- Gestión unificada de recursos informáticos : recursos de procesador, recursos de dispositivo IO, recursos de memoria, recursos de archivo;
- La abstracción de los recursos informáticos se realiza : el software de gestión de dispositivos IO proporciona una interfaz de lectura y escritura, y el software de gestión de archivos proporciona una interfaz de archivo de operación;
- Proporciona una interfaz entre el usuario y la computadora : GUI (interfaz gráfica de usuario), formulario de comando y formulario de llamada al sistema.
1.3 Características del sistema operativo
Las características más básicas son las condiciones de existencia mutua: concurrencia y compartición;
(1) Paralelismo : significa que dos o más eventos pueden ocurrir al mismo tiempo , las CPU multinúcleo pueden lograr el paralelismo y solo un programa se ejecuta en una CPU al mismo tiempo;
(2) Concurrencia : Significa que dos o más eventos pueden ocurrir en el mismo intervalo de tiempo . Al usuario le parece que cada programa se está ejecutando, pero en realidad cada programa se ejecuta alternativamente .
(3) Compartir : Los recursos en el sistema operativo pueden ser compartidos por múltiples programas concurrentes.Esta forma se llama compartir recursos .
- Uso compartido mutuamente excluyente : cuando los recursos están ocupados por un programa, otros programas que quieran usarlos solo pueden esperar.
- Acceso simultáneo : Múltiples programas acceden simultáneamente a un recurso.
La premisa de las características virtuales y asincrónicas es la concurrencia .
(4) Virtualidad : Se manifiesta como la transformación de una entidad física en varias entidades lógicas.
- Tecnología de multiplexación por división de tiempo : los recursos se multiplexan en el tiempo, se usan diferentes programas al mismo tiempo y los programas múltiples usan recursos de hardware de computadora en tiempo compartido para mejorar la utilización de recursos.
- Tecnología de multiplexación por división espacial : se utiliza para realizar discos virtuales (los discos físicos se virtualizan como discos lógicos, discos C y discos D en las computadoras, etc.), memoria virtual (expande lógicamente la capacidad de almacenamiento de los programas), etc., para mejorar los recursos utilización Mejorar la eficiencia de la programación.
(5) Asincronía : en un entorno de programación múltiple, se permite que varios procesos se ejecuten simultáneamente, pero debido a limitaciones de recursos y otros factores, la ejecución del proceso se ejecuta de manera intermitente, y la ejecución de cada proceso (Ejecutar, Pausa, Velocidad, Finalización) también son desconocidos .
1.4 Manejo de interrupciones del sistema operativo
El papel del mecanismo de interrupción: permitir que los usuarios interactúen en un sistema de procesamiento por lotes multicanal;
Generación de interrupciones :
- Cuando ocurre una interrupción, la CPU cambia inmediatamente al estado de administración para realizar el trabajo de administración; (el estado de administración también se denomina estado privilegiado, estado del sistema o estado central, que es el estado en el que se encuentra la máquina cuando el programa administrado por el se ejecuta el sistema operativo.)
- Después de que ocurra una interrupción, el proceso que se está ejecutando actualmente se suspenderá y el kernel del sistema operativo se encargará de la interrupción;
- Para diferentes señales de interrupción, se llevará a cabo un procesamiento diferente.
Clasificación de las interrupciones :
- Interrupción interna (también llamada "excepción", "excepción", "atrapada") ------- fuente de señal: dentro de la CPU , relacionada con la instrucción que se está ejecutando actualmente;
- Interrupción externa (interrupción)----------Origen de la señal: fuera de la CPU , no tiene nada que ver con la instrucción de ejecución actual.
Procesamiento de interrupciones externas :
- Después de ejecutar cada instrucción, la CPU debe verificar si hay una señal de interrupción externa;
- Si se detecta una señal de interrupción externa, es necesario proteger el entorno de la CPU del proceso interrumpido (como la palabra de estado del programa PSW, la PC del contador del programa, varios registros de propósito general) y almacenarlos en la PCB (bloque de control de proceso) ;
- Transferir al controlador de interrupción correspondiente según el tipo de señal de interrupción;
- Restaure el entorno de la CPU del proceso original y salga de la interrupción, y regrese al proceso original para continuar con la ejecución.
2. Gestión de procesos
2.1 Entidad de proceso de gestión de procesos
Por qué se necesita el proceso :
- El proceso es la unidad básica de asignación y programación de recursos del sistema ;
- El proceso, como portador de la operación independiente del programa, garantiza la ejecución normal del programa;
- La existencia del proceso mejora en gran medida la tasa de utilización de los recursos del sistema operativo. +
Bloque de control de proceso (PCB) : una estructura de datos general utilizada para describir y controlar la operación del proceso, registrar el estado actual del proceso y toda la información sobre la operación del proceso de control, y es la identificación única de la existencia de la proceso _
Proceso (Proceso) e hilo (Hilo) :
- Subprocesos : Conducta del sistema operativo**La unidad más pequeña de programación en ejecución**。
- Proceso : Sistema en progreso**La unidad básica de asignación y programación de recursos.**。
diferencia y conexión:
- Un proceso puede tener uno o más subprocesos ;
- Un subproceso se incluye en un proceso y es la unidad que realmente ejecuta el trabajo en el proceso ;
- Los subprocesos de proceso comparten recursos de proceso ;
- Un proceso puede tener múltiples subprocesos ejecutándose simultáneamente, y cada subproceso realiza una tarea diferente .
2.2 Modelo de gestión de procesos de cinco estados
Estado listo : otros recursos (bloque de control de procesos, memoria, espacio de pila, espacio de montón, etc.) están todos listos, solo el estado de la CPU.
Estado de ejecución : el proceso obtuvo la CPU y su programa se está ejecutando.
Estado bloqueado : el estado del proceso que renuncia a la CPU por algún motivo, y el proceso bloqueado se coloca en forma de cola.
Estado de creación : cuando se crea el proceso, el PCB es propiedad pero otros recursos aún no están listos.
Estado de terminación : el proceso finaliza y el sistema limpia o devuelve el estado de la PCB.
2.3 Sincronización de procesos de gestión de procesos
Problema productor-consumidor : hay un grupo de procesos productores que producen productos y los proporcionan al proceso consumidor para su consumo. El proceso productor y el proceso consumidor se pueden ejecutar simultáneamente. Hay un conjunto de n entre ellos. El grupo de almacenamiento intermedio de el búfer, el proceso productor necesita poner el producto producido en el búfer (operación +1), y el proceso consumidor puede tomar el consumo del producto del búfer (operación -1).
Un problema : cuando los dos se ejecutan simultáneamente, puede ocurrir un error, lo que hace que el resultado esperado sea inconsistente con el resultado real: cuando se ejecutan las operaciones productor +1 y consumidor -1, el valor del búfer cambia de 10 a 11 .
Cenar con filósofos : Hay 5 filósofos cuya forma de vida es pensar y comer alternativamente. Los filósofos comparten una mesa redonda y se sientan en 5 sillas. Hay 5 cuencos y 5 palillos en la mesa redonda. Por lo general, los filósofos solo piensan, y cuando tienen hambre, intentan tomar los palillos izquierdo y derecho que están cerca de ellos. Solo cuando se toman ambos palillos pueden comer, de lo contrario, esperan y, después de comer, dejan el izquierdo y el derecho. palillos para pensar.
Esto puede llevar a los siguientes problemas, los palillos son equivalentes a recursos críticos:
Los recursos críticos se refieren a algunos recursos compartidos a los que no pueden acceder varios subprocesos al mismo tiempo, aunque sean recursos compartidos. Cuando un proceso está usando un recurso crítico, otros procesos deben esperar a que el proceso ocupante libere el recurso compartido de acuerdo con el mecanismo de sincronización del sistema operativo antes de volver a competir para usar el recurso compartido.
El papel de la sincronización de procesos : coordinar el orden de uso de los recursos que compiten entre múltiples procesos, de modo que múltiples procesos que se ejecutan simultáneamente puedan usar los recursos de manera efectiva y cooperar entre sí .
Cuatro principios de sincronización entre procesos :
- Entrega inactiva : el recurso no está ocupado y se permite su uso;
- Esperar mientras está ocupado : el recurso está ocupado y el proceso solicitante espera;
- Espera limitada : garantiza un tiempo de espera limitado para usar los recursos;
- Ceder el derecho a esperar : cuando espera, el proceso debe ceder la CPU.
2.3.1Método de sincronización de procesos (importante)
1. Use la llamada al sistema de bifurcación para crear un proceso : use la llamada al sistema de bifurcación sin parámetros, la bifurcación regresará dos veces, devolverá la identificación del proceso secundario y 0 respectivamente, el proceso principal devuelve la identificación del proceso secundario y el proceso secundario devuelve 0.
- La llamada al sistema fork se usa para crear un proceso;
- El estado de inicialización del proceso creado por la bifurcación es el mismo que el del proceso padre;
- El sistema asignará nuevos recursos para el proceso de bifurcación
2. Memoria compartida : Hasta cierto punto, varios procesos comparten memoria física, pero debido a la gestión de procesos del sistema operativo, el espacio de memoria entre procesos es independiente, por lo que el proceso no puede acceder al espacio de memoria fuera del espacio de proceso de forma predeterminada. .
- El almacenamiento compartido permite que procesos no relacionados accedan a la misma pieza de memoria física;
- La memoria compartida es la forma más rápida de compartir y pasar datos entre dos procesos ;
- La memoria compartida no proporciona un mecanismo de sincronización y es necesario utilizar otros mecanismos para administrar el acceso;
3. Zócalos de dominio Unix
El socket de dominio es un método avanzado de comunicación entre procesos que se puede utilizar para la comunicación entre procesos en la misma máquina.
Socket (socket): Término utilizado en la comunicación de red.
El socket de dominio proporcionado por el sistema Unix proporciona funciones similares al socket de red, como Nfinx, uWSGI, etc.
El proceso de usar sockets de dominio Unix en el servidor y el cliente respectivamente:
2.3.2Método de sincronización de subprocesos (importante)
El método de sincronización de subprocesos :
-
Mutex : Mutex es el método más simple de sincronización de subprocesos, también conocido como mutex, una variable en uno de dos estados: desbloqueado y bloqueado.Los dos estados pueden garantizar la serialización del acceso a los recursos. Atomicidad: Se refiere a la característica de que una serie de operaciones no se pueden interrumpir , o se ejecutan todas o no se ejecuta ninguna.
-
Bloqueo giratorio : un bloqueo giratorio es una variable de sincronización de subprocesos múltiples. El subproceso que usa el bloqueo giratorio verificará repetidamente si la variable de bloqueo está disponible . El bloqueo giratorio no abandonará la CPU . Es un estado de espera ocupado , es decir, un bucle infinito esperando que se libere el bloqueo y la eficiencia del bloqueo giratorio es mucho mayor que la del mutex . Características: evita la sobrecarga del proceso o el cambio de contexto de subprocesos , pero no es adecuado para su uso en CPU de un solo núcleo .
-
Bloqueo de lectura y escritura : es un bloqueo de giro especial que permite que varias operaciones de lectura accedan a los recursos al mismo tiempo para mejorar el rendimiento de lectura , pero es mutuamente excluyente para las operaciones de escritura , es decir, **Mejore la eficiencia de la operación de más lecturas y menos escrituras**Significativamente.
-
Variable de condición : es un método de sincronización de subprocesos relativamente complejo. La variable de condición permite que el subproceso se duerma hasta que se cumpla una determinada condición, cuando**Para cumplir con las condiciones, se puede indicar al subproceso que se despierte**.
2.3.3Comparación de métodos de sincronización de subprocesos (importante)
2.4 Gestión de procesos Linux
Tipo de proceso :
- Proceso en primer plano : tiene una terminal y puede interactuar con los usuarios;
- Proceso en segundo plano : no ocupa la terminal, básicamente no interactúa con el usuario y tiene una prioridad más baja que el proceso en primer plano (el comando que debe ejecutarse termina con el símbolo "&");
- Proceso daemon : un proceso en segundo plano especial que comienza cuando el sistema arranca y se ejecuta hasta que el sistema se apaga (los nombres de proceso que terminan en "d" son generalmente procesos daemon), como crond, sshd, httpd, mysqld...
Indicadores de proceso :
- ID de proceso : entero no negativo, la marca única del proceso, cada proceso tiene una ID diferente;
- El indicador de estado del proceso : R indica que el proceso se está ejecutando, S indica que el proceso está durmiendo...
Comandos relacionados para operar procesos Linux :
- comando ps : muestra el proceso actual, combinado con -aux puede imprimir la información detallada del proceso (ps -aux);
- comando superior : ver el estado de todos los procesos;
- comando kill : envía una señal al proceso.
3. Gestión de trabajos
3.1 Programación de procesos de gestión de trabajos
Definición: se refiere a la decisión de la computadora para determinar qué proceso listo puede obtener derechos de uso de la CPU .
¿ Cuándo es necesaria la programación de procesos ?
- Renunciar activamente: el proceso termina normalmente, termina debido a una excepción durante la operación, se bloquea activamente (como esperando E/S);
- Abandono pasivo: el intervalo de tiempo asignado al proceso se agota, un proceso de mayor prioridad ingresa a la cola de procesos listos, hay cosas más urgentes que tratar (como la interrupción de E/S);
Método de programación de procesos :
Programación no preventiva : solo el proceso que se está ejecutando actualmente puede renunciar activamente a la CPU ;
- Una vez que el procesador se asigna a un proceso, deje que el proceso continúe usándolo;
- El planificador no impide que el procesador se utilice por ningún motivo;
- El planificador no impide que el procesador se utilice por ningún motivo;
Programación preventiva : el sistema operativo puede privar al derecho de uso de la CPU del proceso actual .
- Permitir que el planificador suspenda el proceso que se está ejecutando actualmente con una determinada política;
- Guarde la información de contexto del proceso anterior y asigne el procesador al nuevo proceso;
Tres mecanismos para la programación de procesos :
El mecanismo de cola de la cola lista : para mejorar la eficiencia de la programación de procesos, los procesos listos se ponen en cola de cierta manera, de modo que el programador pueda encontrar el proceso listo lo antes posible.
El mecanismo de delegación para seleccionar el proceso en ejecución : el planificador selecciona el proceso listo con una determinada estrategia y le asigna recursos de CPU.
Mecanismo de cambio de contexto para procesos antiguos y nuevos : guarde la información de contexto del proceso actual y cargue el contexto en ejecución del proceso de ejecución delegado.
Algoritmo de programación de procesos :
- Algoritmo de orden de llegada : se ejecuta en el orden en que están en la cola de listas .
- Algoritmo de programación de prioridad de procesos cortos : priorice el proceso con el tiempo de ejecución estimado más corto en la cola de listos , lo que no favorece la ejecución de procesos de trabajo largos.
- Algoritmo de programación de prioridad de alta prioridad : los procesos tienen prioridad y se da prioridad a los procesos con pesos altos , lo que puede priorizar las tareas urgentes.
- Algoritmo de programación de intervalos de tiempo por turnos : de acuerdo con el principio de FIFO, los procesos listos se organizan, cada vez que el proceso a ejecutar se saca del encabezado de la cola y se asigna un intervalo de tiempo para la ejecución . algoritmo de programación relativamente justo, pero no puede garantizar que responderá a los usuarios.
3.2 Interbloqueo de la gestión de trabajos
3.2.1 La diferencia entre punto muerto del proceso, inanición y ciclo infinito:
Deadlock : Durante la ejecución de dos o más procesos , debido a la competencia por los recursos o un fenómeno de bloqueo causado por la comunicación mutua , si no hay una fuerza externa, no podrán avanzar. Los procesos que siempre están esperando el uno al otro se denominan procesos en punto muerto.
Hambre : proceso estancado por falta crónica de acceso a los recursos ;
Bucle infinito : error de lógica de código.
Ocurrencia de interbloqueo : competencia por los recursos (la cantidad de recursos compartidos no satisface las necesidades de cada proceso), secuencia de programación de procesos incorrecta, cuando la secuencia de programación es A->B->C->D, se producirá un interbloqueo, pero se cambia a A->D ->B->C no se generará.
Cuatro condiciones necesarias para el interbloqueo:
- Condiciones de exclusión mutua : Los interbloqueos deben ocurrir sólo cuando los recursos se utilizan en exclusión mutua ;
- Condiciones de retención de la solicitud : el proceso retiene al menos un recurso y realiza una nueva solicitud de recurso, el nuevo recurso está ocupado, la solicitud está bloqueada y el proceso bloqueado no libera el recurso que retiene;
- Condiciones de inalienabilidad : Los recursos obtenidos por el proceso no pueden ser privados (incluidos los SO) antes de que hayan sido utilizados en su totalidad, y solo pueden ser liberados por el proceso mismo ;
- Condición de espera de bucle : cuando se produce un interbloqueo, debe haber una cadena de anillo de proceso-recurso.La espera de bucle no provoca necesariamente un interbloqueo, pero el interbloqueo debe tener una espera cíclica.
estrategia de manejo de punto muerto:
1. Formas de evitar el interbloqueo : destruir una o más de las cuatro condiciones necesarias.
- Destrucción de las condiciones de exclusión mutua : Transformar los recursos críticos en recursos compartidos (tecnología de spooling pooling); (la viabilidad no es alta y las condiciones de exclusión mutua no se pueden destruir en muchos casos)
- Destrucción de las condiciones de retención de solicitudes : antes de que el sistema estipule que se ejecuta el proceso, todos los recursos necesarios se solicitan a la vez ; (la baja utilización de recursos puede llevar a la inanición de otros subprocesos)
- Destrucción de la condición inalienable : cuando un proceso solicita nuevos recursos y no puede ser satisfecho, los recursos ocupados deben liberarse ; (la implementación es compleja, la privación de recursos puede hacer que algún trabajo falle, y las aplicaciones y liberaciones repetidas causan una sobrecarga adicional del sistema )
- Rompiendo la condición de espera del bucle : los recursos disponibles se ordenan linealmente y la aplicación debe aplicarse de forma incremental según la necesidad; (la secuencia de uso de recursos real y la secuencia numérica del proceso son diferentes, lo que conducirá a la pérdida de recursos)
2. Algoritmo del banquero : compruebe si los recursos restantes actuales pueden satisfacer la demanda máxima de un determinado proceso; en caso afirmativo, agregue el proceso a la secuencia de seguridad, espere a que se permita que se complete el proceso y recicle todos los recursos; repita 1, 2 hasta que no haya subprocesos esperando recurso;
3. Detección y liberación de puntos muertos : algoritmo de detección de puntos muertos, método de privación de recursos, método de proceso de deshacer (método de proceso de terminación), método de reversión del proceso;
4. Gestión de almacenamiento
La administración del almacenamiento es para garantizar que la computadora tenga suficiente memoria para procesar datos; para garantizar que los programas puedan obtener una parte del uso de la memoria de la memoria disponible; para garantizar que los programas puedan devolver la memoria usada para que la usen otros programas.
4.1 Asignación de memoria y reciclaje de gestión de almacenamiento
El proceso de asignación de memoria: asignación única continua (obsoleta), asignación de partición fija, asignación de partición dinámica (asignación dinámica de memoria de acuerdo con las necesidades reales).
Algoritmo de asignación de partición dinámica :
- Primer algoritmo de adaptación : al asignar memoria, busque áreas de memoria adecuadas secuencialmente desde el principio. Si no hay un área de memoria adecuada, la asignación fallará, comenzando desde el encabezado cada vez, de modo que el espacio de direcciones del encabezado se divida continuamente;
- Mejor algoritmo adaptativo : la lista vinculada de áreas libres debe ordenarse según la capacidad y recorrerse para encontrar el área libre más adecuada (dejando más y más fragmentos internos).
- Algoritmo de adaptación rápida : se requieren múltiples listas vinculadas de áreas libres, y cada lista vinculada de áreas libres almacena un área libre de una capacidad.
El proceso de recuperación de la memoria :
- El área de recuperación está debajo del área libre : no es necesario crear un nuevo nodo de lista libre, solo es necesario aumentar la capacidad del área libre 1;
- El área de reciclaje está encima del área libre : combine el área de reciclaje con el área libre; la nueva área libre usa la dirección del área de reciclaje;
- El área de recuperación está en el medio del área libre : combine el área libre 1, el área libre 2 y el área de recuperación; la nueva área libre usa la dirección del área libre 1;
- Solo el área de recuperación restante : cree un nuevo nodo libre para el área de recuperación, insértelo en la lista vinculada del área libre correspondiente;
4.2 Gestión de almacenamiento de página de segmento de gestión de almacenamiento
Gestión de almacenamiento de paginación : divida el espacio lógico del proceso en páginas de varios tamaños y, en consecuencia, divida el espacio de la memoria física en bloques físicos del tamaño de la página, y cargue el espacio del proceso en bloques físicos dispersos en la memoria física en unidades de páginas.
El tamaño de la página debe ser moderado, si es demasiado grande, es difícil de asignar, si es demasiado pequeño, hay demasiados fragmentos de memoria, el tamaño de la página suele ser de 512B~8K ;
Los sistemas informáticos modernos pueden admitir un espacio de direcciones lógicas muy grande (2 32 ~ 2 64). Un sistema de paginación con un espacio de direcciones lógicas de 32 bits estipula que el tamaño de la página es de 4 KB y las entradas de la tabla de páginas en la tabla de páginas de cada proceso puede ser de hasta 1 M (2 20), si cada entrada de la tabla de páginas ocupa 1 byte, por lo que cada proceso ocupará 1 MB de espacio de memoria solo para la tabla de páginas.
Gestión de almacenamiento de segmentos : divida el espacio de la lógica del proceso en varios segmentos (división desigual) , y la longitud del segmento está determinada por la longitud de la lógica continua.
En comparación con la paginación y la gestión de almacenamiento de segmentos :
- Tanto el almacenamiento de segmentos como el almacenamiento de páginas administran el espacio lógico del proceso de manera discreta ;
- Una página es una unidad física y un segmento es una unidad lógica ;
- La paginación es para hacer un uso razonable del espacio, y la segmentación es para cumplir con los requisitos del usuario.El tamaño de la página lo fija el hardware y la longitud del segmento se puede cambiar dinámicamente ;
- La información de la tabla de páginas es unidimensional y la información de la tabla de segmentos es bidimensional ;
Administración de almacenamiento de páginas segmentadas : el espacio lógico ahora se divide en varios segmentos de acuerdo con la administración segmentada, y luego el espacio de memoria se divide en varias páginas de acuerdo con la administración paginada.La paginación puede mejorar efectivamente la utilización de la memoria y la segmentación puede satisfacer mejor las necesidades del usuario .
4.3 Memoria virtual para gestión de almacenamiento
Descripción general de la memoria virtual : es la tecnología clave de la gestión de memoria del sistema operativo, que hace realidad la operación de múltiples programas y la operación de programas a gran escala, divide la memoria utilizada por el programa y coloca parte de la memoria no utilizada temporalmente en almacenamiento auxiliar, que es en realidad una expansión de la memoria física . .
Principio de localidad : cuando la CPU accede a la memoria, ya sea accediendo a instrucciones o accediendo a datos , las unidades de almacenamiento accedidas tienden a reunirse en un área continua más pequeña .
Algoritmo de reemplazo de memoria virtual : primero en entrar, primero en salir (FIFO), menos usado (LFU), menos usado recientemente (LRU)
Características de la memoria virtual :
- Multiplicidad : no es necesario cargar todos los trabajos en la memoria al mismo tiempo cuando el trabajo se está ejecutando, pero permite que se divida en varias veces y se cargue en la memoria;
- Capacidad de intercambio : no es necesario que resida en la memoria cuando el trabajo se está ejecutando, pero permite que el trabajo se intercambie y se intercambie durante la ejecución del trabajo;
- Virtualidad : Lógicamente expande la capacidad de la memoria, de modo que la memoria utilizada por el usuario es mucho mayor que la capacidad real;
4.4 Gestión de almacenamiento de Linux
Algoritmo de gestión de memoria Buddy : un algoritmo de gestión de memoria clásico, para resolver el problema de la fragmentación de memoria insuficiente , el algoritmo tiene una eficiencia extremadamente alta basada en las ventajas del procesamiento binario de la computadora.
Espacio de intercambio de Linux : el espacio de intercambio (Swap) es una partición del disco. Cuando la memoria de Linux está llena, parte de la memoria se intercambiará al espacio de intercambio. El espacio de intercambio se configura cuando se inicializa el sistema.
Comparación de espacio de intercambio y memoria virtual :
5. Gestión de documentos
5.1 Gestión de archivos del sistema operativo
La estructura lógica del archivo :
- Tipos de archivos con estructura lógica : archivos estructurados (archivos de texto, documentos, archivos multimedia), archivos no estructurados (archivos binarios, bibliotecas de enlaces).
- Archivos secuenciales : archivos colocados en el medio de almacenamiento en secuencia, la eficiencia de almacenamiento es la más alta entre los archivos lógicos , pero no es adecuado para almacenar archivos de longitud variable.
- Archivo de índice : inventado para resolver el almacenamiento de archivos de longitud variable, debe cooperar con el almacenamiento de tablas de índice.
Asignación de espacio de almacenamiento para almacenamiento auxiliar :
- Métodos de asignación de almacenamiento auxiliar : asignación continua (archivos fáciles y rápidos de leer), asignación de enlace (enlace implícito y enlace explícito), asignación de índice
- Gestión del espacio de almacenamiento de almacenamiento auxiliar : lista libre, lista enlazada libre, mapa de bits.
Árbol de directorios : haga que cualquier archivo o directorio tenga una ruta única.
Funcionamiento básico de los archivos de Linux : enlace de referencia
Sistema de archivos Linux : FAT, NTFS (FAT mejorado), EXT2/3/4 (sistema de archivos extendido, sistema de archivos Linux)
6. Gestión de equipos
El concepto básico de dispositivos de E/S : dispositivos externos que ingresan y envían datos a la computadora;
Dispositivos IO generalizados :
- Clasificados según las características de uso : dispositivos de almacenamiento (memoria, disco, disco U) y dispositivos IO interactivos (teclado, monitor, mouse);
- Clasificados por intercambio de información : dispositivos de bloque (discos, tarjetas SD) y dispositivos de caracteres (impresoras, terminales shell);
- Clasificado según los atributos de uso compartido de dispositivos : dispositivo exclusivo, dispositivo compartido, dispositivo virtual;
- Según la clasificación de la tasa de transmisión : equipo de baja velocidad, equipo de alta velocidad;
Búfer para dispositivos IO : reduzca la frecuencia de procesamiento de solicitudes de IO de la CPU y mejore el paralelismo entre la CPU y los dispositivos IO .
Tecnología SPOOLing : tecnología de dispositivo virtual, que cambia las llamadas síncronas a dispositivos de baja velocidad en llamadas asíncronas , agrega un enlace de volcado de cola (entrada bien, salida bien) entre la entrada y la salida, y SPoOLing es responsable de la conexión entre la entrada (salida ) bien y el dispositivo de baja velocidad Programando, lógicamente, el proceso interactúa directamente con el dispositivo de alta velocidad, reduciendo el tiempo de espera del proceso.
7. Implemente un grupo de subprocesos que admita tareas asincrónicas
Grupo de subprocesos : el grupo de subprocesos es un contenedor para almacenar varios subprocesos. Después de que la CPU programe la ejecución de los subprocesos, los subprocesos no se destruirán y los subprocesos se volverán a colocar en el grupo de subprocesos para su reutilización.
Razones para usar el grupo de subprocesos :
- Los subprocesos son recursos escasos y no deben crearse y destruirse con frecuencia;
- Desacoplamiento de arquitectura, creación de negocios y desacoplamiento de procesamiento de negocios, más elegante;
- Un grupo de subprocesos es la mejor práctica para usar subprocesos.
Implementar cola segura para subprocesos
- Cola : se utiliza para almacenar múltiples elementos, es un "grupo" para almacenar varios elementos.
- Las funciones básicas realizadas : obtener el número de elementos en la cola actual, poner elementos en la cola y sacar elementos de la cola.
- Nota : la cola puede tener varios subprocesos funcionando al mismo tiempo, por lo que se debe garantizar la seguridad de los subprocesos, de la siguiente manera:
Realice las funciones básicas del objeto de tarea básico Tarea
: parámetros de tarea, etiqueta única de tarea (UUID), lógica de ejecución específica de tarea
Implemente el subproceso de procesamiento de tareas ProcessThread : el subproceso de procesamiento de tareas debe obtener tareas continuamente de la cola de tareas para su ejecución, y el subproceso de procesamiento de tareas debe tener una marca para indicar cuándo debe detenerse el subproceso.
Las funciones básicas realizadas: atributos básicos (cola de tareas, marca), lógica de ejecución de subprocesos (ejecutar), parada de subprocesos (stop).
Implemente el grupo de subprocesos de procesamiento de tareas Pool : almacene varios subprocesos de procesamiento de tareas, sea responsable del inicio y la detención de varios subprocesos, administre el envío de tareas al grupo de subprocesos y envíelos a los subprocesos para su ejecución.
El proceso básico de implementación: atributos básicos, envío de tareas (put, batch_put), inicio y detención de subprocesos (start, join), tamaño del grupo de subprocesos (tamaño).
Realice el procesamiento de tareas asincrónicas AsyncTask : agregue una marca a la tarea. Una vez completada la tarea, se marcará como completada; cuando la tarea se complete, el resultado de la ejecución de la tarea se puede obtener directamente; cuando la tarea no se complete, la obtención El resultado de la tarea bloqueará el hilo de obtención.
Dos funciones principales: establecer el resultado de ejecución (set_result) y obtener el resultado de ejecución (get_result)