操作系统导论第14章+第19章课后作业节选

目录

作业二-第十四章

第1题

题目要求

解答

第2题

题目要求

解答

第3题

题目要求

解答

第4题

题目要求

解答

第5题

题目要求

解答

作业三-第十九章

第2题

题目要求

解答

第3题

题目要求

解答

第4题

题目要求

解答

第5题

题目要求

解答


作业二-第十四章

第1题

题目要求

首先,编写一个名为 null.c 的简单程序,它创建一个指向整数的指针,将其设置为NULL,然后尝试对其进行释放内存操作。把它编译成一个名为 null 的可执行文件。当你运 行这个程序时会发生什么?

解答

代码样例:

 gcc 版本:

gcc version 11.2.0 (Debian 11.2.0-13)

编译运行:

gcc 1.c -o null
​
./null

什么都不会发生,程序正常执行;

第2题

题目要求

接下来,编译该程序,其中包含符号信息(使用-g 标志)。这样做可以将本多信息放入可执行文件中,使调试器可以但问有关变量名称等的本多有用信息。通过输入 gdb null,在调试器下运行该程序,然后,一旦 gdb 运行,输入 run。gdb 显示什么信息?

解答

gcc -g 1.c -o null
​
gdb null

输出信息

第3题

题目要求

编写一个使用 malloc()来分配内存的简单程序,但在退出之前忘记释放它。这个程序运行时会发生什么?你可以用 gdb 来查找它的任何问题吗?用 valgrind 呢(再次使用--leak-check=yes 标志)?

解答

代码样例:

 编译运行;

gcc -g 4.c -o 4
​
gdb 4

valgrind 结果

valgrind -s --leak-check=yes ./4

 检测到内存泄漏;

只有编译时添加了-g 参数才会有这个信息

第4题

题目要求

编写一个程序,使用 malloc 创建一个名为 data、大小为 100 的整数数组。然后,将data[100]设置为 0。当你运行这个程序时会发生什么?当你使用 valgrind 运行这个程序时会 发生什么?程序是否正确?

解答

代码样例:

运行后什么都没发生;

valgrind 结果:

valgrind -s --leak-check=yes ./5

 提示两个错误:

1.没有释放指针内存泄漏.

2.无效写入,数组越界

第5题

题目要求

创建一个分配整数数组的程序(如上所述),释放它们,然后尝试打印数组中某个元素的值。程序会运行吗?当你使用 valgrind 时会发生什么?

解答

代码样例:

程序会正常运行

valgrind结果:

valgrind -s --leak-check=full ./6

 1 个错误:无效读取,

作业三-第十九章

教材P152页,测算一下 TLB 的容量和访问 TLB 的开销。

其实每个章节的问题都是辅助完成章节作业的,所以我直接通过几个问题来完成章节作业;

第2题

题目要求

写一个程序,命名为 tlb.c,大体测算一下每个页的平均访问时间。程序的输入参数有:页的数目和尝试的次数。

解答

 

gcc tlb.c && ./a.out -l 15 -p 15

第3题

题目要求

用你喜欢的脚本语言(csh、 Python 等写一段脚本来运行这个程序,当访问页面从 1 增长到几千,也许每次迭代都乘 2。在不同的机器上运行这段脚本,同时收集相应数据。需要试多少次才能获得可信的测量结果?

解答

python run.py

第4题

题目要求

接下来,将结果绘图,类似于上图。可以用 ploticus 这样的好工具画图。可视化使数据更容易理解,你认为是什么原因?

解答

bash run.sh

第5题

题目要求

要注意编译器优化带来的影响。编译器做各种聪明的事情,包括优化掉循环,如果循环中增加的变量后续没有使用。如何确保编译器不优化掉你写的 TLB 大小测算程序的主循环?

解答

gcc 选项-O 启用不同级别的优化。使用-O0(默认)禁用它们。-O3 是最高级别的优化。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值