OS概念第十章习题
10.1:是导致原来的链接使用新创建的文件,可以通过当使用这些链接的时候给出文件不存在或者访问非法错误,维护指向某个文件的所有链接的列表,并在删除文件时删除其中每个链接,保留链接,在尝试访问已删除文件时将其删除,维护文件引用列表(或计数器),仅在删除对该文件的所有链接或引用后才删除该文件 10.2:仅仅一个列表,对于不同进程打开的文件,OS需要维护…
OS概念第九章习题
9.1:a:可能发生,内存中有对应帧 b:TLB没有对应页,内存中也没有,发生缺页,从外存调入页面c:TLB命中说明TLB中有对应帧,没有缺页 d:不可能发生,既然TLB已经命中就不可缺页 9.2:a:运行到阻塞 b:如果再页表中有则继续运行,如果没有则阻塞 c:不改变 9.3:a:最初,由于需要的页面尚未加载到内存中,因此缺页率相当高。b:缺页率…
OS概念第八章习题
8.1:内部碎片:分配给进程的内存没有全部使用而产生的多余内存外部碎片:进程与进程之间存在未被分配的内存 8.2:链接编辑器必须将未解析的符号地址替换为与最终程序二进制文件中的变量关联的实际地址。为了执行此操作,模块应跟踪引用未解析符号的指令。在链接期间,每个模块在整个程序二进制文件中分配一系列地址,并且当执行此操作时,可以在其他模块中补充对该二进…
OS概念第七章习题和实验
7.1:a:1:互斥 2:持有并等待 3:非抢占 4:循环等待b:解决方式:如果交通状况良好,车辆不会立即驶入十字路口,方式发生死锁。 7.2:是的,依旧满足上面的四个条件造成死锁,在多线程之间循环等待 7.3:CPU调度,如果在thread_two之前安排了thread_one,并且thread_one能够在计划thread_two之前获取两个互…
OS概念第六章编程题与项目
6.30:参考3.13,使用了互斥锁的机制来分配pid 6.31:a:竞争条件:available_resources变量 b:对全局变量进行操作的代码部分 c:代码如下 #define MAX_RESOURCES 5 int availbale_resources = MAX_RESOURCES; pthread_mutex_t mutex; i…
c++高精度问题(加减)
由于C++没有大数运算,需要通过字符串来模拟加减乘除,通过string来保存输入大数,然后保存到vector内,最后通过模拟的方法实现每一位运算。代码如下: /*高精度加法*/ #include <iostream> #include <vector> #include <bits/stdc++.h> using namespac…
OS概念第六章习题
6.1:假设账户余额为250.00,丈夫叫 提款(50), 妻子叫 存款(100)。显然,正确的值应该是300.00 由于这两笔交易将被序列化(排序进行),丈夫的本地余额值变为200.00,但在他能够提交交易之前, 存款(100) 操作发生并将余额的共享值更新为300.00然后我们切换回丈夫,共享余额的值设置为200.00 ,显然是不正确的值。 6…
OS概念第五章习题
5.1:对于i/o密集型来说,只需要少量的cpu时间,而对于cpu密集型来说需要大量cpu时间,如果不进行区分会导致i/o密集型一直得不到cpu资源导致饥饿 5.2:a:如果将与上下文切换关联的开销降至最低,则会增加 CPU 使用率。通过不经常执行上下文切换,可以降低上下文切换开销。但是,这可能会导致进程的响应时间增加。b:通过首先执行最短的任务,…
OS概念第四章项目
项目1:数独解决方案验证器由于不能把二维数组的地址传进去,所以建立27个线程,9个线程处理行,9个线程处理列,9个线程处理块。这里有一个问题,由于传的是地址,会改变原二维数组的值需要建立另外两个相等的二维数组来为另外两个传地址。这里有个参数强制转化问题,可以参考如图所示:官方给的源代码是将二维数组作为全局变量,我自己写的是可以输入任意的9*9矩阵来…