pintos-pro-项目-用户程序2————————————————————————————————作者:————————————————————————————————日期:3Pintosproject2作者:西安电子科技大学王永刚QQ:357543420这个项目将使pintos可以加载并执行用户程序,并且为用户程序提供系统调用
Project2需要完成的的任务有四个:Task1ProcessTerminationMessages进程终止信息Task2ArgumentPassing参数传递Task3SystemCalls系统调用Task4DenyingWritestoExecutables不能写入可执行文件Task1:ProcessTerminationMessages进程终止信息要求:1
在进程结束时输出退出代码(就是main函数的返回值,或者异常退出代码
注意:用户进程结束时输入退出代码,核心线程返回时不输入
输出格式被规定如下:printf(“%s:exit(%d)n”,
);4实现方法:1
既然要打印返回值,就得用一个变量保存返回值,于是在structthread结构中加入一个变量回保存返回值:intret;在init_thread()函数中初始化为0(这里可以不用初始化)
在线程退出里要保存其返回值到ret中,这个将在系统调用里的exit函数中保存,这里先不考虑
在什么地方加入printf()呢
每个线程结束后,都要调用thread_exit()函数,如果是加载了用户进程,在thread_exit()函数中还会调用process_exit()函数,在process_exit()函数中,如果是用户进程,那么其页表一定不为NULL,而核心进程页表一定为NULL,即只有用户进程退出时if(pd
=NULL){}就会成立,所以在大括号中加入:printf(“%s