1.从main.cc的注释中可以看出,main.cc该函数做的主要工作是:
Bootstrap code to initialize the operating system kernel.
Allows direct calls into internal operating system functions,
to simplify debugging and testing. In practice, the
bootstrap code would just initialize data structures,
and start a user program to print the login prompt.
Most of this file is not needed until later assignments.
一个用来初始化操作系统内核的引导程序,允许直接调用内部方法来简化调试和测试。
实际上,这个引导程序仅进行了数据的初始化和启动一个用户程序来显示登录提示。
许多内容只有在分配之后才是需要的。
(比如说在线程管理中,我们只定义了THREAD,这样文件系统等相关信息就不会被执行)
2.在我们执行 ./nachos 之后可以增加很多参数,每个参数都代表了不同的含义,下面是可以增加的参数和参数的具体含义
// Usage: nachos -d <debugflags> -rs <random seed #>
// -s -x <nachos file> -c <consoleIn> <consoleOut>
// -f -cp <unix file> <nachos file>
// -p <nachos file> -r <nachos file> -l -D -t
// -n <network reliability> -m <machine id>
// -o <other machine id>
// -z
以上是所有可以使用的参数值
// -d causes certain debugging messages to be printed (cf. utility.h)
// -rs causes Yield to occur at random (but repeatable) spots
// -z prints the copyright message
-d 与调试信息相关,如果执行时增加参数 -d -t 则是打印出和thread相关的调试信息,如果执行时增加参数 -d + 则打印出所有调试信息。否则不打印。
-d 所跟的参数代表了需要打印哪些相关参数(具体见utility.h)
-rs 在指定的范围内随机触发线程的Yield方法,让出cpu,这个范围就是-rs 之后跟的参数(个人理解,不一定对)
-z 打印版本信息
之后都是与 USER_PROGRAM,FILESYS,NETWORK相关的内容,现在先不考虑
3.
#ifdef THREADS
extern int testnum;
#endif
由于现在分析的是线程管理过程,我们在Makefile中只定义了THREADS
DEFINES = -DTHREADS
所以将会定义参数testnum,用来记录测试的线程数。
在额外函数中,我们只调用了如下函数,该函数在threadtest.cc 文件中,执行一个线程测试。
extern void ThreadTest(void)
4.进入主函数main