文章目录
C/C++笔试练习
选择部分
(1)fork()
下面的程序执行输出几个hello?
#include<stdio.h>
#include <unistd.h>
int main( )
{
fork( );
fork( );
fork( );
printf(“hello\n”);
return 0;
}
A.3
B. 4
C.6
D.8
答案:D
#include<stdio.h>
#include <unistd.h>
int main()
{
//假设fork创建子进程都会创建成功
//该fork执行之后,会创建出来一个子进程,加上本身的父进程,就会有两个进程
fork();
//进而在产生两个子进程,加上之前的两个,总共4个进程
//上面的两个进程都会执行该fork,
fork();
//上面的4个进程都会执行该fork,进而在产生4个子进程,加上之前的4个,总共8个进程
fork();
//所以,最终有8个进程,会执行下面的语句
printf(“hello\n”);
return 0;
}
(2)文件读写
有一个程序中有A,B,C三个线程同时对一个文件进行读写操作,其中的A,B是写进程只负责往里面写数据,C是读线程,同时把读取的数据从文件中删除,A线程单独写满文件
需要10个小时,B单独写程序需要6小时,C线程需要15小时才能读取完整个文件,不考虑三个线程之间的相互影响的情况下现在__小时才能写满文件
A.5
B. 6
C.5.5
D.4.5
E. 4.8
F. 5.3
答案:A
(1)不考虑三个线程之间的相互影响,突然回到了小学数学题:“两个水龙头注水,一个放水,问何时注满水池”的感觉。这样问题就简单了。
(2)总任务是单位1,A的写工作效率是1/10,B的写工作效率是1/6,C的读工作效率是1/15,那么总工作效率是1/10+1/6-1/15 结果是1/5。
(3)于是,写满的总时间是:用单位1除以总工作效率五分之一,就是5小时。
(3)系统内存
系统中内存不足程序所需大小,程序就无法执行。
A.错
B.对
答案:A
操作系统存在虚拟内存,能够把一部分优先级较低的程序保存到系统硬盘。
(4)存储保护
通常所说的"存储保护"的基本含义是()
A.防止存储器硬件受损
B.防止程序在内存丢失
C.防止程