Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Has estado alguna vez en la zona más misteriosa de "Minecraft" para descubrirlo?

¿Has estado alguna vez en la zona más misteriosa de "Minecraft" para descubrirlo?

Una vez entré accidentalmente a un área misteriosa en "Minecraft". Aquí te recomiendo cuatro lugares que creo que son relativamente misteriosos: Primero, Zombie Village. Hablando de Zombie Village, creo que es posible que algunas personas nunca la hayan visto antes. De hecho, según mi experiencia de haberlo visto sólo unas pocas veces, este es un pueblo sencillo. Como sugiere el nombre, los aldeanos del pueblo son zombis. Quizás solo un aldeano se convirtió en zombi al principio, y luego lentamente se extendió e infectó a toda la aldea. Esta extraña aldea parecía estar abandonada. Estos aldeanos zombies pueden quemarse durante el día. Si entras en esta aldea zombie, te sugiero que no elijas hacerlo durante el día. En segundo lugar, Woodland Mansion. Después de ver este lugar en las noticias, lo busqué varias veces, pero nunca lo encontré. Escuché que no es difícil llegar a Woodland Mansion. Siempre que intercambies el mapa con los aldeanos y encuentres al cartógrafo, sabrás el camino a Woodland Mansion. Se rumorea que la mansión está llena de tesoros, pero también de peligros. No es fácil encontrar la mansión en un bosque imponente. En tercer lugar, el iglú. Esta casita en la nieve, aunque parece normal y cubierta por una capa de nieve, no parece diferente de otras casas, pero está llena de todo tipo de crisis inesperadas. Si no miras con atención, te resultará difícil encontrar la entrada a tu sótano, a menos que quites todo el piso de la casa. Cuarto, la cabaña de la bruja. Con solo escuchar el nombre, sentí un color muy misterioso. De hecho, la ubicación de la casa también es muy misteriosa, y es mucho más difícil que las tres primeras. Si eres un novato que acaba de empezar a jugar "Minecraft" y quieres ir a la cabaña de las brujas, debes prestar atención al hecho de que la casa está llena de brujas. Los ataques que realizan son de largo alcance y venenosos, lo cual es cierto. muy peligroso. En resumen, estos lugares tan misteriosos van acompañados de grandes peligros. Sugiero que quienes quieran explorarlos estén completamente preparados.

上篇: Inicialización del sistema uCOS ¿Qué hace osinit? Informe del experimentoEn uCOS, cada tarea tiene una pila de tareas independiente. Para comprender profundamente el papel de la pila de tareas, también podríamos analizar todo el proceso de una tarea desde el "nacimiento" hasta la "muerte". Específicamente, necesitamos analizar los cambios en la pila de tareas en varios estados, como la tarea. creación, ejecución y suspensión. Ahora supongamos que el sistema está ejecutando una tarea TPrint creada por el usuario para completar un trabajo de impresión. TPrint se creó inicialmente a través de la función OSTaskCreate (). La función relacionada con la pila de tareas es la primera función de código familiar OSTaskStkInit (). Esta función debe implementarse durante el proceso de trasplante de uCOS. La función de la "pila de inicialización" es en realidad preparar por adelantado el estado de inicio (valor correcto) del registro de la CPU cuando la tarea se ejecuta en un área determinada de la RAM después de que el programador del kernel programe la ejecución de la tarea por primera vez. tiempo, estará listo. Los datos (valor de registro) se insertan en el registro de la CPU. Si los datos están diseñados correctamente, la CPU no podrá ejecutar la tarea, pero definitivamente podrá ejecutarla. Si el diseño de datos es razonable, la CPU funcionará de acuerdo con nuestras ideas prediseñadas. Por lo tanto, "inicializar la pila" es en realidad un trabajo "preparatorio". En este proceso, se deben considerar cuidadosamente dos puntos, uno es cómo colocar la PC y el otro es cómo manejar otros registros de la CPU (excepto la PC). En primer lugar, dado que la tarea se ejecuta por primera vez y la tarea será esencialmente un fragmento de código, el puntero de la PC debe ubicarse en la primera línea de este código, que es la llamada dirección de entrada (EntryPoint), que se guarda mediante el puntero de la tarea, por lo que se puede asignar un valor al puntero de la PC. En segundo lugar, este código aún no se ha ejecutado, por lo que las variables en el código no tienen nada que ver con otros registros de la CPU, por lo que R0-R12 y R14 se pueden asignar arbitrariamente o no, para que estos registros mantengan sus valores originales. Obviamente este último es más sencillo. Finalmente, asigne un valor a CPSR y el usuario podrá hacer que el sistema se ejecute en modo de sistema o en modo de administración según las necesidades reales. Después del apilamiento y el apilamiento, SP apunta a la parte inferior de la pila de tareas (el último elemento de la matriz de pila de tareas definida). Después de eso, el código de la tarea comienza a ejecutarse oficialmente. Dado que los registros de la CPU son limitados, es inevitable guardar temporalmente algunas variables temporales en la pila durante el proceso de ejecución. No se preocupe por en qué dirección se debe guardar, el SP lo sabe (cuando la tarea se ejecuta por primera vez, esta dirección es la dirección del último elemento de la matriz de la pila de tareas). El tamaño de la pila de tareas está relacionado con la cantidad de variables temporales en el código de la tarea. Si hay muchas variables temporales en el código, la pila debe diseñarse para que sea más grande. Luego, la tarea TPrint se suspenderá por algún motivo, por lo que el sitio en ejecución de la tarea debe colocarse en la pila para protegerlo. Cuando se restaure el sitio, la tarea TPrint se ejecutará nuevamente y la tarea también podrá comenzar a ejecutarse desde el. punto de interrupción anterior. Entonces, ¿qué es este sitio? Básicamente, una tarea TPrint se ejecuta cuando la CPU ejecuta un fragmento de código específico, por lo que el sitio es el sitio de la CPU, que es el valor del registro. Los valores de estos registros contienen toda la información sobre la ejecución del código, incluida la ubicación del código que se está ejecutando actualmente (representado por el valor de la PC). Por lo tanto, simplemente inserte el valor del registro de la CPU en la pila, luego recuerde la posición del puntero superior en la pila (OSTCBCur->OSTCBStkPtr guarda el SP) y, justo antes de que la tarea esté a punto de ejecutarse nuevamente, cambie el valor anterior. Valor guardado del registro de la CPU desde donde apunta el SP. Las direcciones se colocan en los registros de la CPU en secuencia y la tarea se puede ejecutar exactamente en la ubicación donde se interrumpió por última vez. Este proceso es como congelar la tarea repentinamente, y nada relacionado con la tarea se puede mover. Luego, después de un período de descongelación, las cosas relacionadas con la tarea vuelven a estar disponibles, por lo que la tarea puede ejecutarse nuevamente. Del análisis anterior, podemos ver que la pila de tareas vive y muere con la tarea de principio a fin. Su función se puede resumir en dos puntos: primero, cuando la tarea se está ejecutando, se usa para guardar algunas variables locales; , cuando la tarea está suspendida, que es responsable de guardar el sitio de ejecución de la tarea, es decir, el valor del registro de la CPU. Algunas personas ignoran el primer punto y sospechan que el tamaño de la pila de tareas debería ser un valor fijo. 下篇: Software de programación S5