Sistema operativo Touge 2023 Ejercicio de clase de primavera 2.1: interrupción externa

Nivel 1: Ocurrencia de interrupción del reloj

detalles de la misión

Tarea para este nivel: Responder mediante operaciones prácticas. Durante el proceso de generar los caracteres 0/1 en la primera línea (como se muestra en la figura siguiente), ¿cuántas interrupciones de reloj ocurrieron en total?

información relacionada

Para completar esta tarea, necesita dominar:
1. Establecer la versión 1 del kernel como objeto de análisis,
2. Comenzar a depurar el kernel con gdb,
3. Realizar un seguimiento y analizar las interrupciones del reloj.

requisitos de respuesta

Realice operaciones prácticas basadas en conocimientos relevantes y continúe ingresando c hasta que la primera línea esté completamente llena con 0/1.
Responda la pregunta: ¿Cuántas interrupciones de reloj se produjeron cuando se generaron todos los caracteres 0/1 en la primera línea, es decir, cuántas veces se produjo el registro de santiamén cuando la primera línea se llenó por completo?

Respuesta

cp /data/workspace/myshixun/exp1/1.tgz ~/os/
cd os/linux-0.11-lab
tar -zxvf ../1.tgz
rm -rf cur
ln -s 1 cur
cd 1/linux/
make
cd ../..
./rungdb

Abre otra terminal y entra

cd os/linux-0.11-lab/
./mygdb
b do_timer 
display jiffies

Continúe escribiendo c y presione Enter hasta que 0 llegue a la segunda línea.

 Luego ingrese kill, presione y y presione Enter para salir de gdb y evitar afectar el siguiente nivel.

 Nivel 2: Primera interrupción del reloj

Cierre otras terminales, vuelva a abrir una terminal y vuelva a intentarlo

cp /data/workspace/myshixun/exp1/1.tgz ~/os/
cd os/linux-0.11-lab
tar -zxvf ../1.tgz
rm -rf cur
ln -s 1 cur
cd 1/linux/
make
cd ../..
./rungdb

Abre otra terminal y entra

cd os/linux-0.11-lab/
./mygdb
b do_timer
c
p jiffies
bt
finish
disas
si
si
disas
b *0x77dd
c
si
disas

Ingrese a la terminal para completar el último paso.

La flecha en la imagen de arriba apunta a la respuesta. Finalmente, recuerde matar para salir de gdb.

 

Nivel 3: Interrupción del sexto reloj

detalles de la misión

Tareas para este nivel: Responder a través de conocimientos y experimentos relevantes: cuando ocurre la sexta interrupción del reloj del kernel de la versión 1, ¿cuáles son el punto de interrupción y el punto de recuperación (dirección de instrucción) respectivamente? ¿Cuál es la cadena 0/1 generada por la máquina virtual de Bochs en este momento? (ignorar espacios)

información relacionada

Para completar esta tarea, necesita dominar:
1. Usar gdb para depurar el kernel
2. Realizar un seguimiento y analizar las interrupciones del reloj.

Requisitos de programación

Según el conocimiento relevante, complete el análisis de las instrucciones de punto de interrupción y las instrucciones de punto de recuperación y responda las preguntas:
1. ¿Cuáles son las direcciones de las instrucciones de punto de interrupción y las instrucciones de punto de recuperación?
2. ¿Cuál es la cadena 0/1 generada por la máquina virtual de bochs en este momento? (¡¡¡Solo complete los números, sin espacios!!!)
Complete las respuestas /data/workspace/myshixun/第三关.txt.

Respuesta

Mantenga el entorno del nivel anterior e ingrese ./rungdb

 Abre otra terminal y entra

cd os/linux-0.11-lab/
./mygdb

Ingrese en gdb

b do_timer
c
c
c
c
c
c
finish
si
si
disas
b *0x77dd
c
si
disas
info reg

La flecha apunta a la respuesta.

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_64821608/article/details/131260585
Recomendado
Clasificación