Sistema operativo (Sistema operativo)

1. Descripción general del sistema informático

inserte la descripción de la imagen aquí

Qué es un sistema operativo (el concepto de un sistema operativo)

El sistema operativo (Operating System, OS) se refiere al control y la gestión de los recursos de hardware y software de todo el sistema informático, y organiza y programa razonablemente el trabajo de la computadora y la asignación de recursos; para proporcionar a los usuarios y otro software con una interfaz y un entorno convenientes; es el software de sistema más básico en un sistema informático.
inserte la descripción de la imagen aquí

Objetivos y funciones del sistema operativo

inserte la descripción de la imagen aquí

  1. Sistema operativoes un administrador de recursos informáticos
    a. Gestión del procesador (control de procesos, sincronización de procesos, comunicación de procesos, manejo de puntos muertos, programación del procesador)
    b. Gestión de la memoria (mejora de la utilización de la memoria, asignación y recuperación de la memoria, asignación de direcciones, protección y uso compartido de la memoria, expansión de la memoria)
    c. Gestión de archivos ( la información en la computadora existe en forma de archivos)
    D. Administración de dispositivos (completar la solicitud de E/S del usuario, facilitar al usuario el uso del dispositivo y mejorar la tasa de utilización del dispositivo)
  2. Sistema operativoProporcionar a los usuarios una interfaz para utilizar los sistemas de hardware informático
    a. Interfaz de comando (los usuarios ingresan comandos de operación a través de la consola o terminal para proporcionar varios requisitos de servicio al sistema)
    b. Interfaz de programa (compuesta por llamadas al sistema, los usuarios usan estas llamadas al sistema en el programa para solicitar que el sistema operativo proporcione servicios para c
    . Interfaz gráfica La GUI de interfaz gráfica de usuario más común (finalmente implementada llamando a la interfaz del programa)
  3. Sistema operativoutilizado como una máquina de expansión
    Una computadora sin soporte de software se llama bare metal, y el sistema informático que se le presenta al usuario es una computadora transformada por varias capas de software. Los sistemas operativos transforman el metal desnudo en máquinas más potentes y fáciles de usar. Nos referimos a máquinas superpuestas con software como máquinas extendidas o máquinas virtuales.

El papel del sistema operativo y qué servicios proporciona (cuál es el papel principal del sistema operativo en el sistema informático)※※

  1. gestión del procesador
  2. gestión de la memoria
  3. gestión de dispositivos
  4. gestión de archivos
  5. interfaz de usuario

Cuatro características del sistema operativo※

  1. simultaneidad
  2. compartido
  3. virtual
  4. asincrónico

La diferencia entre el modo kernel y el modo usuario※

Estado del núcleo = estado central = estado de gestión Estado
del usuario = estado objetivo

enlace RCSD

  1. El modo de usuario puede ejecutar instrucciones no privilegiadas llamadas por la CPU
  2. El modo Kernel puede ejecutar instrucciones privilegiadas e instrucciones no privilegiadas
  3. El cambio del modo usuario al modo kernel se logra a través de interrupciones
  4. El cambio del modo kernel al modo usuario se logra a través de instrucciones privilegiadas

Modo kernel → modo usuario: Ejecute una instrucción privilegiada: modifique el bit de bandera de PSW a "modo usuario", esta acción significa que el sistema operativo renunciará activamente al derecho de usar la CPU Modo usuario → modo kernel: activado por "
interrupción ", el hardware automáticamente Después de completar el proceso de metamorfosis, activar una señal de interrupción significa que el sistema operativo recuperará por la fuerza el derecho a usar la CPU

Cómo funciona el sistema operativo

inserte la descripción de la imagen aquí

¿Por qué se dice que el sistema operativo está controlado por interrupciones?

La interrupción de enlaces
es una de las tecnologías centrales del sistema operativo. La razón más crítica es que las tecnologías multihilo y multiproceso que deben tener los sistemas operativos modernos se basan todas en tecnología de interrupción. Al asignar CPU, en primer lugar, necesita la participación de la interrupción del tiempo, para que el sistema pueda obtener el tiempo de ejecución de la CPU, y luego el sistema puede iniciar el proceso o subproceso en la cola de espera de acuerdo con su propio algoritmo.

Enlace
El sistema operativo es una colección de muchos módulos de programa, y ​​estos módulos de programa se dividen en tres categorías: la
primera categoría es para ejecutar activamente simultáneamente con programas de modo de usuario después de que se inicia el sistema, y ​​todos los programas concurrentes son controlados por interrupciones; la
segunda La categoría es Algunos programas que sirven "pasivamente" a los usuarios a través de instrucciones de llamada al sistema, y ​​la ejecución de las instrucciones de llamada al sistema es procesada por el mecanismo de interrupción; la tercera categoría está oculta dentro del sistema operativo, es decir, no se ejecuta activamente y no no se enfrentan directamente a los programas de modo de usuario.los programas, que son llamados por los dos primeros tipos de programas. Con base en lo anterior, el sistema operativo disponible está controlado por interrupciones.

Interrumpir※

  1. La introducción de interrupciones: para admitir operaciones paralelas entre la CPU y los dispositivos,
    las interrupciones también se denominan interrupciones externas, que se refieren a la ocurrencia de eventos distintos de las instrucciones ejecutadas por la CPU, como interrupciones de E/S e interrupciones de reloj. emitida por los dispositivos. Las interrupciones de este tipo son generalmente eventos que no están relacionados con la instrucción que se está ejecutando actualmente.
  2. Cuando ocurre una interrupción, la CPU entra inmediatamente en modo kernel
  3. Cuando ocurre una interrupción, el proceso actual se suspende y el kernel del sistema operativo maneja la interrupción.
  4. Se realizará un procesamiento diferente para diferentes señales de interrupción.
  5. Las interrupciones se dividen en interrupciones internas e interrupciones externas.

anormal

La introducción de excepciones: se refiere a los problemas que ocurren cuando la CPU ejecuta la instrucción.
Las anomalías, también conocidas como interrupciones internas, excepciones o trampas, se refieren a eventos que se originan a partir de la ejecución de instrucciones por parte de la CPU, como códigos de operación ilegales de el programa, la dirección fuera de los límites, el desbordamiento aritmético y las excepciones de errores de página esperan. El manejo de las excepciones generalmente depende del sitio en ejecución del programa actual y no se puede proteger.

La conexión y diferencia entre interrupción y excepción.

inserte la descripción de la imagen aquí

llamada al sistema

Los diversos recursos de hardware del sistema informático son limitados. Para administrar mejor estos recursos, no se permite que los procesos operen directamente. Todo acceso a estos recursos debe ser controlado por el sistema operativo. Es decir, el sistema operativo es la única entrada que utiliza estos recursos, y esta entrada es la llamada al sistema proporcionada por el sistema operativo. Generalmente, las llamadas al sistema se implementan a través de interrupciones.Por ejemplo, el número de interrupción 0x80 en Linux es para llamadas al sistema.
El sistema operativo proporciona un conjunto de interfaces para que los procesos de modo de usuario interactúen con los dispositivos de hardware: llamadas al sistema: 1. Libera a los usuarios de la programación de hardware subyacente 2. Mejora en gran medida la seguridad del sistema y hace que los programas de usuario sean confiables Portabilidad; usuario los programas y el hardware concreto han sido reemplazados por interfaces abstractas.

2. Gestión de procesos

inserte la descripción de la imagen aquí

Proceso y PCB

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

La diferencia entre proceso e hilo.※※※※

  1. Proceso (Proceso) esEl sistema realiza la asignación y programación de recursos.La unidad básica de hilo (Thread) esProgramación y asignación de CPUla unidad básica de
  2. Los subprocesos existen según los procesos, y un proceso tiene al menos un subproceso
  3. Un proceso tiene su propio espacio de direcciones independiente y los subprocesos comparten el espacio de direcciones del proceso al que pertenecen.
  4. Un proceso es una unidad independiente que posee recursos del sistema, y ​​un subproceso en sí mismo básicamente no posee recursos del sistema., solo tiene algunos recursos esenciales en funcionamiento (como el contador de programa, un conjunto de registros y la pila), y comparte los recursos relevantes de este proceso con otros hilos, como memoria, E/S, CPU, etc.;
  5. Durante la conmutación de procesos, implica la configuración del entorno de guardado de todo el entorno de CPU del proceso actual y la configuración del entorno de CPU recién programado, mientras que la conmutación de subprocesos solo necesita guardar y configurar el contenido de una pequeña cantidad de registros, y no implican operaciones de gestión de memoria, visibles,La sobrecarga de la conmutación de procesos es mucho mayor que la sobrecarga de la conmutación de subprocesos
  6. La comunicación entre subprocesos es más conveniente. Los subprocesos bajo el mismo proceso comparten datos como variables globales, y la comunicación entre procesos debe llevarse a cabo en forma de comunicación entre procesos (IPC);
  7. Siempre que un subproceso se bloquee en un programa de subprocesos múltiples, todo el programa se bloqueará, pero el bloqueo de un proceso en un programa de procesos múltiples no afectará a otros procesos, porque el proceso tiene su propio espacio de direcciones independiente, por lo que los procesos múltiples El proceso es más robusto.

Diferencia entre proceso y programa※

(1)Los programas son permanentes; los procesos son temporales., es una ejecución del programa sobre el conjunto de datos, hay creación y cancelación, y la existencia es temporal;
(2)La noción de que los procedimientos son estáticos y los procesos son dinámicos.
(3)Los procesos son concurrentes, mientras que el programa no lo hace;
(4) El proceso es la unidad básica para competir por los recursos informáticos, pero el programa no lo es.
(5) Los procesos y programas no están en correspondencia biunívoca: un programa puede corresponder a múltiples procesos, es decir, múltiples procesos pueden ejecutar el mismo programa; un proceso puede ejecutar uno o varios programas

La diferencia entre un trabajo y un proceso.

Enlace
Un proceso es el proceso de ejecución de un programa en un conjunto de datos y es la unidad básica de asignación de recursos. Un trabajo es una determinada tarea que el usuario necesita que la computadora complete, y es una colección de trabajo que la computadora debe realizar. La finalización de un trabajo pasa por cuatro etapas: envío del trabajo, contención del trabajo, ejecución del trabajo y finalización del trabajo. Un proceso es una descripción del proceso de ejecución de un programa enviado y es la unidad básica de asignación de recursos. Las principales diferencias son las siguientes:

(1) Un trabajo es una entidad de tarea en la que un usuario envía una tarea a una computadora. Después de que el usuario envía el trabajo a la computadora, el sistema lo coloca en la cola de trabajo en espera en el almacenamiento externo para su ejecución. Un proceso es una entidad de ejecución que completa las tareas del usuario y es la unidad básica que se aplica al sistema para la asignación de recursos. Cualquier proceso, mientras se crea, siempre tiene una parte correspondiente en la memoria.

(2) Un trabajo puede estar compuesto por múltiples procesos y debe estar compuesto por al menos un proceso, y viceversa.

(3) El concepto de trabajos se utiliza principalmente en sistemas de procesamiento por lotes y no existe un concepto de trabajos en sistemas de tiempo compartido como UNIX. El concepto de proceso se utiliza en casi todos los sistemas de multiprogramación.

Proceso de método de comunicación※

  1. Memoria compartida
    Como su nombre lo indica, la memoria compartida significa que dos procesos comparten una parte de la memoria al mismo tiempo, y luego los datos en esta parte de la memoria se pueden modificar y leer juntos para lograr el propósito de la comunicación.
  2. pipa sin nombre
    La tubería sin nombre es un método de comunicación semidúplex y solo se puede usar entre procesos con afinidad (la afinidad se refiere a la relación padre-hijo entre procesos, relación de hermanos, etc.), y el proceso con afinidad tiene una tubería sin nombre en al mismo tiempo que se crea. El identificador de la tubería se puede leer y escribir; la tubería sin nombre no tiene un nodo de disco, solo existe en la memoria y se destruirá cuando se agote.
  3. tubería con nombre
    Las canalizaciones con nombre también son un método de comunicación semidúplex; pueden comunicarse entre procesos que no tienen una relación; las canalizaciones con nombre existen en los nodos del disco y tienen los archivos FIFO correspondientes, y todos los procesos que pueden acceder a los archivos en esta ruta pueden comunicarse.
  4. cola de mensajes
    Una cola de mensajes es una lista enlazada de mensajes almacenados en el núcleo e identificados por un identificador de cola de mensajes. La cola de mensajes supera las desventajas de menos información de transmisión de señal, la canalización solo puede transportar flujos de bytes sin formato y el tamaño del búfer es limitado.
  5. enchufe
    Socket es una api de programación de red. A través de sockets, los procesos entre diferentes máquinas pueden comunicarse. A menudo se usa para la comunicación entre procesos de cliente y procesos de servidor.
  6. Señal
    Las señales son uno de los métodos más antiguos de comunicación entre procesos utilizados en los sistemas Unix. El sistema operativo notifica al proceso a través de una señal que un evento predeterminado (uno de un conjunto de eventos) ha ocurrido en el sistema, y ​​también es un mecanismo primitivo para la comunicación y sincronización entre procesos de usuario. Una interrupción del teclado o una condición de error (como un proceso que intenta acceder a una ubicación en su memoria virtual que no existe, etc.) puede generar una señal. El shell también usa señales para enviar señales de control de trabajo a sus procesos secundarios.

Los cinco estados del proceso y el proceso de transición※

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

¿Qué son los algoritmos de programación de procesos (trabajos)?※※※※

  1. Se le sirve en orden de llegadaProgramaciones por orden de llegada (FCFS)
    en el orden de las solicitudes. No preventivo, sobrecarga baja, sin problemas de inanición, tiempo de respuesta incierto (posiblemente lento);
    no es bueno para procesos cortos, no es bueno para procesos intensivos de IO.
  2. trabajo corto primeroEl trabajo más corto primero (SJF)
    programa los trabajos en el orden del tiempo de ejecución estimado más corto. No preventivo, alto rendimiento, alta sobrecarga, puede generar problemas de inanición;
    proporcione un buen tiempo de respuesta para procesos cortos, no es bueno para procesos largos, si siempre hay trabajos cortos por venir, los trabajos largos nunca se programarán.
  3. Prioridad de respuesta más alta
    Relación de respuesta = 1+ tiempo de espera/tiempo de procesamiento. Al mismo tiempo, se consideran la duración del tiempo de espera y la duración del tiempo de ejecución estimado, y los procesos largos y cortos están bien equilibrados. No preventivo, alto rendimiento, sobrecarga potencialmente alta, buen tiempo de respuesta, sin problemas de inanición.
  4. algoritmo de programación de prioridad
    Asigne una prioridad a cada proceso y programe según la prioridad. Para evitar que los procesos de baja prioridad nunca esperen a programarse, la prioridad de los procesos en espera se puede aumentar con el tiempo.
  5. Rotación de intervalos de tiempo
    Organice todos los procesos listos en una cola de acuerdo con el principio de FCFS, y el proceso que se queda sin intervalos de tiempo se organiza al final de la cola. Preventivo (cuando se agota el intervalo de tiempo), gastos generales bajos, sin problemas de hambre y buen tiempo de respuesta para procesos cortos;
    si el intervalo de tiempo es pequeño, el cambio de proceso es frecuente y el rendimiento es bajo; si el intervalo de tiempo es demasiado largo, el rendimiento en tiempo real no se puede obtener asegurar.
  6. Algoritmo de programación de cola de retroalimentación multinivel
    Establezca múltiples colas listas 1, 2, 3..., con prioridad decreciente y segmento de tiempo creciente. Los procesos en la cola actual solo se programan hasta que la cola de mayor prioridad esté vacía. Si el proceso se agota en el intervalo de tiempo de la cola actual y no ha terminado de ejecutarse, se moverá a la siguiente cola.
    Preventivo (cuando se agota el intervalo de tiempo), la sobrecarga puede ser grande, lo que es beneficioso para los procesos de tipo IO, y pueden ocurrir problemas de inanición.

Sincronización de procesos※

Por qué es necesaria la sincronización de procesos: los procesos a veces comparten algunos recursos con otros procesos, como la memoria, la base de datos, etc. Cuando múltiples procesos leen y escriben el mismo recurso compartido al mismo tiempo, pueden ocurrir conflictos. Por lo tanto, se requiere la sincronización de procesos y múltiples procesos acceden a los recursos en secuencia.

Mutex Mutex:
un mutex es un objeto del núcleo, y solo el subproceso que posee el objeto mutex tiene derecho a acceder al recurso mutex. Debido a que solo hay un objeto mutex, se puede garantizar que múltiples subprocesos no accederán al recurso mutex al mismo tiempo; el subproceso que actualmente posee el objeto mutex debe entregar el objeto mutex después de procesar la tarea, para que otros los subprocesos pueden acceder al recurso;
semáforo Semáforo:
un semáforo es un objeto del núcleo que permite que varios subprocesos accedan al mismo recurso al mismo tiempo, pero necesita controlar el número máximo de subprocesos que acceden a este recurso al mismo tiempo. El objeto semáforo guarda el número máximo de recursos y el número actual de recursos disponibles. Cada vez que un subproceso accede al recurso compartido, el número actual de recursos disponibles se reduce en 1. Siempre que el número actual de recursos disponibles sea mayor que 0, la señal del semáforo puede ser enviado Si es 0 , ponga el hilo en una cola para esperar. Después de que el subproceso termine de procesar los recursos compartidos, debe agregar 1 a la cantidad de recursos disponibles actualmente a través de la función ReleaseSemaphore al salir. Si el valor del semáforo solo puede ser 0 o 1, entonces el semáforo se convierte en un mutex;
Evento Evento:
permite que un subproceso active activamente otro subproceso para realizar la tarea después de procesar una tarea. Los eventos se dividen en eventos de reinicio manual y eventos de reinicio automático. Después de que el evento de reinicio manual se establece en el estado activado, todos los subprocesos en espera se despertarán y permanecerán en el estado activado hasta que el programa lo restablezca al estado desactivado. Después de que el evento de reinicio automático se establece en el estado activado, activará un subproceso en espera y luego volverá automáticamente al estado no activado.
Sección crítica:
se refiere a la pieza de código que accede a los recursos, y solo un subproceso puede acceder a los recursos críticos en cualquier momento. El subproceso que posee el objeto de la sección crítica puede acceder al recurso crítico, y otros subprocesos que intenten acceder al recurso se suspenderán hasta que se libere el objeto de la sección crítica.

Punto muerto※

definición

Deadlock se refiere a un fenómeno en el que dos o más procesos esperan el uno al otro debido a la competencia por los recursos durante la ejecución, si no hay una fuerza externa, no podrán avanzar. En este momento, se dice que el sistema está en un estado de interbloqueo o se ha producido un interbloqueo en el sistema, y ​​estos procesos que siempre están esperando el uno al otro se denominan procesos de interbloqueo.

causa del punto muerto

① Recursos del sistema insuficientes (competencia por recursos inalienables)
② Secuencia de progreso inadecuada (P1 posee A y solicita B, P2 posee B y solicita A)

Condiciones necesarias para que se produzca un interbloqueo

① La condición de exclusión mutua
se refiere al uso exclusivo de los recursos asignados por el proceso, es decir, un determinado recurso solo es ocupado por un proceso dentro de un período de tiempo.
② Condición de solicitud y retención
significa que el proceso ha mantenido al menos un recurso, pero ha realizado una nueva solicitud de recurso, y el recurso ha sido ocupado por otros procesos. En este momento, el proceso solicitante está bloqueado, pero aún conserva otros recursos que ha obtenido.
③ La condición de no privación
se refiere a los recursos que ha adquirido el proceso, que no se pueden privar antes de que se agote, y solo se pueden liberar por sí mismos cuando se agota
.
ser una cadena de anillo de recursos de proceso.

Enfoque básico para lidiar con interbloqueos

① Prevenir interbloqueo
Este es un método relativamente simple e intuitivo de prevención previa. El método consiste en evitar el interbloqueo mediante el establecimiento de ciertas restricciones para destruir una o varias de las cuatro condiciones necesarias para el interbloqueo. La prevención de puntos muertos es un método fácil de implementar que ha sido ampliamente utilizado. Sin embargo, debido a que las restricciones impuestas a menudo son demasiado estrictas, pueden provocar una disminución en la utilización de los recursos del sistema y en el rendimiento del sistema.
② Evitar el punto muerto
Este método también es una estrategia preventiva por adelantado, pero no es necesario tomar varias medidas restrictivas por adelantado para destruir las cuatro condiciones necesarias para el punto muerto, pero en el proceso de asignación dinámica de recursos, utilice algún método para evitar el punto muerto. sistema entre en un estado inseguro, evitando así interbloqueos.
③ Detección de punto muerto
Este método no necesita tomar ninguna medida restrictiva por adelantado, ni necesita comprobar si el sistema ha entrado en un área insegura.Este método permite que el sistema se bloquee durante el funcionamiento. Sin embargo, el mecanismo de detección establecido por el sistema puede detectar la ocurrencia de interbloqueo a tiempo y determinar con precisión los procesos y recursos relacionados con el interbloqueo, y luego tomar las medidas adecuadas para eliminar el interbloqueo que se ha producido en el sistema.
④ Eliminación de puntos muertos
Esta es una medida que se combina con la detección de puntos muertos. Cuando se detecta que se ha producido un interbloqueo en el sistema, el proceso debe liberarse del estado de interbloqueo. Un método de implementación común es revocar o suspender algunos procesos para reclamar algunos recursos y luego asignar estos recursos a procesos que ya están en un estado bloqueado, para que puedan convertirse en un estado listo para continuar ejecutándose.

3. Gestión de la memoria

inserte la descripción de la imagen aquí

Tecnología de expansión de memoria: tecnología de superposición y tecnología de intercambio※

tecnología de superposición
Dividir un programa grande en una serie de superposiciones, cada superposición es una unidad de programa relativamente independiente, formar un grupo de superposiciones que no requieren cargarse en la memoria al mismo tiempo que se ejecuta el programa y formar un segmento de superposición, y este segmento de superposición se asigna a la misma área de almacenamiento, esta área de almacenamiento se convierte en el área de cobertura y corresponde al segmento de cobertura uno por uno. El tamaño de un segmento de superposición está determinado por la mayor superposición en el segmento de superposición. (Para resolver el problema de la capacidad de memoria demasiado pequeña, rompe la limitación de que toda la información de un programa debe cargarse en la memoria antes de que pueda ejecutarse)

tecnología de conmutación
Mueva una parte de un programa y los datos que no se utilizan temporalmente de la memoria interna a la memoria externa para liberar el espacio de memoria necesario; o lea el programa o los datos especificados de la memoria externa a la memoria correspondiente y transfiera el control al He, una tecnología de expansión de memoria que le permite ejecutarse en el sistema. La programación de nivel medio del procesador es utilizar la tecnología de conmutación.

Diferencias:
① En comparación con la tecnología de cobertura, la tecnología de intercambio no requiere la estructura de cobertura entre los segmentos del programa proporcionada por el programador;
② La tecnología de intercambio se lleva a cabo principalmente entre procesos y trabajos, y la tecnología de cobertura se lleva a cabo principalmente en el mismo proceso o trabajo; La tecnología de intercambio se lleva a cabo principalmente entre el proceso y el trabajo, y la tecnología de cobertura se lleva a cabo principalmente en el mismo proceso o trabajo; ③ La tecnología de cobertura solo puede cubrir el segmento del programa
que es irrelevante para el cubierto segmento de programa, y ​​el proceso de intercambio se compone de dos procesos: swap out y swap in. La tecnología de cobertura solo puede cubrir segmentos de programa irrelevantes para el segmento de programa cubierto, y el proceso de intercambio consta de dos procesos: intercambio e intercambio.

La diferencia entre paginación y segmentación※

Hay muchas similitudes entre la
página de enlace y el sistema de segmentación, pero son completamente diferentes en concepto, principalmente en:
1. La página es informaciónunidad física, la paginación es para lograr una asignación discreta, a fin de reducir la fracción externa de la memoria y mejorar la tasa de utilización de la memoria; o, la paginación se debe solo a las necesidades de administración del sistema, no a las necesidades de los usuarios.
el segmento es informativounidad lógica, que contiene un conjunto de información cuyo significado es relativamente completo. El objetivo de la segmentación es satisfacer mejor las necesidades de los usuarios.
2,El tamaño de página es fijo y determinado por el sistema., la dirección lógica se divide en dos partes, el número de página y la dirección de la página, que es realizada por el hardware de la máquina, por lo que un sistema solo puede tener una página de un tamaño.
la longitud del segmento no es fija, depende del programa escrito por el usuario, y normalmente se divide según la naturaleza de la información cuando el programa de edición edita el programa fuente.
3.El espacio de direcciones del trabajo paginado es unidimensional., que es un solo espacio lineal, el programador solo necesita usar un mnemotécnico para representar una dirección.
El espacio de direcciones de trabajo segmentado es bidimensional.Cuando el programador identifica una dirección, necesita dar tanto el nombre del segmento (número de segmento) como la dirección dentro del segmento (dirección de segmento).

Modo de direccionamiento de la CPU※

El
modo de direccionamiento de enlace es la forma en que el procesador encuentra la dirección efectiva de acuerdo con la información de dirección dada en la instrucción.Es un método para determinar la dirección de datos de esta instrucción y la dirección de la próxima instrucción que se ejecutará. En la memoria, las formas de escribir o leer operandos o palabras de instrucción incluyen la designación de direcciones, el almacenamiento asociativo y el acceso a la pila. Casi todas las computadoras usan la designación de direcciones en la memoria. Cuando se utiliza el método de especificación de dirección, el método de formación de la dirección del operando o instrucción se denomina método de direccionamiento.
El modo de direccionamiento se divide en dos categorías, a saber, el modo de direccionamiento de instrucciones y el modo de direccionamiento de datos, el primero es relativamente simple y el segundo es más complicado. Vale la pena señalar que en una computadora de diseño convencional, el direccionamiento de instrucciones en la memoria se alterna con el direccionamiento de datos.

Direccionamiento de instrucciones:

  1. direccionamiento secuencial
  2. omitir direccionamiento

Direccionamiento de datos:

  1. direccionamiento implícito
  2. dirigirse inmediatamente
  3. direccionamiento directo
  4. direccionamiento indirecto
  5. direccionamiento relativo
  6. direccionamiento básico
  7. direccionamiento indexado

La diferencia entre montón y pila.※※

Enlace
(1) Los métodos de gestión son diferentes.
El compilador de pila se administra automáticamente sin control manual por parte del programador, mientras que la aplicación y la liberación del espacio de almacenamiento dinámico están controladas por el programador, que es propenso a las fugas de memoria.

(2) El tamaño del espacio es diferente.
La pila es una estructura de datos que se extiende a direcciones bajas y es un área de memoria continua. Esta oración significa que la dirección de la parte superior de la pila y la capacidad máxima de la pila están predeterminadas por el sistema. Cuando el espacio solicitado excede el espacio restante de la pila, se solicitará un desbordamiento. Por lo tanto, el usuario puede obtener menos espacio de la pila.

El montón es una estructura de datos que se expande a direcciones altas y es un área de memoria discontinua. Porque el sistema usa una lista enlazada para almacenar direcciones de memoria libre, y la dirección transversal de la lista enlazada es de dirección baja a dirección alta. Se puede ver que el espacio obtenido por el montón es más flexible y más grande. Los elementos en la pila están en correspondencia uno a uno, y no habrá ninguna situación en la que un bloque de memoria salte del medio de la pila.

(3) Si se generan fragmentos.
Para el montón, malloc/free frecuente (nuevo/eliminar) inevitablemente causará discontinuidad en el espacio de la memoria, lo que resultará en una gran cantidad de fragmentos y reducirá la eficiencia del programa (aunque el sistema operativo recuperará la memoria después de que el programa finalice) . Para pilas, este problema no existe.

(4) Las direcciones de crecimiento son diferentes.
La dirección de crecimiento del montón es hacia arriba, es decir, hacia la dirección de aumento de las direcciones de memoria; la dirección de crecimiento de la pila es hacia abajo, es decir, hacia la dirección de disminución de las direcciones de memoria.

(5) Los métodos de distribución son diferentes.
El montón es asignado dinámicamente por la función malloc() en el programa y liberado por la función free(); la asignación y liberación de la pila la realiza el compilador, y la asignación dinámica de la pila la realiza alloca() función, pero la asignación dinámica de la pila A diferencia del montón, el compilador aplica y libera su asignación dinámica sin implementación manual.

(6) La eficiencia de distribución es diferente.
La pila es una estructura de datos proporcionada por el sistema de la máquina, y la computadora brindará soporte para la pila en la capa inferior: asigne un registro especial para almacenar la dirección de la pila, empuje y extraiga la pila, y hay instrucciones especiales para ejecutar. El almacenamiento dinámico lo proporciona la biblioteca de funciones C. Su mecanismo es muy complicado. Por ejemplo, para asignar una parte de la memoria, la función de biblioteca buscará en la memoria del almacenamiento dinámico una memoria lo suficientemente grande de acuerdo con un cierto algoritmo (el algoritmo específico). algoritmo puede referirse a la estructura de datos/sistema operativo). Si no hay suficiente espacio (tal vez debido a demasiada fragmentación de la memoria), el sistema operativo necesita reorganizar el espacio de la memoria, de modo que exista la posibilidad de asignar suficiente memoria y luego devolver. Obviamente, el montón es mucho menos eficiente que la pila.

