实验内容:
下载并编译nachos之后(注意只能在32位linux下成功编译)
1. 跟踪执行nachos之后,观察以下函数的执行
(a) 上下文切换函数 SWITCH()
(b) 函数 ThreadRoot()
- 使用gdb运行nachos,回答一下问题:
(a) 在你的nachos中,以下函数的地址是什么:
1
i. InterruptEnable()
ii. SimpleThread()
iii. ThreadFinish()
iv. ThreadRoot()
并描述你怎样找到他们的地址的.
(b) 以下线程对象的地址是什么?
i. main thread
ii. 被主线程创造的forked thread
并描述怎么找到他们的
(c) 主线程第一次执行到SWITCH函数的时候,它执行到最后一条语句ret后,返回给cpu的地址是什么?这个地址在程序中指向什么?
(d) 子线程第一次执行到SWITCH函数的时候,它执行到最后一条语句ret后,返回给cpu的地址是什么?这个地址在程序中指向什么?
实验步骤与内容:
1、在threads目录下使用make命令编译
2、用gdb nachos命令开启调试
3、查看源代码的执行,熟悉执行流程
4、程序自main函数开始执行,在Initialize函数中,初始化了main线程的 对象。继续执行执行ThreadTest函数后打印出内容