正确答案: C D
A、abcd
B、abd
C、abc
D、acd
相当于ab(c?)d
正确答案: A
A、top
B、du
C、df
D、ls
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期
正确答案: C
A、内核线程只运行在内核态,不受用户态上下文的拖累。
B、用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁不需要经过内核态
C、用户线程有利于发挥多处理器的并发优势,但却占用了更多的系统开支。
D、用户线程之间的调度由在用户空间实现的线程库实现。
线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。 用户线程指不需要内核支持 而在用户程序中实现的线程,其不依赖于操作系统核心,应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。这种线程甚至 在象 DOS 这样的操作系统中也可实现,但线程的调度需要用户程序完成,这有些类似 Windows 3.x 的协作式多任务。另外一种则需要内核的参与,由 内核完成线程的调度。其依赖于操作系统核心,由内核的内部需求进行创建和撤销,这两种模型各有其好处和缺点。用户线程不需要额外的内核开支, 并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求,但是当一个线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待 状态敏感词线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优势,但却占用了更多的系统开支。 Windows NT和OS/2 支持内核线程。Linux 支持内核级的多线程
参考答案
(1) 栈区
(2) 堆区
(3) 静态区
(4) 代码区
B类网络,子网掩码为255.255.0.0转化为2进制——1111 1111 1111 1111 0000 0000 0000 0000
要划分32个子网,将其主机号前五位为网络号(用*表示)——1111 1111 1111 1111 **** *000 0000 0000
剩余16-5=11位
每个子网主机数位(2^11)-2=2046
参考答案
(1) 命令模式
(2) 编辑模式
(1) 管道
(2) 消息队列
(3) 共享内存
(4) 信号量
(5) 信号
(6) 套接口
【描述前8条内容即可满分,第0条可不答】 路径需可达 比较权重大小,选择权重值大的路径 比较本地优先级大小,选择本地优先级大的路径 优选从本路由器始发的路由 比较AS Path信息,选择AS Path短的路径 比较路由起源属性,IGP > EGP >incomplete 比较MED属性,选择MED小的路径 比较邻居类型,eBGP优于iBGP 比较前往下一跳IGP cost值,选择cost小的路径 对于eBGP路径,比较路由学习时间,优选最老的路由 对于同一时间学到的路由,优选BGP ID小的路由
共同之处: 均为链路状态协议 均使用最短优先路径算法来计算最佳路径 均采用层级化的路由结构设计 均支持IP前缀的无类路由选择 均使用泛洪机制交换路由选择信息 在广播链路上均使用指定路由器的概念控制泛洪并降低资源需求 主要差别 ISIS属于集成协议,能够支持ISO CLNP和IP数据包的路由选择;OSPF只对IP数据包进行路由选择 ISIS数据包在链路层完成传输;OSPF数据包封装在IP数据包中,在网络层传输 ISIS使用TLV承载信息,易于扩展;OSPF只有LSA是可扩展的 ISIS可以忽略不支持的TLV类型;OSPF路由器必须识别所有的可用扩展或LSA选项以进行适当的操作 ISIS一台路由器只与一个区域相关,区域边界在链路上;一台OSPF路由可以与多个区域相关,区域边界在路由器上 ISIS初始数据库同步发生在邻接关系建立之后;OSPF数据库同步发生在邻接关系建立之前.
POST(加电自检)–>由BIOS决定启动设备次序–>MBR(bootloader)–>解压kernel,加载Kernel到内存–>加载init进程(/etc/inittab)
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接,传输结束后,需要断开连接。 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。 TCP-面向连接,传输可靠(正确送达,顺序送达,保证可达),基于流的传输,拥塞控制,流控,传输开销大,速度稍慢,不同版本改进性能(如TCP Tahoe、TCP reno等) UDP-面向非连接,传输不可靠(不一定送达,乱序送达,尽力而为),基于数据包的传输,无拥塞控制,流控,传输开销小,速度快。 本质的理解: TCP与UDP的区别,关键在于面向连接。 TCP用 序号、ACK(NACK等)、窗口等 来封装优化IP层提供的服务,提供传输层可靠的端到端服务,用流控、拥塞控制等提升性能。 UDP与IP天然匹配,使用基于数据报的,尽力而为的发送策略,在IP层提供的服务上仅增加传输层端到端的服务。
实现同时登陆以下3台机器,获取/home/work目录下有多少目录和文件?
机器1 ip: 192.168.0.1
机器2 ip: 192.168.0.2
机器3 ip: 192.168.0.3
不用考虑用户名密码
from fabric.api import parallel, run, execute
hosts=[
‘192.168.0.1’,
‘192.168.0.2’,
‘192.168.0.3’,]
@parallel
def parallel_ls():
run(“ls /home/work | wc -l”)
if name == ‘main’:
execute(parallel_ls, hosts)
传统使用递归方式,本题有两种方式:
a. 深度遍历:使用栈的方式来实现递归,栈的最大高度即为最大高度;
b. 层次遍历:使用队列,主要标记一层结束(每次插入NULL指针标记,或者使用计数器)和层次的累加;
下面给出层次遍历方式代码
int maxDepthWithLevelTraversal(TreeNode* root)
{
if(root==NULL){
return 0;
}
int height = 0; // 初始化树的高度为0
queueQ; // 初始化一个队列,并将根节点入队
Q.push(root); /* 当队列不为空时 */
while(!Q.empty()){
height++;
int curLevelSize = Q.size(); // 记录当前层元素个数
int cnt = 0; /* 弹出当前层所有元素 */
while(cnt < curLevelSize){
TreeNode* temp = Q.front();
Q.pop();
cnt++; /* 将下一层的元素入队列 */
if(temp->left){
Q.push(temp->left);
}
if(temp->right){
Q.push(temp->right);
}
}
}
return height;
}"