Experiencia del informe experimental del sistema operativo
Informe de experiencia del sistema operativo Cada diseño de curso me permite aprender algo que no puedo aprender en clases normales. Por eso aprecio cada oportunidad de diseñar cursos. No necesariamente sé qué tan perfecto es el diseño de mi curso, pero he estado estudiando y estudiando con gran concentración. Entonces, durante el curso de dos semanas, me quedé despierto dos noches y mi reloj biológico se vio gravemente alterado. Pero cada vez que completo una tarea, estoy muy emocionado. Al principio la tarea era sólo una tarea, pero luego la tarea se convirtió en mi propio trabajo. En términos generales, el entorno de mi curso cumple con los requisitos básicos de los profesores. En resumen, tengo las siguientes experiencias.
1. Internet es realmente poderoso y puede ser un asistente muy eficiente cuando se utiliza en el aprendizaje. Casi toda la información se puede encontrar en línea. Desde la instalación de máquinas virtuales Linux, hasta las operaciones de comando básicas de Linux, las funciones gráficas de gtk y finalmente el análisis detallado del sistema de archivos. Todos estos se pueden encontrar en línea. Por eso diseñé todo el curso y visité más de 100 sitios web relacionados (estadísticas incompletas). Por supuesto, las cosas en Internet son confusas y complicadas, y hay que aprender a filtrarlas.
Si no puedes decidir qué está bien o mal, existe un método muy sencillo que puedes probar. Tomemos como ejemplo el segundo experimento. Hay muchas operaciones pequeñas involucradas en la compilación del kernel. Si hay un error en una de estas pequeñas operaciones, puede provocar que falle la compilación, lo que lleva mucho tiempo. Compilé con una máquina virtual durante casi 3 horas seguidas. Así que mucho cuidado, comete el menor número de errores posible y ahorra tiempo. Encuentre varios materiales de referencia más, compárelos entre sí y estudie lentamente. Finalmente, puedes obtener el doble de resultado con la mitad de esfuerzo.
3. Atrévete a abordar problemas difíciles. Cuanto más difícil es el problema, más desafiante es. Sólo así podremos alcanzar el estado de olvido de comer y dormir. Por supuesto, no se recomienda quedarse despierto hasta tarde. Después de todo, puedes librar una batalla prolongada si tienes suficiente energía. Pero cuando estás haciendo diseño de clase, debes estar en un estado en el que puedas pensar en el problema a resolver mientras comes, duermes o vas al baño, por lo que te resulta difícil tener éxito.
4. Es mejor tener el hábito de grabar durante el proceso de diseño del curso, de modo que al escribir el informe experimental, pueda recordar completamente los diversos problemas encontrados durante el proceso. Por ejemplo, encontré una pregunta incorrecta que nunca antes había encontrado y no sabía por dónde empezar. Después de consultar mucha información, tengo cierta comprensión de los errores de párrafo y puedo resolverlos de la manera correspondiente.
En programación, las siguientes prácticas pueden conducir fácilmente a errores de párrafo, que son causados básicamente por el uso inadecuado de punteros.
1) Al acceder al área de datos del sistema, especialmente al escribir datos en la dirección de memoria protegida del sistema, el método más común es darle al puntero una dirección de 0.
2) Memoria fuera de límites (matriz fuera de límites, tipos de variables inconsistentes, etc.) Accede a un área de memoria que no te pertenece.
3) Otros
Por ejemplo:
lt1 gt; recuerde inicializar el puntero después de definirlo y recuerde juzgar si está vacío cuando lo use. .
lt2 gt Si se inicializa cuando se usa una matriz, si el subíndice de la matriz está fuera de los límites, si los elementos de la matriz existen, etc.
lt3 gt Si el control de formato de las variables es razonable al procesar variables, etc.
Solución
1. Utilice gdb para encontrar el error de segmentación paso a paso:
2. Analice el archivo principal
3. cuando ocurre el error de segmentación Depuración:
4. Utilice backtrace y objdump para el análisis:
En resumen, trate el curso como su propio trabajo, no como una tarea.
La experiencia de aprender sistemas operativos En un abrir y cerrar de ojos, el curso de aprendizaje de sistemas operativos de computadora de un semestre de duración está llegando a su fin. Este semestre, gracias a la cuidadosa enseñanza del profesor, tengo un conocimiento profundo de algunos principios y procedimientos operativos específicos de los sistemas operativos de las computadoras.
Antes de aprender el sistema operativo, simplemente pensaba que el sistema operativo solo hablaba de algunas aplicaciones informáticas y no entendía los procedimientos operativos específicos ni la practicidad, lo cual era muy superficial. A través del estudio de este semestre, me di cuenta de que el sistema operativo (SO) son todos los recursos de hardware, incluidos los recursos de software y los recursos de datos. Controlar las operaciones del programa; mejorar la interfaz hombre-máquina; brindar soporte para otras aplicaciones de software, etc.
, para que se puedan maximizar todos los recursos del sistema informático y proporcionar a los usuarios una interfaz de servicio conveniente, eficaz y amigable.
Después de un semestre de estudio, también aprendí que un sistema operativo de computadora es un software de sistema de múltiples capas instalado en el hardware de una computadora, que no solo mejora las funciones del sistema, sino que también oculta los detalles del operación de hardware.Implementa múltiples niveles de abstracción de las operaciones de hardware de la computadora. Algunos principios de los sistemas operativos también se aplican en la vida. La siguiente es mi experiencia al conectar algunos principios de los sistemas operativos con la vida a lo largo de este semestre de estudio:
1. Problemas entre productores y consumidores
En el proceso operativo real del sistema operativo, A menudo nos encontramos con el siguiente escenario: un módulo es responsable de generar datos y estos datos son procesados por otro módulo (el módulo aquí es amplio y puede ser una clase, función, hilo, proceso, etc.). es vívidamente Se llama productor; el módulo que procesa datos se llama consumidor.
Si simplemente abstraemos a productores y consumidores, ¿se sigue considerando productor? Cuestiones de consumo. El problema también requiere un colchón que actúe como intermediario entre el productor y el consumidor. Los productores colocan datos en buffers y los consumidores sacan datos de buffers.
Para entender este problema, tomemos un ejemplo de envío de una carta. Supongamos que desea enviar una carta ordinaria. El proceso general es el siguiente:
1. Equivale a los datos de fabricación del fabricante
2. ¿Pusiste la carta en el buzón? Esto equivale a que el productor coloque datos en un búfer.
¿El cartero sacó la carta del buzón? Esto equivale a que el consumidor saque datos del búfer.
¿El cartero lleva la carta a la oficina de correos y la gestiona en consecuencia? Equivalente al procesamiento de datos del consumidor.
2. ¿Algoritmo del banquero? Evite el punto muerto
El punto muerto se refiere al fenómeno en el que dos o más procesos se esperan entre sí debido a la competencia por los recursos durante la ejecución. Sin fuerza externa, no podrán avanzar. En este punto, se dice que el sistema está en un estado de punto muerto o que el sistema está en un punto muerto. Estos procesos que siempre están esperando unos a otros se denominan procesos de punto muerto. Dado que la ocupación de recursos es mutuamente excluyente, cuando un proceso solicita recursos, sin asistencia externa, el proceso relacionado nunca podrá asignar los recursos necesarios, lo que crea un fenómeno especial de estancamiento. Creo que lo que el sistema operativo llama un punto muerto es como dos personas cruzando un puente de una sola tabla o dos coches cruzando una calle de un solo sentido. La razón es que * * * disfruta de los recursos, que son los caminos.
Para mejorar la utilización de los recursos del sistema y evitar interbloqueos, no existen restricciones estrictas sobre la existencia de condiciones necesarias para los interbloqueos. En cambio, se utilizan algunos métodos para evitar que el sistema entre en un estado inseguro durante. el proceso de asignación dinámica de recursos, evitando así el estancamiento. Sin embargo, el algoritmo más representativo para evitar el punto muerto es el algoritmo bancario de Dijkstra. En este método, el estado del sistema se divide en estado seguro y estado inseguro. Siempre que el sistema esté siempre en un estado seguro, se pueden evitar los puntos muertos. La idea básica del algoritmo del banquero es determinar si el sistema es seguro antes de asignar recursos; si es seguro, se distribuirá.
Podemos pensar en el sistema operativo como un banquero. Los recursos administrados por el sistema operativo equivalen a los fondos administrados por el banquero, y la solicitud del proceso para asignar recursos al sistema operativo equivale al préstamo del usuario al banquero. Para garantizar la seguridad de los fondos, el banco estipula:
(1) Cuando la demanda máxima de fondos del cliente no excede los fondos existentes del banco, el cliente puede ser aceptado;
(2) El cliente puede pagar los préstamos a plazos, pero el monto total del préstamo no puede exceder la demanda máxima;
(3) Cuando los fondos existentes del banco no pueden cubrir el monto del préstamo que el cliente aún necesita, el el pago del préstamo al cliente puede retrasarse, pero el cliente siempre puede pagar el préstamo dentro de un tiempo limitado Obtener el préstamo dentro de un tiempo limitado;
(4) Cuando el cliente obtenga todos los fondos requeridos, poder devolver todos los fondos en un tiempo limitado.
Además, también podemos pensar en el sistema operativo como la construcción de una casa, y los recursos del sistema operativo como la cantidad de ascensores utilizados para construir la casa. El proceso solicita al sistema operativo que asigne recursos. equivalente al número de ascensores solicitados al construir la casa.
Para garantizar el buen avance del proyecto, el proceso de operación es el siguiente:
Cuando la demanda máxima de grúas no excede las grúas existentes utilizadas para construir casas, es aceptable construir casas;
La vivienda a construir podrá solicitar varias grúas por separado, pero el número total de grúas solicitadas no podrá superar la demanda máxima;
Cuando el número de ascensores existentes no pueda cubrir las necesidades de una casa, el número de ascensores necesarios para la casa. La cantidad se puede ampliar, pero la casa siempre puede obtener un préstamo dentro de un tiempo limitado;
Cuando la casa está construida con todas las grúas que necesita, podrá devolver todas las grúas en un tiempo limitado.
Problema de sincronización de procesos
Después de que un proceso alcanza un cierto punto, a menos que algún otro proceso haya completado algunas operaciones, debe detenerse y esperar un mensaje de otro proceso. Antes de recibir el mensaje, el proceso está en estado de espera. Después de recibir el mensaje, se despierta y está listo. Esto es la sincronización del proceso. También podemos encontrar ejemplos correspondientes en la vida:
Por ejemplo, conductores de automóviles y conductores. El conductor del automóvil es responsable de conducir, ingresar a la estación, abrir y cerrar la puerta y ingresar a la estación;
El conductor es responsable de vender boletos, entrar y salir. Observar la puerta del automóvil después de la estación y enviar información de apertura y cierre al conductor. En circunstancias normales, para cada evento, el conductor conduce y el conductor vende boletos; Al entrar y salir de la estación, los procesos de ambas partes deben estar sincronizados.
Resumen:
En resumen, algunos principios de los sistemas operativos se pueden encontrar en la vida. Combinando ejemplos de la vida y convirtiendo la abstracción en concreción, tendremos una comprensión más clara de sus principios y procesos de funcionamiento. Siento que a través del aprendizaje continuo y combinado con los problemas prácticos de la vida, podemos aprender mejor el sistema operativo.
Lo recomiendo ampliamente.