面试复习收录
计算机网络
-
TCP四元组:源IP、目的IP、源端口、目的端口。
-
HTTP请求报文结构:
- 报文首部:请求行、请求首部字段、通用首部字段、实体首部字段、其他
- 空行(CR+LF)
- 报文主体
-
TCP报文段首部:
-
一个确认字节号N的ACK表示所有直到N的字节(不包括N)已经成功被接收了,是期望收到对方下一个报文段的第一个数据字节的序号。
-
数据偏移的单位是4字节,又占4bit,2^4-1=15,所以最大偏移60字节。
-
控制位:
- 紧急URG:当URG=1时,紧急指针字段有效。
- 确认ACK:当ACK=1时,确认号字段有效。
- 推送PSH:不需要缓冲区满,立即发送、接受交付报文。
- 复位RST:释放链接重新建立。
- 同步SYN:SYN置为1就表示这是一个连接请求或连接接收报文。
- 终止FIN:当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
-
窗口:从本报文段首部中的确定号算起,接收方目前允许对方发送的数据量。
-
校验和:校验首部和数据。
-
紧急指针:指出本报文段中的紧急数据的字节数。值得注意的是,即使窗口为零时也可发送紧急数据。
-
UDP报文段首部:
-
UDP报文首部长度8字节。
-
IP首部格式:
-
- 糊涂窗口综合症
- 慢启动:拥塞窗口小于慢启动门限,当发送方每收到一个 ACK,拥塞窗口 cwnd 的大小就会加1。慢启动呈指数增加。
- 拥塞避免算法:每当收到一个 ACK 时,cwnd 增加 1/cwnd。线性增长。
- 拥塞发生:
- 超时重传:慢启动门限减半,拥塞窗口重设为1。
- 快速重传:拥塞窗口减半,慢启动门限和拥塞窗口大小相同。之后进入快速恢复算法。
操作系统
-
进程:资源分配的最小单位。
-
线程:CPU调度的最小单位。
-
TCB:栈信息,保存的寄存器,线程元信息。
-
进程拥有代码段,全局变量,文件描述符,堆。线程有寄存器和栈。
-
进内核的方式:syscall, interrupt, exception, exit
进用户态:exec, rtn, rfi
-
fork:
- 内核空间:复制PCB,修改pid,进程运行时间,添加父进程指针,父进程添加子进程。子进程加入task list。
- 用户空间:复制局域变量,全局变量,代码段,堆栈。
- 返回pid。
-
exec:
- 内核空间:重设pc寄存器值。
- 用户空间:清除局域变量,堆栈。全局变量和代码段被覆盖。
-
exit:
- 内核空间:清理分配的内存,关闭文件。
- 用户空间:清理所有内存。
- 向父进程发送SIGCHLD。
-
僵尸进程:子进程退出,父进程未wait SIGCHLD。
-
孤儿进程:父进程退出,子进程被init收养。
-
进程通信:管道、信号、信号量、共享内存、socket
-
死锁必要条件:互斥,请求与保持,非抢占,循环等待。
-
预防死锁:
- 破坏请求与保持条件。规定一个进程开始前,必须申请所有需要的资源。
- 破坏非剥夺条件。当无法得到需要的资源时,释放自己持有的资源,等需要时再重新申请。
- 破坏循环等待条件。将所有资源按类型线性排队,并赋予不同的编号,所有进程请求资源时,必须按照资源递增顺序,以防出现环路。如果一个进程已经分配到了R资源,那么它再申请时,只能申请排在R后面的资源,而不能申请前面的资源。
- 原文作者:HuaHuaY
- 原文链接:https://www.huahuaorz.com/post/%E9%9D%A2%E8%AF%95%E5%A4%8D%E4%B9%A0%E6%94%B6%E5%BD%95/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。