系统知识点

一、CPU缓存

CPU缓存是一种高速存储器,通常被集成在CPU内部,用于临时存储经常使用的数据和指令,以提高CPU的访问速度。缓存可以分为三级,一级缓存位于CPU内部,速度最快,但容量较小;二级缓存位于CPU芯片上,速度稍慢,但容量较大;三级缓存则是位于CPU和主内存之间的高速缓存,容量最大,但速度最慢。

CPU缓存的工作原理是将经常访问的数据和指令复制到缓存中,并在需要时直接从缓存中读取,避免了频繁访问主内存的时间延迟,加快了CPU的处理速度。当CPU需要访问数据时,先在一级缓存中查找,如果没有找到,则在二级缓存中查找,最后才会访问主内存。同样的,当CPU需要写入数据时,也会先在缓存中进行修改,最后再将数据写入主内存。

总的来说,CPU缓存是提高计算机性能的关键因素之一,因为它可以减少CPU和内存之间的数据传输次数,从而提高了计算机的处理速度。

二、用户态和内核态,什么情况下从用户态陷入内核态

在计算机中,用户态和内核态是指CPU在执行程序时所处的两种权限级别。在用户态中,程序只能访问自己的内存空间,而在内核态中,程序可以访问任何内存空间并且可以执行特权指令,如I/O操作等。

当用户程序需要进行操作系统提供的服务时,例如读写磁盘、网络通信等,就需要从用户态切换到内核态。这种切换叫做系统调用,由用户程序通过调用系统调用接口触发。当用户程序调用系统调用接口时,CPU会将当前执行的指令的上下文保存在内核栈中,然后将控制权转移到内核态,内核态中的系统调用处理程序会执行用户程序请求的操作,然后将结果返回给用户程序,最后再将CPU的控制权交还给用户程序,同时恢复用户程序的上下文。

因此,从用户态陷入内核态是在用户程序请求操作系统提供服务时发生的,例如系统调用、中断等。

三、用户态向内核态切换时的资源消耗主要是什么资源

用户态向内核态切换时会涉及到以下资源的消耗:

  1. CPU:切换时需要进行上下文切换,将用户态的CPU状态保存起来,切换到内核态的CPU状态。这个过程需要CPU进行大量计算和数据拷贝,消耗CPU资源。
  2. 内存:切换时需要将用户态的堆栈、寄存器等数据保存到内存中,然后加载内核态的堆栈、寄存器等数据。这个过程需要消耗内存资源。
  3. 磁盘IO:如果切换涉及磁盘IO操作,例如读取文件或者网络请求等,那么还需要进行磁盘IO的操作,这个过程需要消耗磁盘IO资源。
  4. 其他资源:例如网络连接、设备访问等资源,如果在切换过程中需要使用这些资源,也会对它们进行消耗。

四、tcp的五层模型

TCP/IP协议是一个分层协议体系,主要分为五层,分别是:

  1. 应用层(Application Layer):提供用户应用程序间的通信服务,如HTTP、FTP、SMTP等。
  2. 传输层(Transport Layer):提供可靠的端到端的数据传输服务,如TCP、UDP等。
  3. 网络层(Network Layer):负责实现数据包在网络中的传输,如IP协议。
  4. 数据链路层(Data Link Layer):负责将数据包封装成帧,并在物理介质上传输,如Ethernet、PPP等。
  5. 物理层(Physical Layer):负责将数据在物理媒介上传输,如网线、光纤等。

总体来说,这五层模型提供了一个标准化的协议体系,使得不同厂商和组织之间的计算机可以相互通信。

五、tcp的三次握手为什么三次

TCP 的三次握手是建立 TCP 连接时必须的过程,它用于确保双方的通信能力和同步状态,从而保证了数据传输的可靠性。三次握手的过程如下:

  1. 客户端发送一个 SYN 报文,向服务器请求建立连接,SYN 报文中会带上客户端的初始化序列号(ISN)。
  2. 服务器收到客户端的请求后,回复一个 SYN+ACK 报文,表示收到了客户端的请求,并同意建立连接。SYN 报文中也会含有服务端的初始化序列号(ISN),ACK 报文中确认号(Acknowledgment Number)设置为客户端的 ISN + 1。
  3. 客户端接收到服务器的确认后,发送一个 ACK 报文,表示已经收到了服务端的确认,并向服务端发送了确认号,确认号(Acknowledgment Number)设置为服务端的 ISN + 1。

这个过程为什么需要三次握手呢?主要原因有以下两点:

  1. 防止已经失效的连接请求报文段发送到服务器,从而导致服务器资源的浪费。如果只有两次握手,那么客户端在发送完 SYN 报文之后,如果长时间没有得到服务器的回应,那么它可能会认为连接请求丢失了,于是再次发送一个新的 SYN 报文,而这个丢失的报文段可能会在网络中滞留,从而引起资源的浪费。

  2. 防止历史连接的建立。在完成了 TCP 连接之后会话终止,但是在网络中存活一段时间,这种连接是可以重用的。如果某个应用程序绑定了一个已经建立过的连接地址,那么如果不进行三次握手就建立连接,就可能会收到之前连接留下的垃圾数据,或者是黑客利用这个漏洞进行攻击。

因此,TCP 三次握手保证了双方正确地交换了初始化序列号和确认号,从而确保了连接的可靠性和执行的正确性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值