#oslab
支持命令参数
$ echo arg1 arg2 arg3
$ ls /bin /usr/bin /home
实现内置命令cd、pwd、exit
$ cd /bin
$ pwd
/bin
实现文件重定向
$ echo hello >log
$ cat log
hello
实现管道
$ cat /etc/passwd | wc -l
实现管道和文件重定向
$ cat input.txt
3
2
1
3
2
1
$ cat <input.txt | sort | uniq | cat >output.txt
$ cat output.txt
1
2
3
莱布尼兹级数公式: 1 - 1/3 + 1/5 - 1/7 + 1/9 - ... = PI/4
主线程创建1个辅助线程
主线程计算级数的前半部分
辅助线程计算级数的后半部分
主线程等待辅助线程运行結束后,将前半部分和后半部分相加
与上一题类似,但本题更加通用化,能适应N个核心,需要使用线程参数来实现 主线程创建N个辅助线程 每个辅助线程计算一部分任务,并将结果返回 主线程等待N个辅助线程运行结束,将所有辅助线程的结果累加
主线程创建一个辅助线程 主线程使用选择排序算法对数组的前半部分排序 辅助线程使用选择排序算法对数组的后半部分排序 主线程等待辅助线程运行結束后,使用归并排序算法归并数组的前半部分和后半部分
系统中有3个线程:生产者、计算者、消费者 系统中有2个容量为4的缓冲区:buffer1、buffer2 生产者生产'a'、'b'、'c'、‘d'、'e'、'f'、'g'、'h'八个字符,放入到buffer1 计算者从buffer1取出字符,将小写字符转换为大写字符,放入到buffer2 消费者从buffer2取出字符,将其打印到屏幕上
功能和前面的实验相同,使用信号量解决
创建N个线程:T1、T2、T3、… TN T1向T2发送整数1 T2收到后将整数加1 T2向T3发送整数2 T3收到后将整数加1 T3向T4发送整数3 … TN收到后将整数加1 TN向T1发送整数N