nber1994



os-常见问题

May 18, 2019

os-常见问题

1.进程和线程的区别

2.线程同步的方式

linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。

互斥锁

条件变量

线程A阻塞并等待某个条件的达成才继续执行,基于共享变量实现的

信号量

互斥锁可以看为特殊情况的信号量

信号阻塞,嵌套

3.进程间通信的方式

1.管道pipe匿名管道

管道的实质:

局限性:

2.有名管道FIFO

3.信号

4.消息队列

5.共享内存

6.信号量

信号量与互斥量的区别

1.信号量用于同步,而互斥量用于互斥

2.互斥量只能为01,信号量可以为非负整数

7.套接字

什么是缓冲区溢出

什么是死锁,产生的条件是什么

进程的状态

分页和分段有什么区别

进程调度算法

多级页表怎么节约内存

https://www.polarxiong.com/archives/%E5%A4%9A%E7%BA%A7%E9%A1%B5%E8%A1%A8%E5%A6%82%E4%BD%95%E8%8A%82%E7%BA%A6%E5%86%85%E5%AD%98.html

互斥和同步

栈帧?? 缓冲区溢出??

五层协议

应用层 实现用于程序的传输协议 传输层 提供可靠地字节流服务 两个节点之间的可靠连接 端口到端口的通信 网络层 ip寻址和路由 链路层 将数据分割为帧,通过mac地址广播 互联设备之间的传播 物理层 01 -》 光电信号的转换

粘包拆包

粘包、拆包发生原因 发生TCP粘包或拆包有很多原因,现列出常见的几点,可能不全面,欢迎补充, 1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。 2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。 3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。 4、接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包