为了对MaQueOS实现的功能进行测试,我们基于MaQueOS提供的系统调用,使用LoongArch汇编指令编写了测试应用程序。测试程序的运行原理在每章中进行了详细的解释。
相关的测试程序如下:
1)create应用程序(第12章),通过调用create系统调用,创建一个常规文件hello_xt。
2)destroy应用程序(第12章),通过调用destroy系统调用,删除hello_xt文件。
3)write应用程序(第12章),首先通过调用open系统调用打开hello_xt文件,然后调用write系统调用向文件中写入字符串“hello,xt!”,最后通过调用close系统调用关闭文件。
4)read应用程序(第12章),首先通过调用open系统调用打开文件hello_xt,然后调用read系统调用从该文件中读取内容“hello,xt!”,将读取的内容显示在显示器上后,通过调用close系统调用关闭文件。
5)sync应用程序(第12章),通过调用sync系统调用,将内存缓冲区的内容写回到硬盘中对应的数据块里。
6)hello应用程序(第11章),通过调用timer系统调用,实现每隔固定时间在显示器上显示“hello,world.”字符串的功能。
7)print应用程序(第9章),实现了在显示器上显示用户通过xtsh传递给print应用程序的字符串。
8)share应用程序(第10章),在运行时创建了1个子进程。其中,在子进程创建前,父进程通过对其用户栈进行写操作来触发页无效例外;在子进程创建后,父子进程通过对各自的用户栈进行写操作来触发页修改例外。
9)shmem应用程序(第11章),在运行时创建了1个子进程。父子进程首先通过调用shmem系统调用,为两个进程创建了一个共享内存plane,之后父子进程通过对共享内存plane的读写操作进行通信。
在MaQueOS启动后,为了给用户提供交互界面,MaQueOS开发了一个用于和用户进行交互的shell程序——xtsh(第9章)。当MaQueOS启动后,进程1在用户态下通过调用exe系统调用,加载运行xtsh应用程序,并等待用户输入命令。上述所有应用程序都可以在xtsh中运行。
除了这9个测试应用程序,可以使用在附录E中的飞机大战应用程序对MaQueOS的功能进行更加全面的测试。飞机大战应用程序的实现被拆分成多个独立的子任务,这些子任务分散在每章的本章任务中。