delete some exercise
This commit is contained in:
parent
6a373dcac9
commit
239bc61178
|
@ -84,50 +84,7 @@ lab3中我们引入了任务调度的概念,可以在不同任务之间切换
|
|||
|
||||
问答作业
|
||||
--------------------------------------------
|
||||
|
||||
1. fork + exec 的一个比较大的问题是 fork 之后的内存页/文件等资源完全没有使用就废弃了,针对这一点,有什么改进策略?
|
||||
|
||||
2. [选做,不占分] 其实使用了题(1)的策略之后,fork + exec 所带来的无效资源的问题已经基本被解决了,但是今年来 fork 还是在被不断的批判,那么到底是什么正在"杀死"fork?回答合理即可。可以参考 `fork-hotos19 <https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf>`_ 。
|
||||
|
||||
3. 请阅读代码并分析如下程序的输出,不考虑运行错误,不考虑行缓冲,不考虑中断:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
int main(){
|
||||
int val = 2;
|
||||
|
||||
printf("%d", 0);
|
||||
int pid = fork();
|
||||
if (pid == 0) {
|
||||
val++;
|
||||
printf("%d", val);
|
||||
} else {
|
||||
val--;
|
||||
printf("%d", val);
|
||||
wait(NULL);
|
||||
}
|
||||
val++;
|
||||
printf("%d", val);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
如果 fork() 之后一定主程序先运行结果如何?如果 fork() 之后一定 child 先运行结果如何?
|
||||
|
||||
|
||||
4. 请分析如下程序运行后最终输出 `A` 的数量(已知 ``&&`` 的优先级比 ``||`` 高):
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
int main() {
|
||||
fork() && fork() && fork() || fork() && fork() || fork() && fork();
|
||||
printf("A");
|
||||
return 0;
|
||||
}
|
||||
|
||||
[选做,不占分] 更进一步,如果给出一个 ``&&`` ``||`` 的序列,你如何设计一个程序来得到答案?
|
||||
|
||||
5. stride 算法深入
|
||||
stride 算法深入
|
||||
|
||||
stride 算法原理非常简单,但是有一个比较大的问题。例如两个 pass = 10 的进程,使用 8bit 无符号整形储存 stride, p1.stride = 255, p2.stride = 250,在 p2 执行一个时间片后,理论上下一次应该 p1 执行。
|
||||
|
||||
|
|
Loading…
Reference in New Issue