¿Se desbordará la pila recursiva, por qué?

Encadenando
llamadas recursivas, las funciones solo pueden salir una por una después de llegar al punto final final, y el espacio de pila ocupado no se ha liberado antes de llegar al punto final final, si hay demasiadas llamadas recursivas, puede causar que los recursos de pila ocupados para exceder subprocesos El valor máximo, lo que resulta en un desbordamiento de pila, lo que lleva a una salida anormal del programa.

Las reglas de entrada y salida de la
pila de enlaces son primero en entrar, luego en salir. Si la primera entrada no se puede sacar de la pila, siempre existirá en el espacio de la pila, lo que conducirá fácilmente a que la pila se llene y se desborde.

¿Qué es una fuga de pila?

El desbordamiento de la pila de enlaces
se refiere a la escritura de datos que superan la longitud límite en la pila, y los datos desbordados sobrescribirán otros datos en la pila, lo que afectará el funcionamiento del programa.

4. Gestión de documentos

inserte la descripción de la imagen aquí

¿Qué son los algoritmos de programación de disco? ※※

1,algoritmo de orden de llegada(FCFS) Servicio por orden de llegada
Este es un algoritmo de programación de disco relativamente simple. Programa según el orden en que los procesos solicitan acceso al disco.
La ventaja de este algoritmo es que es justo y simple, y las solicitudes de cada proceso se pueden procesar a la vez, y no habrá ninguna situación en la que la solicitud de un determinado proceso no se pueda satisfacer durante mucho tiempo.
Dado que este algoritmo no optimiza la búsqueda, en el caso de una gran cantidad de solicitudes de acceso al disco, este algoritmo reducirá el rendimiento del servicio del dispositivo, lo que dará como resultado un tiempo de búsqueda promedio más prolongado, pero el tiempo de respuesta de cada proceso para obtener la servicio El cambio es pequeño.
2,Algoritmo de primer tiempo de búsqueda más corto(SSTF) El tiempo de búsqueda más corto primero
Este algoritmo selecciona un proceso que requiere que la pista a la que se acceda sea la más cercana a la pista donde se encuentra el cabezal actual, de modo que el tiempo de búsqueda sea el más corto cada vez. rendimiento, pero no hay garantía de que el tiempo de búsqueda promedio sea el más corto. Su desventaja es que las posibilidades de respuesta a la solicitud de servicio del usuario no son iguales, lo que resulta en una gran variación en el tiempo de respuesta. En el caso de una gran cantidad de solicitudes de servicio, las solicitudes a las pistas de borde interior y exterior se retrasarán indefinidamente y el tiempo de respuesta de algunas solicitudes será impredecible.
3.Algoritmo de escaneo (SCAN) Programación de ascensores
El algoritmo de escaneo no solo considera la distancia entre la pista a la que se accede y la pista actual, sino también la dirección de movimiento actual del cabezal magnético. Por ejemplo, cuando la cabeza magnética se mueve de adentro hacia afuera, el siguiente objeto de acceso seleccionado por el algoritmo de escaneo debería ser que la pista que desea visitar no solo esté fuera de la pista actual, sino también la más cercana. Acceder desde el interior al exterior de esta forma, hasta que no quede más pista magnética exterior a la que acceder, el brazo magnético se invierte y se desplaza de fuera hacia el interior. En este momento, dicho proceso también se selecciona para programar cada vez, es decir, la pista a la que se accede está dentro de la pista actual, evitando así que se produzca inanición. Debido a que el movimiento de la cabeza magnética en este algoritmo es bastante similar a la operación del ascensor, también se le llama algoritmo de programación del ascensor. Básicamente, este algoritmo supera las desventajas del primer algoritmo de tiempo de búsqueda más corto de que el servicio se concentra en la pista intermedia y el tiempo de respuesta varía mucho, y tiene las ventajas del primer algoritmo de tiempo de búsqueda más corto, es decir, el rendimiento es grande y el el tiempo de respuesta promedio es pequeño, pero debido al método de escaneo oscilante, la frecuencia de acceso a las pistas en ambos lados es aún más baja que la de la pista central.
4.Algoritmo de exploración cíclica (CSCAN)
El algoritmo de ciclo de exploración es una mejora del algoritmo de exploración. Si las solicitudes de acceso a las pistas se distribuyen uniformemente, relativamente pocas solicitudes de acceso quedarán detrás del cabezal cuando llegue a un extremo del disco y viaje en la dirección opuesta. Esto se debe a que estas pistas acaban de procesarse, y la densidad de solicitudes en el otro extremo del disco es bastante alta, y el tiempo de espera para estas solicitudes de acceso es relativamente largo. Para resolver esta situación, el algoritmo de escaneo cíclico estipula que el cabezal se mueve en una dirección. Por ejemplo, solo moviéndose de adentro hacia afuera, cuando la cabeza se mueve a la pista más externa a acceder, la cabeza vuelve inmediatamente a la pista más interna a visitar, es decir, el número de pista más pequeño seguido del número de pista más grande constituye un ciclo para escanear.

5. Gestión de entradas y salidas

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41286942/article/details/123711437
Recomendado
Clasificación