目录
1. 用户态和内核态
1.1 用户态和内核态的概念
内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。
1.2 用户态切换到内核态的三种方式
- 系统调用
- 异常
- 外围设备的中断
2. 为什么不用多线程?
当客户端连接非常多的时候 多线程进行处理的话 需要CPU上下文切换,处理一些操作句柄。代价很高。
3. 如何用单线程的方式来处理客户端的大量连接呢?
3.1. DMA控制器
当线程处理A消息时,B上有消息过来,不会造成丢失。因为有DMA控制器。
DMA(Direct Memory Access,直接存储器访问) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用