lab1:Xv6 and Unix utilities
实验的主要内容,xv6的系统调用以及实现一些基础的shell操作。实验链接
实验总结
-
xv6环境配置,教程。注意事项,在配置的过程中出现问题,infinite-recursion错误。解决方法详见:error .
-
实现sleep:主要考察知识点,读取命令行参数,以及调用系统调用sleep
-
实现pingpong:主要考察知识点,建立fork和pipe,以及父进程中wait的使用,等待子进程退出。fork()可以创建子进程,子进程会完整的拷贝父进程的内存参数等。pipe是一个建立在内存中的管道,用来进行数据传输,主要的方法有read以及write。注意管道分为读出端和写入端,分别是不同的文件描述符。文件描述符是一个整数变量,是特定文件的标志。fork()的子进程的返回值为0,父进程的返回值为子进程id,可以凭借这个特征来在子进程和父进程中分别编程实现不同功能。
-
实现primes:并发编程实现素数的筛选。并发编程比较难懂,有待研究。主要考查点还是fork和pipe。
-
实现find:主要考查点,目录文件的递归查询,借鉴ls的实现,读取打开路径的类型,分为目录和文件。值得注意的是递归的时候要把当前目录“.”和父目录“…”排除掉。
-
实现xargs:主要考查点fork和exec的使用,在子进程中使用exec命令。