2021-10-20 知识题记录(二叉树度、微内核操作系统、程序访问的局部性、通讯协议)

二叉树度为2的结点数为9,计算二叉树的叶子结点数

 这题比较简单主要考察就是二叉树的度是啥,二叉树的度即子树的个数,即二叉树中有两个子树的节点的个数为9,先说结论,在任意一棵二叉树中,设叶子结点的个数为n0,度为2的结点数为n2,则n0=n2+1。

以下是证明:最简单的话来说,如果是某一支,子树数量均为1,那么它不会引入叶子节点数量的增加,可以直接减除到最上端的子树为2的节点,即子树为1的节点不会引入叶子节点数量的增加,因此我们可以直接使用一列满子树的二叉树,计算叶子节点进行近似。

数学证明:我们假设一个二叉树有n个结点(n=n0+n1+n2),则该二叉树总共会有n-1条边(单项连接一次),度为2的结点会延伸出两条边,

同理,度为1的结点会延伸出一条边,则可列公式:n-1 = 2*n2 + 1*n1 ,

合并两个式子可得:2*n2 + 1*n1 +1 =n0 + n1 + n2 ,则计算可知 n0=n2+1。

微内核操作系统

 在了解微内核操作系统之前,我们需要了解内核。UNIX 将软件系统划分为内核(kernel)用户态(userland programs)两部分。内核是一组中断处理程序的集合,把硬件的能力封装为操作系统功能调用(system calls),用户态程序通过系统调用使用硬件功能,用户态程序运行于各自的进程中,所有用户态进程都共享同一个内核,每当系统调用或中断发生,内核执行系统调用,与此同时,内核中的分时调度算法将决定把 CPU 交给哪个进程,并管理进程的切换。

但它要求所有对硬件的封装都要在内核态,因此内核中模块的 bug 会让整个系统受到影响。为了解决这类问题,微内核的本质是让操作系统的内核态只保留内存地址管理、线程管理和进程间通讯(IPC)等基本功能,而把如文件系统、设备驱动、网络协议栈、GUI 系统等功能都作为单独的服务。为了实现,用户态和内核的通信,仍然采用C/S的模式。机制与策略的分离,以及面向对象就不再赘述。

程序访问的局部性原理

 程序局部性原理:是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域,具体来说,局部性通常有两种形式:时间局部性和空间局部性。也正是因此,我们可以将部分程序加载到高速缓存中即可实现程序的运行,并根据时间的局部性,更替缓存中的内容。虚拟存储也依赖于此。

TCP、UDP

 tcp和udp属实是老调重重重重重重重重重重重重重重重重弹。

在这里tcp和udp就不展开讲了,只讲讲常见的协议,那些基于udp,哪些是tcp。

注意!!!!!!!腾讯的QQ不是tcp,也不是udp,QQ是一个很复杂的程序,在不同情况下会启动或关闭不同的进程,每个进程对应的通讯协议都不同,英雄联盟也是。在登陆时,主要使用tcp的连接方式,在语音以及视频时,会启动新的进程并进行udp连接(这也符合人类对通讯协议的认知),麻烦的是打字,使用的是udp和QQ协议,自写的。。。。微信貌似又都是tcp。

Telnet协议用来远程登陆控制的,毫无疑问,tcp

FTP是远端下载文件的,讲道理,使用改进的udp也挺好,但我个人觉得有时代因素在内,这里我也没想太明白,理论上使用udp也是可行的?虽然通过TCP的可靠性连接,为数据传输提供可靠保证。值得注意的FTP会开启两个tcp连接,一个用于发送控制指令,一个用于文件传递。感觉负载不小。

SMTP,邮件协议,tcp没问题

累了,错题写的时间比自己看的时间久多了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值