实验内容:
下载并编译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函数后打印出内容
可见本程序运行关键步骤在于ThreadTest函数。

本文详细介绍了在 Nachos 操作系统中进行线程实验的过程,包括线程的创建、上下文切换函数SWITCH和ThreadRoot的执行分析。通过GDB调试,探讨了中断启用函数、线程对象地址、线程在SWITCH后的返回地址等关键点,揭示了线程如何在SimpleThread和ThreadFinish之间交替执行直至结束。
:线程初探&spm=1001.2101.3001.5002&articleId=78265197&d=1&t=3&u=6094aca70b934d3283d4bb3ad184e813)
2737

被折叠的 条评论
为什么被折叠?



