面试题笔记

来源:互联网 发布:数据分析实验室 编辑:程序博客网 时间:2024/06/14 23:15

假定我们有3个程序,每个程序花费80%的时间进行I/O,20%的时间使用CPU。每个程序启动时间和其需要使用进行计算的分钟数如下,不考虑进程切换时间。
程序编号 启动时间 需要CPU时间(分钟)
1 00:00 3.5
2 00:10 2
3 00:15 1.5
问题:请问在多线程/进程环境下,系统的总响应时间是( )。

此题重点考查cpu利用率计算公式:
多道编程时CPU利用率的求法:
只有一个进程的时候,CPU利用率是20%。
两个进程的时候:CPu利用率是:20% + (1-20%)*20% = 36%
三个进程是:36% + (1-36%)*20% = 48.8%
其它的依次类推。

0-10分钟的时候,只有一个进程1在运行。
单进程CPU占有率是20%,所以这10分钟内,进程1消耗了2分钟的CPU。进程2是0,进程3也是0
然后在10-15分钟内,有两个进程在运行(1和2),双进程的CPU利用率是36%,
所以,这五分钟内,CPU一共利用了1.8分钟,平均分给每个进程,是0.9分钟。
此时,进程1已经占用了CPU 2.9分钟,还需要0.6分钟,这时候有三个进程在运行,所有总的CPU时间需要1.8分钟。
三进程的CPU利用率是48.8%,所以总共需要1.8/0.488=3.69分钟。这时,进程1已经3.5分钟的CPu利用时间利用完了。已经运行时间为18.69.
此时还剩下2和3号进程在运行。
2号进程还需要0.5分钟,所以0.5×2/0.36=2.78,此时2号进程的2分钟CPU时间也利用完了。已经运行时间为21.47.
3号进程还需要0.4分钟的CPU利用时间。0.4/0.2 = 2。已经运行时间为23.47 =23.5.

Belady’s Anomaly 出现在哪里( )?
布雷第异常现象(Belady’s anomaly)需求分页(Demand Paging) dynamic linking 。
页置换算法(内存换页算法 )

路由器工作在网络模型中的哪一层( )?
网络层

什么是内存抖动(Thrashing)()?
非常频繁的换页活动

避免死锁的一个著名的算法是()。
银行家算法

怎么理解分配延迟(dispatch lantency)()?
分配器停止一个进程到开启另一个进程的时间

#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){int i;for(i=0; i<2; i++){fork(); //复制父进程,调用一次,返回两次printf("-"); //缓冲区数据}return 0;

创建了两个子进程。

关键1.fock之后的代码父进程和子进程都会运行;
关键2.printf(“-”);语句有buffer,所以,对于上述程序,printf(“-”);把“-”放到了缓存中,并没有真正的输出,在fork的时候,缓存被复制到了子进程空间,所以, 就多了两个,就成了8个,而不是6个。

用printf()输出时是先输出到缓冲区,然后再从缓冲区送到屏幕
上。输出到屏幕的条件:
1. 使用fflush(stdout)强制刷新。
2. 缓冲区已满。
3. scanf()要在缓冲区里取数据时会先将缓冲区刷新。
4. \n,\r进入缓冲区时。
5. 线程结束的时候,如果该线程里也有printf(….);
6. 程序结束时。

在所有非抢占CPU调度算法中,系统平均响应时间最优的是( )。
时间片轮转算法

0 0
原创粉丝点击