【C/C++笔试练习】fork()、文件读写、系统内存、存储保护、进程调度、信号量、互斥信号量、用户级线程、cache缓冲、操作系统功能、反转部分单向链表、猴子分桃

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.防止程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳄鱼麻薯球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值